Pythonで配列を扱う際によく使われるライブラリ NumPy 。
そしてPythonで表形式のデータを扱うのに便利なpandas。
共によく使われるので、ときにはお互いのデータ形式に変換したいこともあるだろう。
そこで今回はPandasのDataFrameとNumPyのndarrayを変換する方法について紹介する。
この記事を書いている人
記事を読むメリット
PandasのDataFrameとNumPyのndarrayを変換する方法がわかる
PandasのDataFrameからNumPyのndarrayに変換する方法
PandasのDataFrameからNumPyのndarrayに変換する方法。
やり方のひとつとしては values
を使う方法がある。
pandasのDataFrameに対して df.values
のような形でアクセスすると、ndarray形式のデータを取得することができる。
import numpy as np import pandas as pd # dataframe to numpy ndarray data_list1 = [ [1,2,3], [2,3,4], [3,4,5], [4,5,6] ] col_list1 = ["c1","c2","c3"] df1 = pd.DataFrame(data=data_list1, columns=col_list1) print(df1) print(type(df1)) # c1 c2 c3 # 0 1 2 3 # 1 2 3 4 # 2 3 4 5 # 3 4 5 6 # <class 'pandas.core.frame.DataFrame'> np_list = df1.values print(np_list) print(type(np_list)) # [[1 2 3] # [2 3 4] # [3 4 5] # [4 5 6]] # <class 'numpy.ndarray'>
ただpandasのドキュメントによると values
を使うのはもう非推奨となっているようで、後から追加された to_numpy()
でもDataFrameからndarray形式に変換する方を推奨している模様。
np_list = df1.to_numpy() print(np_list) print(type(np_list)) # [[1 2 3] # [2 3 4] # [3 4 5] # [4 5 6]] # <class 'numpy.ndarray'>
NumPyのndarrayからPandasのDataFrameに変換する方法
では逆にNumPyのndarrayからPandasのDataFrameに変換するにはどうしたらよいのか。
ndarrayをDataFrameにするには、DataFrameを定義する際にデータとして指定する。
# numpy ndarray to dataframe np_list = np.array(data_list1) print(np_list) print(type(np_list)) # [[1 2 3] # [2 3 4] # [3 4 5] # [4 5 6]] # <class 'numpy.ndarray'> col_list2 = ["c11","c22","c33"] df2 = pd.DataFrame(data=np_list, columns=col_list2) print(df2) print(type(df2)) # c11 c22 c33 # 0 1 2 3 # 1 2 3 4 # 2 3 4 5 # 3 4 5 6 # <class 'pandas.core.frame.DataFrame'>
取り込み方としてはlist型のデータをDataFrameに取り込むのと同じである。
またnumpyのndarrayを新しいカラムとして追加するには、 df["カラム名"]
でアクセスして書き込めば良い。
np_list2 = np.array([4,4,4,4]) df2["c44"] = np_list2 print(df2) print(type(df2)) # c11 c22 c33 c44 # 0 1 2 3 4 # 1 2 3 4 4 # 2 3 4 5 4 # 3 4 5 6 4 # <class 'pandas.core.frame.DataFrame'>
まとめ
今回はPandasのDataFrameとNumPyのndarrayを変換する方法について解説した。
変換方法は以下の通り。
変換方法
df.values
またはdf.to_numpy()
DataFrame(data=nplist)