数据框的构造
Pandas中另一個重要的數據對象為數據框(DataFram),由多個序列按照相同的index組織在一起形成一個二維表。事實上,數據框的每一列為序列。數據框的屬性包括index、列名和值。由于數據框是更為廣泛的一種數據組織形式,許多外部數據文件讀取到Python中大部分會采用數據框的形式進行存取,比如數據庫、excel和TXT文本。同時數據框也提供了極為豐富的方法用于處理數據及完成計算任務。數據框是Python完成數據處理及分析的最重要數據結構之一,因此學會靈活運用數據框是利用Python進行數據處理及挖掘的關鍵環節。
基于字典,利用Pandas庫中的DataFrame函數,可以創建數據框。其中字典的鍵轉化為列名,字典的值轉化為列支,而索引為默認值,即從0開始從小到大排列。
import pandas as pd
import numpy as np
data={'a':[2,2,np.nan,5,6],'b':[‘kl’,’kl’,’kl’,np.nan,’kl’],’c’:[4,6,5,np.nan,6],’d’:[7,9,np.nan,9,8]} df=pd.DataFrame(data) 如下圖
?數據框對象具有三個屬性,分別為列名、索引和值。比如以上3.3.1定義的數據框df,可以通過以下示例程序獲取并打印其屬性結果。
數據框(DataFrame)作為數據處理及挖掘分析的重要基礎數據結構,提供了非常豐富的方法用于數據處理及計算。下面介紹其常用的方法,包括去掉空值(nan值)、對空值(nan值)進行填充、基于字段列值進行排序、基于index進行排序、取前N行數據、刪除列、數據框之間的連接、數據框轉化為Numpy數組、數據導出到Excel、相關統計分析等。下面分別給出其詳細的介紹。
1.dorpna()
通過dorpna()方法,可以去掉數據集中的空值(nan值),需要注意的是原來數據集不發生改變,新數據集需要重新定義。以3.3.1定義的數據框df為例,示例代碼如下: df1=df.dropna()
2.fillna()
通過fillna()方法,可以對數據框中的空值(nan值)進行填充。默認情況下所有空值填充同一個元素值(數值或者字符串),也可以指定不同的列填充不同的值。以3.3.1定義的數據框df為例,示例代碼如下:df2=df.fillna(0) ? ? ? #所有空值元素填充0 df3=df.fillna('Kl') ? ? ?#所有空值元素填充kl df4=df.fillna({'a':0,'b':'kl','c':0,'d':0}) ?#全部列填充 df5=df.fillna({'a':0,'b':'kl'}) #部分列填充 執行結果如圖3-9所示。
3.sor_values()
可以利用sort_values()方法,指定列按值進行排序,示例代碼如下:?
import pandas as pd data={'a':[5,3,4,1,6],'b':['d','c','a','e','q'],'c':[4,6,5,5,6]} Df=pd.DataFrame(data) Df1=Df.sort_values('a',ascending=False) ?#默認按升序,這里設置為降序 執行結果如圖3-10所示。
4.sort_index()
有時候需要對索引進行排序,這時候可以使用sort_index()方法,以前面定義的Df1為例,示例代碼如下:?Df2=Df1.sort_index(ascending=False) ?#默認按升序,這里設置為降序 執行結果如圖3-11所示。
5.head(N)
通過head(N)方法,可以取數據集中的前N行,比如取前面定義的數據框Df2中的前4行,示例代碼如下: H4=Df2.head(4); 執行結果如圖3-12所示。?
?6.dorp()
利用dorp()方法,可以刪掉數據集中的指定列。比如刪除前面定義的H4中的b列,示例代碼如下: H41=H4.drop('b',axis=1) #需指定軸為1 執行結果如圖3-13所示。
7.
利用join()方法,可以實現兩個數據框之間的水平連接,示例代碼如下: Df3=pd.DataFrame({'d':[1,2,3,4,5]}) Df4=Df.join(Df3) 執行結果如圖3-14所示。?
8.as_matrix()
可以利用as_matrix()方法,將數據框轉換為Numpy數組的形式,方便程序使用,特別是數據框中的數據全為數值數據的時候更為有效。示例代碼如下: import pandas as pd list1=['a','b','c','d','e','f'] list2=[1,2,3,4,5,6] list3=[1.4,3.5,2,6,7,8] list4=[4,5,6,7,8,9] list5=['t',5,6,7,'k',9.6] D={'M1':list1,'M2':list2,'M3':list3,'M4':list4,'M5':list5} ?#定義字典D,值為字符、數值混合數據 G={'M1':list2,'M2':list3,'M3':list4} ? ? ? ? ? ? ? ? ?#定義字典G,值為純數值數據 D=pd.DataFrame(D) ? ? ? ? ? ? ? ? ? ? ? ? ? ? #將字典D轉化為數據框 D1=D.as_matrix() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #將數據框D轉化為Numpy數組D1 G=pd.DataFrame(G) ? ? ? ? ? ? ? ? ? ? ? ? ? ? #將字典G轉化為數據框 G1=G.as_matrix() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #將數據框G轉化為Numpy數組G1 執行結果如圖3-15所示。
?
而D不是純的數值數據,轉換后的Numpy數組在Spyder變量資源管理器中無法查看,但可以打印出來在控制臺窗口中查看,通過print(D1)打印得到如下結果: [['a' 1 1.4 4 't'] ?['b' 2 3.5 5 5] ?['c' 3 2.0 6 6] ?['d' 4 6.0 7 7] ?['e' 5 7.0 8 'k'] ?['f' 6 8.0 9 9.6]] 因此,如果數據框中的數據為純數值的時候,通過轉換為Numpy數值數組,使用起來顯得更加方便。?
9.to_excel()方法
Excel作為常用的數據處理軟件,在日常工作中經常用到,通過to_excel()方法,可以將數據框導出到Excel文件中,比如將前面定義的D和G兩個數據框導出到Excel文件中。示例代碼如下: D.to_excel('D.xlsx') G.to_excel('G.xlsx') 執行結果如圖3-16所示:
?
總結
- 上一篇: 201771010112罗松《面向对象程
- 下一篇: 在电脑上,日语输入法怎么玩?