Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

pandas最新バージョンの、pandas1.0について紹介します

f:id:kenken0326:20200206111933p:plain

こんにちは。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の対応予定です。

Copyright ©2017- BeProud Inc. All rights reserved.