Pandas之三選擇資料
前文介紹瞭如何檢視dataframe資料,現在再來看看怎麼樣定位和修改pandas的具體資料。
官方推薦選擇資料的方法為.at, .iat, .loc, .iloc
,這些方法可以指定行列的資訊進行資料篩選。具體功能說明如下:
- at:根據標籤(label)定位具體元素
- iat:根據位置定位具體元素
- loc:根據標籤擷取Series、dataframe或具體元素
- iloc:根據位置擷取Series、dataframe或具體元素
配合起來可以在dataframe裡面使用多種方式選擇資料:
- 按資料列選擇資料
- 使用列表
[]
方式選擇資料 - 按標籤選擇資料
- 按位置選擇資料
- 按條件篩選資料
- 以新值更新選擇的資料
下面我們依然使用前文生成的df物件來演示各種方法
df = pd.DataFrame(np.random.randn(6, 4),
index=dates,
columns=list("ABCD"))
按列選擇資料
可以使用df.A
方式選擇A列資料,該方式等同於df["A"]
也可以通過df[["A","B"]]
方式選擇多個列
列表[]
方式選擇資料
該方法是擷取dataframe中的某些行
-
選擇所有資料
-
通過索引位置選擇某幾行,該方法按照左閉右開方式擷取資料
-
選擇某範圍內的幾行資料,該方法按照左閉右閉方式擷取資料,類似於SQL語法中的
between .. and ..
注:官方並不推薦使用以上這種方式做資料選擇,推薦選擇資料的方法為.at, .iat, .loc, .iloc
按標籤選擇資料
-
可以根據index值選擇某行資料
-
可以根據用index的範圍選擇多行資料
-
在選擇資料時,可以配合列名進一步選擇資料
-
通過index和列名定位到某個cell具體的值(前文的方式獲取到依然dataframe,而此處獲取到的是標量資料),同時支援
.loc
和.at
方式。要注意的是:-
.at
不支援型別隱式轉換,而.loc
是支援的 -
.at
的速度比.loc
要快
-
按位置選擇資料
通過位置選擇資料的時候,既可以選擇一行一列、一行多列、多行一列、多行多列也可以選擇具體元素,在label不明確的時候,可以通過位置進行選擇。最典型的場景就是選擇首行、尾行等。
-
選擇第n行資料,只輸入一個引數時,預設為行。
-
選擇第n行,某幾列資料,同時輸入行列資料時,使用逗號
,
間隔。在範圍選擇時,其按照左閉右開方式擷取資料。
-
選擇某幾行,某列資料
-
選擇某幾行,某幾列資料
-
選擇所有行,某些列資料
-
選擇具體元素
按條件選擇資料
在pandas中也可以使用條件進行資料過濾,就像使用where條件一樣。
-
根據某列值進行篩選,如圖選擇B>1的資料
-
對整個dataframe進行篩選,選擇值>0的資料
-
使用isin()做資料篩選,類似sql中的in
更新資料
選擇完資料之後,可以使用長度相同的資料的進行更新
-
將2021-09-01的A列資料更新為0
-
將D列使用numpy.array替代,此列是以
len(df)
個[7]
來替代
歡迎關注微信公眾號:資料研發技術,會分享各類資料研發相關的技術