數據分析(4)--pandas+DataFrame

DataFrame類型

DataFrame是一個多維數據類型。因爲通常使用二維數據,因此,我們可以將DataFrame理解成類似excel的表格型數據,由多列組成,每個列的類型可以不同。
因爲DataFrame是多維數據類型,因此,DataFrame既有行索引,也有列索引。

創建方式

我們可以使用如下的方式創建(初始化)DataFrame類型的對象(常用):

  • 二維數組結構(列表,ndarray數組,DataFrame等)類型。
  • 字典類型,key爲列名,value爲一維數組結構(列表,ndarray數組,Series等)。

說明:

  • 如果沒有顯式指定行與列索引,則會自動生成以0開始的整數值索引。我們可以在創建DataFrame對象時,通過index與columns參數指定。
  • 可以通過head,tail訪問前 / 後N行記錄(數據)。
df = pd.DataFrame({0:[1, 2, 3], 1:5})

相關屬性

  • index
  • columns
  • values
  • shape
  • ndim
  • dtypes

說明:

  • 可以通過index訪問行索引,columns訪問列索引,values訪問數據,其中index與columns也可以進行設置(修改)。
  • 可以爲DataFrame的index與columns屬性指定name屬性值。
  • DataFrame的數據不能超過二維。

DataFrame相關操作

假設df爲DataFrame類型的對象。

列操作

  • 獲取列【哪個更好些?】
    df[列索引]
    df.列索引
  • 增加(修改)列:df[列索引] = 列數據
  • 刪除列
    del df[列索引]
    df.pop(列索引)
    df.drop(列索引或數組)

行操作

  • 獲取行
    df.loc 根據標籤進行索引。
    df.iloc 根據位置進行索引。
    df.ix 混合索引。先根據標籤索引,如果沒有找到,則根據位置進行索引(前提是標籤不是數值類型)。【已不建議使用】
  • 增加行:append【多次使用append增加行會比連接計算量更大,可考慮使用pd.concat來代替。】
  • 刪除行
    df.drop(行索引或數組)

行列混合操作:

  • 先獲取行,再獲取列。
  • 先獲取列,在獲取行。

說明:

  • drop方法既可以刪除行,也可以刪除列,通過axis指定軸方向。【可以原地修改,也可以返回修改之後的結果。】
  • 通過df[索引]訪問是對列進行操作。
  • 通過df[切片]訪問是對行進行操作。【先按標籤,然後按索引訪問。如果標籤是數值類型,則僅會按標籤進行匹配。】
  • 通過布爾索引是對行進行操作。
  • 通過數組索引是對列進行操作。

在對行或列進行操作時,如果針對多行(列)進行操作?如果是不連續的呢?

DataFrame結構

DataFrame的一行或一列,都是Series類型的對象。對於行來說,Series對象的name屬性值就是行索引名稱,其內部元素的值,就是對應的列索引名稱。對於列來說,Series對象的name屬性值就是列索引名稱,其內部元素的值,就是對應的行索引名稱。

DataFrame運算

DataFrame的一行或一列都是Series類型的對象。因此,DataFrame可以近似看做是多行或多列Series構成的,Series對象支持的很多操作,對於DataFrame對象也同樣適用,我們可以參考之前Series對象的操作。

  • 轉置
  • DataFrame進行運算時,會根據行索引與列索引進行對齊。當索引無法匹配時,產生空值(NaN)。如果不想產生空值,可以使用DataFrame提供的運算函數來代替運算符計算,通過fill_value參數來指定填充值。
  • DataFrame與Series混合運算。【默認Series索引匹配DataFrame的列索引,然後進行行廣播。可以通過DataFrame對象的運算方法的axis參數,指定匹配方式(匹配行索引還是列索引)。】

排序

索引排序

Series與DataFrame對象可以使用sort_index方法對索引進行排序。DataFrame對象在排序時,還可以通過axis參數來指定軸(行索引還是列索引)。也可以通過ascending參數指定升序還是降序。

值排序

Series與DataFrame對象可以使用sort_values方法對值進行排序。

索引對象

Series(DataFrame)的index或者DataFrame的columns就是一個索引對象。

  • 索引對象可以向數組那樣進行索引訪問。
  • 索引對象是不可修改的。

統計相關方法

  • mean / sum / count
  • max / min
  • cumsum / cumprod
  • argmax / argmin
  • idxmax / idxmin
  • var / std
  • corr / cov

其他

  • unique
  • value_counts
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章