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