DataFrame基本上可以想像是透過多個Series組成的.並且多出了欄位名稱,就讓我們來學習如何使用DataFrame吧!
以下程式碼皆以引入Pandas模組
import pandas as pd
建立DataFrame需先建立多條Series並用dict裝起來,dict的key將是我們的欄位名稱(columns),如下:
Ser1 = pd.Series(range(0,7))
Ser2 = pd.Series(range(10,17))
d = pd.DataFrame({'第一欄':Ser1, '第二欄':Ser2})
print(d)
#輸出:
第一欄 第二欄
0 0 10
1 1 11
2 2 12
3 3 13
4 4 14
5 5 15
6 6 16
若兩條Series長度不同會以較長Series為主,對齊不到index的會填入NaN,
當然DataFrame除了透過Series建立外也支援其他資料格式建立如dict:
d = pd.DataFrame({ 'column 1' : { 'one': 1, 'two': 2, 'tree': 3} })
print(d)
#輸出:
column 1
one 1
tree 3
two 2
如同Series一樣也能夠自訂索引欄位,使用dict建立索引欄位就是key值,若透過Series建立只要自訂Series的索引,DataFrame就會依照使用,如下:
Ser1 = pd.Series(range(0,7), index = range(100, 107))
Ser2 = pd.Series(range(10,17), index = range(100, 107))
d = pd.DataFrame({'第一欄':Ser1, '第二欄':Ser2})
print(d)
#輸出:
第一欄 第二欄
100 0 10
101 1 11
102 2 12
103 3 13
104 4 14
105 5 15
106 6 16
若在DataFrame設定索引超出Series也是會自動補上NaN,如下:
Ser1 = pd.Series(range(0,7), index = range(100, 107))
Ser2 = pd.Series(range(10,17), index = range(100, 107))
d = pd.DataFrame({'第一欄':Ser1, '第二欄':Ser2}, index = range(102, 109))
print(d)
#輸出:
第一欄 第二欄
102 2.0 12.0
103 3.0 13.0
104 4.0 14.0
105 5.0 15.0
106 6.0 16.0
107 NaN NaN
108 NaN NaN
DataFrame取用方式分為兩種loc
、iloc
與Series的使用方式一樣,因為是多條Series組成所以只取單筆時取出的資料會以欄位當成索引值,如下:
loc
Ser1 = pd.Series(range(0,7))
Ser2 = pd.Series(range(10,17))
d = pd.DataFrame({'第一欄':Ser1, '第二欄':Ser2})
print(d.loc[2])
#輸出:
第一欄 2
第二欄 12
Name: 2, dtype: int64
iloc
dict1 = { 'one': 1, 'two': 2, 'tree': 3}
dict2 = { 'one': 4, 'two': 5, 'tree': 6}
d = pd.DataFrame({ 'column 1' : dict1, 'column 2' : dict2 })
print(d.iloc[2])
#輸出:
column 1 2
column 2 5
Name: two, dtype: int64
資料切片操作方式也差不多,不過多了一個參數可以控制要取出的欄位,使用方式如下:
loc
切片Ser1 = pd.Series(range(0,7))
Ser2 = pd.Series(range(10,17))
d = pd.DataFrame({'第一欄':Ser1, '第二欄':Ser2})
print(d.loc[2:4])
#輸出:
第一欄 第二欄
2 2 12
3 3 13
4 4 14
#指定欄位取出
print(d.loc[2:4, ['第一欄']])
#輸出:
第一欄
2 2
3 3
4 4
iloc
切片dict1 = { 'one': 1, 'two': 2, 'tree': 3}
dict2 = { 'one': 4, 'two': 5, 'tree': 6}
d = pd.DataFrame({ 'column 1' : dict1, 'column 2' : dict2 })
print(d.iloc[2:4, [0]])
#輸出:
column 1
two 2
以上,我們就學會了DataFrame的基本使用了,DataFrame也能像Series一樣套用運算方式,方式都一樣就不再贅述了,可以參考day25的文章.
文章內容如果有錯誤歡迎留言告知,可以幫忙糾正錯誤的觀念,感謝!