天天看點

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"))           
Pandas之三選擇資料

按列選擇資料

可以使用

df.A

方式選擇A列資料,該方式等同于

df["A"]

Pandas之三選擇資料

也可以通過

df[["A","B"]]

方式選擇多個列

Pandas之三選擇資料

清單

[]

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

  1. 選擇所有資料
Pandas之三選擇資料
  1. 通過索引位置選擇某幾行,該方法按照左閉右開方式截取資料
    Pandas之三選擇資料
  2. 選擇某範圍内的幾行資料,該方法按照左閉右閉方式截取資料,類似于SQL文法中的

    between .. and ..

Pandas之三選擇資料

注:官方并不推薦使用以上這種方式做資料選擇,推薦選擇資料的方法為

.at, .iat, .loc, .iloc

  1. 可以根據index值選擇某行資料
Pandas之三選擇資料
  1. 可以根據用index的範圍選擇多行資料
Pandas之三選擇資料
  1. 在選擇資料時,可以配合列名進一步選擇資料
Pandas之三選擇資料
  1. 通過index和列名定位到某個cell具體的值(前文的方式擷取到依然dataframe,而此處擷取到的是标量資料),同時支援

    .loc

    .at

    方式。要注意的是:
    • .at

      不支援類型隐式轉換,而

      .loc

      是支援的
    • .at

      的速度比

      .loc

      要快
Pandas之三選擇資料

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

  1. 選擇第n行資料,隻輸入一個參數時,預設為行。
Pandas之三選擇資料
  1. 選擇第n行,某幾列資料,同時輸入行列資料時,使用逗号

    ,

    間隔。在範圍選擇時,其按照左閉右開方式截取資料。
Pandas之三選擇資料
  1. 選擇某幾行,某列資料
Pandas之三選擇資料
  1. 選擇某幾行,某幾列資料
Pandas之三選擇資料
  1. 選擇所有行,某些列資料
Pandas之三選擇資料
  1. 選擇具體元素
Pandas之三選擇資料

按條件選擇資料

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

  1. 根據某列值進行篩選,如圖選擇B>1的資料
Pandas之三選擇資料
  1. 對整個dataframe進行篩選,選擇值>0的資料
Pandas之三選擇資料
  1. 使用isin()做資料篩選,類似sql中的in
Pandas之三選擇資料

更新資料

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

  1. 将2021-09-01的A列資料更新為0
Pandas之三選擇資料
  1. 将D列使用numpy.array替代,此列是以

    len(df)

    [7]

    來替代
Pandas之三選擇資料

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