python數據處理工具 -- pandas(序列與數據框的構造)


   Pandas模塊的核心操作對象就是對序列(Series)和數據框(Dataframe)。序列可以理解為數據集中的一個字段,數據框是值包含至少兩個字段(或序列)

的數據集。

 

構造序列

1.通過同質的列表或元組構建

2.通過字典構建

3.通過numpy中的一維數組構建

4.通過數據框Dataframe中的某一列構建

例如:

import pandas as pd
import numpy as np
gdp1 = pd.Series([2.8,3.01,8.99,8.59,5.18])
gdp2 = pd.Series({'北京':2.8,'上海':3.01,'廣東':8.99,'江蘇':8.59,'浙江':5.18})
gdp3 = pd.Series(np.array((2.8,3.01,8.99,8.59,5.18)))
print(gdp1)
print(gdp2)
print(gdp3)

out:

0    2.80
1    3.01
2    8.99
3    8.59
4    5.18
dtype: float64
北京    2.80
上海    3.01
廣東    8.99
江蘇    8.59
浙江    5.18
dtype: float64
0    2.80
1    3.01
2    8.99
3    8.59
4    5.18
dtype: float64

如上所示:不管是列表,元組,還是一維數組,構造的序列結果樣式會產生兩列,第一列屬於序列的索引列(也可以理解為行號)

,自動從0開始,第二列才是序列的實際值。通過字典構造的序列就是第二個打印樣式,仍然包含兩列,所不同的是第一列不再是行號,而是具體的行名稱(label),對應到字典中的鍵,第二列是序列的實際值,對應到字典的值;

 

序列與一維數組有極高的相似性,獲取一維數組元素的所有索引方法都可以用到序列上,而且數組的數學和統計函數也同樣可以用到序列上。另外序列會有更多的其他處理方法,如下:

import pandas as pd
import numpy as np
gdp1 = pd.Series([2.8,3.01,8.99,8.59,5.18])
gdp2 = pd.Series({'北京':2.8,'上海':3.01,'廣東':8.99,'江蘇':8.59,'浙江':5.18})
gdp3 = pd.Series(np.array((2.8,3.01,8.99,8.59,5.18)))
# print(gdp1)
# print(gdp2)
# print(gdp3)
print('行號風格的序列: \n ',gdp1[[0,3,4]]) #取出gdp1中的第1 4 5個元素
print('行名稱風格的序列: \n',gdp2[[0,3,4]]) #取出gdp2中第 1 4 5個元素   取出的是字典的鍵值對
print('行名稱風格的序列:\n',gdp2[['上海','江蘇','浙江']])     # 取出的是鍵值對
print('通過numpy函數:\n',np.log(gdp1))     #可以用函數的方式直接取出相應對應的結果的值,通過numpy的方式需要通過其索引
print('通過numpy函數:\n',np.mean(gdp1))     
print('通過序列的方法:\n',gdp1.mean())     #可以看出序列也是支持方法的使用的

out:

行號風格的序列: 
  0    2.80
3    8.59
4    5.18
dtype: float64
行名稱風格的序列: 
 北京    2.80
江蘇    8.59
浙江    5.18
dtype: float64
行名稱風格的序列:
 上海    3.01
江蘇    8.59
浙江    5.18
dtype: float64
通過numpy函數:
 0    1.029619
1    1.101940
2    2.196113
3    2.150599
4    1.644805
dtype: float64
通過numpy函數:
 5.714
通過序列的方法:
 5.714

針對上面的代碼需要說明幾點,如果序列是行名稱風格,既可以使用位置(行號)索引,又可以使用標簽(行名稱)索引;如果需要對序列進行數序函數的運算,一般首選numpy模塊,因為pandas模塊在這方面比較缺乏;如果是對序列做統計運算,既可以使numpy模塊中的函數,也可以使用序列中的方法。一般首選

序列方法,因為序列方法更加豐富一些,如計算序列的偏度,峰度,而Numpy是沒有這樣的函數的。

 

構造數據框

   數據實質上就是一個數據集,數據集的行代表每一條觀測,數據集的列則代表各個變量。在一個數據框中可以存放不同數據類型的序列,如整數型,浮點型,字符型和日期時間型,而數組和序列則沒有這樣的優勢,因為他們只能存放同質數據。構造一個數據庫可以應用如下方式:

1.通過嵌套的列表或元組構造

2.通過字典構造

3.通過二維數組構造

4.通過外部數據的讀取構造。

示例:

 

import pandas as pd
import numpy as np
df1 = pd.DataFrame([['張三',23,'男'],['李四',27,'女'],['王五',26,'女']])
df2 = pd.DataFrame({'姓名':['張三','李四','王五'],'年齡':[23,27,26],'性別':['男','女','女']})
df3 = pd.DataFrame(np.array([['張三',23,'男'],['李四','27','女'],['王五',26,'女']]))
print('嵌套列表構造數據框:\n',df1)
print('字典構造數據框:\n',df2)
print('二維數組構造數據框:\n',df3)

out:

嵌套列表構造數據框:
     0   1  2
0  張三  23  男
1  李四  27  女
2  王五  26  女
字典構造數據框:
    姓名  年齡 性別
0  張三  23  男
1  李四  27  女
2  王五  26  女
二維數組構造數據框:
     0   1  2
0  張三  23  男
1  李四  27  女
2  王五  26  女

構造數據框需要使用到Pandas模塊中的DataFrame函數,如果通過嵌套列表或元組構造數據框,則需要將數據框的每一行觀測座位嵌套列表或元組的元素;如果通過二維數組構造數據框,則需要將數據框的每一行寫入到數組的行中;如果通過字典構造數據框,則字典的鍵構成數據框的變量名,對應的值構成數據的觀測。盡管上面的代碼都可以構造數據框,但是講嵌套列表,元組或二維數組轉換為數據框時,數據框是沒有具體的變量名的,只有從0到N的列號。所以,如果需要手工構造數據框的話,一般首選字典方法。

 

外部數據的讀取

外部數據的讀取來構造數據框的內容會比較多,下一篇再來記錄...

 

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM