下面繼續講解pandas的第二個工具DataFrame。
二:pandas數據結構介紹
2.DataFarme
DataFarme表示的是矩陣的數據表,包含已排序的列集合,是一個二維數據工具。每一列可以是不同的數據類型值。它既有行索引又有列索引,可以看作是一組共享相同索引的Series對象。DataFarme的數組方法有很多,比如用index.name獲取某列的值,用values獲取行的值。這里先介紹一些常用的知識。
(1)構建DataFrame
有多種方式可以構建DataFrame,其中最常用的方式是利用包含等長度列表或NumPy數組的字典形成DataFrame:
# 下面是采用NumPy的字典的方式來進行構建DataFrame
data = {'a':[1,2,3,4],'b':[1.0,2.0,3.0,4.0],'c':['a','b','c','d']}
frame = pd.DataFarme(data)
結果如下:
產生的DataFrame的行索引會自動分配,列索引為字典的每個鍵。
(2)head
對於大型的矩陣數據,head方法將會只選出頭部的五行:
(3)指定列
如果指定了列,則會按照指定順序排列,用columns屬性,但是在數組字典中一定要存在該列的標簽名,如果沒有則在結果中出現缺失值:
(4)指定行
同樣的,也可以指定行,用index屬性。
(5)獲取屬性
獲取屬性可以用index獲取行,用columns獲取列。
(6)獲取列內容
獲取DataFrame列的值,可以像字典型標記或屬性那樣檢索Series:
frame[column]對於任意列名均有效,而frame.column只在列名是有效的Python變量名時有效。
(6)獲取行內容
獲取DataFrame行的值,可以通過位置或者特殊屬性loc進行選取:
(7)賦值
將列表或者數組賦值給一個列時,值的長度必須和DataFrame的長度相匹配,並按照索引進行排序,在空缺的地方填充缺失值。
如果被賦值的列不存在,會產生新列, 但是要注意的是要用frame['']語法復制,用frame.(列名)的語法無法創建新的列。
(8)刪除列
del方法可以用於移除之前新建的列,這里刪除的是對應數據的視圖,會表現到原數組,如果需要復制,應該顯式地使用copy方法。
(9)嵌套字典
如果嵌套字典被賦值給DataFrame,pandas會將字典的鍵作為列,將內部字典的鍵作為行索引。
(10)轉置
這里可以用T屬性獲取該對象的轉置:
在pandas中,可以用pd.Index()構造索引對象。