Python

PandasのDataFrameとNumPyのndarrayを変換する方法

PandasのDataFrameをNumPyに変換するのってどうやるんだっけ

Pythonで配列を扱う際によく使われるライブラリ NumPy

そしてPythonで表形式のデータを扱うのに便利なpandas

共にとく使われるので、ときにはお互いのデータ形式に変換したいこともあるだろう。

そこで今回はPandasのDataFrameとNumPyのndarrayを変換する方法について紹介する。

この記事を書いている人


システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。

記事を読むメリット

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を変換する方法について解説した。

変換方法は以下の通り。

変換方法

  • pandas -> numpy: df.valuesまたはdf.to_numpy()
  • numpy -> pandas: DataFrame(data=nplist)
  • pandasに列追加: df["列名"]=nplist

  • ときどき使うので備忘録的に残しておきたいですね


    役に立ったらシェアしてくれると励みになります。

    にほんブログ村 IT技術ブログへ

    -Python
    -,

    Translate »

    © 2021 ITips