pandasからNumPyの関数などを使う方法(pd.np)
pandasをインポートすると同時にNumPyもインポートされ、pd.np
でNumPyモジュールにアクセスできる。pandasをインポートするだけでNumPyを明示的にインポートせずにNumPyの関数などが使用可能。
Jupyter Notebookなどでpandasをインポートして使っているときにNumPyの関数などを使いたくなった場合に NumPyを追加でインポートする必要がないので、書き捨てのコードを書いているときなどは便利。
もちろん、NumPyの関数などを何度も使うのであれば明示的にNumPyをインポートしておいたほうがコードとしては分かりやすい。
ここでは以下の内容について説明する。
pd.np
とnp
は同一オブジェクトpd.np
の使い方
<<注意 - 2020-02-01追記>>
pandas1.0.0
でpd.np
はDeprecated(非推奨)となった。1.0.0
時点では警告(FutureWarning
)のみだが将来的には廃止されるので注意。
- What’s new in 1.0.0 (January 29, 2020) - Deprecations — pandas 1.0.0 documentation
- DEPR: Remove pandas.np · Issue #30296 · pandas-dev/pandas
pd.npとnpは同一オブジェクト
以下の通りpd.np
をprint()
で出力すると、NumPyモジュールであることが分かる。
import pandas as pd
print(pd)
# <module 'pandas' from '/usr/local/lib/python3.7/site-packages/pandas/__init__.py'>
print(pd.np)
# <module 'numpy' from '/usr/local/lib/python3.7/site-packages/numpy/__init__.py'>
source: pandas_pd_np.py
続けてNumPyもインポートして比較すると、pd.np
とnp
は同一オブジェクトであることが確認できる。当然ながらそれに含まれる関数などのオブジェクトも同一。
import numpy as np
print(pd.np is np)
# True
print(pd.np.mean is np.mean)
# True
source: pandas_pd_np.py
pd.npの使い方
NumPyをインポートしてnp
として使うところをpd.np
に置き換えればOK。
a = pd.np.arange(12).reshape(3, 4)
print(a)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
print(type(a))
# <class 'numpy.ndarray'>
source: pandas_pd_np.py
各種関数のほか、円周率pi
やネイピア数(自然対数の底)e
など、NumPyで定義されている値(定数)も使える。
print(pd.np.pi)
# 3.141592653589793
print(pd.np.e)
# 2.718281828459045
source: pandas_pd_np.py