pandas的DataFrame

DataFrame是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型(數值、字元串、布爾值等)。

DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共用同一個索引)。跟他類似的數據結構相比,DataFrame面向行和列的操作基本上是平衡的。

DataFrame中的數據是以一個或多個二維塊存放的(並不像列表、字典或別的一維數據結構)。

構建DataFrame:由一個等長列表或NumPy數組組成的字典構建。比如以廣東、山東、河南三省在2013和2016的常住人口為例:

從結果可以看出,DataFrame會自動加上索引(跟Series一樣),且全部列會被有序排列。

如果指定了列序列,則DataFrame的列會按照指定順序進行排列:

DataFrame跟Series一樣,如果傳入的列在數據中找不到,就會產生NA值:

可以通過類似字典標記的方式或屬性的方式,將DataFrame的列獲取為一個Series:

從上面的例子可以看出,返回的Series擁有原DataFrame相同的索引,且name屬性也被相應地設置好。

除此以外,行也可以通過位置或名稱的方式進行獲取,比如使用索引欄位ix:

從結果上看,.ix已不推薦使用, 建議使用.loc(基於標籤的索引)和.iloc(位置索引):

列可以通過賦值的方法進行修改。例如給空的「growth rate」列附上一個標量或一組值:

將列表或數組賦值給某個列時,其長度必須跟DataFrame的長度相匹配。如果賦值的是一個Series,就會精確匹配DataFrame的索引,所有的空位都將被填上缺失值NaN:

為不存在的列賦值會創建出一個新列。關鍵字del用於刪除列:

注意:Series會直接修改源DataFrame上的數據。

另一種數據形式:嵌套字典(字典的字典)

如果將嵌套字典傳給DataFrame,會把外層字典的鍵作為列,內層鍵作為行索引,還可以對結果進行轉置。

內層字典的鍵會被合併、排序以形成最終的索引。如果顯式指定索引,則按指定的排序:

由Series組成的字典:

下面列出了DataFrame構造函數所能接受的各種數據:

設置DataFrame的index和columns的name屬性:

設置values屬性,以二維ndarray的形式返回DataFrame中的數據:

如果DataFrame各列的數據類型不同,則值數組的數據類型會選用能兼容所有列的數據類型:

索引對象

pandas的索引對象負責管理軸標籤和其他元素數據(比如軸名稱等)。構建Series或DataFrame時,所用到的任何數組或其他序列的標籤都會轉換成一個Index:

Index對象是不可修改:

Index對象是不可修改才能保證Index對象在多個數據結構之間安全共享:

Index的功能類似一個固定大小的集合:

下面列出了Index的方法和屬性:

源碼:


推薦閱讀:

TAG:Python | 数据分析 |