こんにちは。PyQ開発チームのtsutomuです。
2020年の今年、ついにpandas 1.0.0がリリースされました。 pandas.pydata.org
pandasは、現在、広く利用されています。しかし、2009年に0.1がリリースされてから10年以上、メジャーバージョンがずっと0のままでした。
ここでは、1.0.0で追加された機能の中から2つの機能を紹介します。
大きな変更はありませんが、新たに追加された機能もあります。
SeriesやDataFrameからマークダウンへの変換
to_markdown
で、マークダウン変換ができるようになりました。
import pandas as pd sr = pd.Series([1, 2, 3]) print(sr.to_markdown())
| | 0 | |---:|----:| | 0 | 1 | | 1 | 2 | | 2 | 3 |
DataFrameでもできます。1列なので、Seriesと同じ出力になります。
df = pd.DataFrame([[1], [2], [3]]) print(df.to_markdown())
| | 0 | |---:|----:| | 0 | 1 | | 1 | 2 | | 2 | 3 |
ブログに表を挿入するのに役立ちそうです。
pd.NAの追加
pandasでは、これまで欠損値として、NaN、NaT、Noneの3種類がありました。
NaTは日付時刻型における欠損値です。それ以外は基本的にはNaNを用いることが多いでしょう。
しかし、NaNは浮動小数点数型なので、浮動小数点数以外の値と混在させるとobject型になってしまうという問題がありました。
pandas 1.0.0では、整数型、文字列型、ブール型でも欠損値としてpd.NAを扱えるようになりました。
import numpy as np sr1 = pd.Series([pd.NA, 1], dtype='Int64') sr2 = pd.Series([pd.NA, 'abc'], dtype='string') sr3 = pd.Series([pd.NA, True], dtype='boolean') print(sr1.dtype, sr1.dtype.type == np.int64) print(sr2.dtype, sr2.dtype.type == np.str) print(sr3.dtype, sr3.dtype.type == np.bool_)
Int64 True string True boolean True
pandasでは内部的にNumPyの多次元配列を利用しているので、型はNumPyの型になるようです。
PyQへの影響
PyQでは、pandasがインストールされている環境のクエスチョンは、600問以上あります。 1.0.0にバージョンアップしても、すべてのクエスチョンでエラーはでませんでした。
まとめ
pandas 1.0.0の新機能を紹介しました。 バージョン0から1になり、ようやく正式版になった感じがして、ちょっと安心して使える気がします。
なお、PyQでは、3月のリリースで1.0.0の対応予定です。