博客 / 詳情

返回

Pandas 2.1發佈了

2023年3月1日,Pandas 發佈了2.0版本。6個月後(8月30日),更新了新的2.1版。讓我們看看他有什麼重要的更新。

更好的PyArrow支持

PyArrow是在Panda 2.0中新加入的後端,對於大數據來説提供了優於NumPy的性能。Pandas 2.1增強了對PyArrow的支持。官方在這次更新中使用最大的高亮字體宣佈 PyArrow 將是 Pandas 3.0的基礎依賴,這説明Panda 是認定了PyArrow了。

映射所有數組類型時可以忽略NaN類值

在以前版本,可空類型上調用map會在存在類似nan的值時觸發錯誤。而現在可以設定na_action= " ignore "參數,將忽略所有類型數組中的nan值。

以下是發行説明中的一個例子:

 In [5]: ser = pd.Series(["a", "b", np.nan], dtype="category")
 
 In [6]: ser.map(str.upper, na_action="ignore")
 Out[6]: 
 0      A
 1      B
 2    NaN
 dtype: category
 Categories (2, object): ['A', 'B']
 
 ##no errors !

字符串的默認類型

默認情況下,所有字符串都存儲在具有NumPy對象dtype的列中,如果你安裝了PyArrow,則會將所有字符串推斷為PyArrow支持的字符串,這個選項需要使用這個參數設置:

 pd.options.future.infer_string = True

Copy-On-Write改進

寫時複製在很久以前就出現了。在Pandas中有時你對數據做一些操作,修改的不是數據源的副本,而是數據源本身。例子:

 In [5]: pd.options.mode.copy_on_write = True
 
 In [6]: df = pd.DataFrame({"foo": [1, 2, 3], "bar": [4, 5, 6]})
 
 In [7]: subset = df["foo"]
 
 In [8]: subset.iloc[0] = 100
 
 In [9]: df
 Out[9]: 
    foo  bar
 0    1    4
 1    2    5
 2    3    6

寫時複製是一種防止意外可變性的機制。當從其他數據推斷數據時,可以保證只更改副本。這意味着代碼將更加統一。Pandas將識別何時複製對象,並且只在必要時複製對象。在Pandas 2.1中,花了很多精力使許多地方的Copy-On-Write保持一致。

新的日期方法

在Pandas 2.1中,增加了一組新處理日期的新方法。

以下是一些最值得注意的方法:

  • Series.dt.is_month_start,
  • Series.dt.is_month_end,
  • Series.dt.is_year_start,
  • Series.dt.is_year_end,
  • Series.dt.is_quarter_start,
  • Series.dt.is_quarter_end,
  • Series.dt.days_in_month,
  • Series.dt.unit,
  • Series.dt.normalize,
  • Series.dt.day_name(),
  • Series.dt.month_name(),

這些方法對我們實際應用來説還是很好的

Python 3.9

pandas 2.1.0支持的最低版本是Python 3.9,也就是説我們如果有低版本的Python項目,要儘快升級了,或者説新項目的話最低也要3.9了

總結

在這次更新中提到了Pandas3.0,説明官方已經開始對它進行設計了,而且也強調了PyArrow的重要性,所以要用好Pandas,PyArrow的基礎是需要掌握的。官網的地址:

https://avoid.overfit.cn/post/2604f28a0aef4ae99cf4df15b977210c

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.