1. 程式人生 > 其它 >Pandas之三選擇資料

Pandas之三選擇資料

前文介紹瞭如何檢視dataframe資料,現在再來看看怎麼樣定位和修改pandas的具體資料。

官方推薦選擇資料的方法為.at, .iat, .loc, .iloc,這些方法可以指定行列的資訊進行資料篩選。具體功能說明如下:

  • at:根據標籤(label)定位具體元素
  • iat:根據位置定位具體元素
  • loc:根據標籤擷取Series、dataframe或具體元素
  • iloc:根據位置擷取Series、dataframe或具體元素

配合起來可以在dataframe裡面使用多種方式選擇資料:

  1. 按資料列選擇資料
  2. 使用列表[]方式選擇資料
  3. 按標籤選擇資料
  4. 按位置選擇資料
  5. 按條件篩選資料
  6. 以新值更新選擇的資料

下面我們依然使用前文生成的df物件來演示各種方法

df = pd.DataFrame(np.random.randn(6, 4), 
                  index=dates, 
                  columns=list("ABCD"))

按列選擇資料

可以使用df.A方式選擇A列資料,該方式等同於df["A"]

也可以通過df[["A","B"]]方式選擇多個列

列表[]方式選擇資料

該方法是擷取dataframe中的某些行

  1. 選擇所有資料

  2. 通過索引位置選擇某幾行,該方法按照左閉右開方式擷取資料

  3. 選擇某範圍內的幾行資料,該方法按照左閉右閉方式擷取資料,類似於SQL語法中的between .. and ..


注:官方並不推薦使用以上這種方式做資料選擇,推薦選擇資料的方法為.at, .iat, .loc, .iloc

按標籤選擇資料

  1. 可以根據index值選擇某行資料

  2. 可以根據用index的範圍選擇多行資料

  3. 在選擇資料時,可以配合列名進一步選擇資料

  4. 通過index和列名定位到某個cell具體的值(前文的方式獲取到依然dataframe,而此處獲取到的是標量資料),同時支援.loc.at方式。要注意的是:

    • .at不支援型別隱式轉換,而.loc是支援的

    • .at的速度比.loc要快

按位置選擇資料

通過位置選擇資料的時候,既可以選擇一行一列、一行多列、多行一列、多行多列也可以選擇具體元素,在label不明確的時候,可以通過位置進行選擇。最典型的場景就是選擇首行、尾行等。

  1. 選擇第n行資料,只輸入一個引數時,預設為行。

  2. 選擇第n行,某幾列資料,同時輸入行列資料時,使用逗號,間隔。在範圍選擇時,其按照左閉右開方式擷取資料。

  3. 選擇某幾行,某列資料

  4. 選擇某幾行,某幾列資料

  5. 選擇所有行,某些列資料

  6. 選擇具體元素

按條件選擇資料

在pandas中也可以使用條件進行資料過濾,就像使用where條件一樣。

  1. 根據某列值進行篩選,如圖選擇B>1的資料

  2. 對整個dataframe進行篩選,選擇值>0的資料

  3. 使用isin()做資料篩選,類似sql中的in

更新資料

選擇完資料之後,可以使用長度相同的資料的進行更新

  1. 將2021-09-01的A列資料更新為0

  2. 將D列使用numpy.array替代,此列是以len(df)[7]來替代


歡迎關注微信公眾號:資料研發技術,會分享各類資料研發相關的技術