Pandas Dataframe を NumPy 配列に変換する方法
Asad Riaz
2023年1月30日
to_numpy()
メソッドを学習し、pandas.Dataframe
を NumPy
配列に変換します。これは、古い .values
メソッドを置き換える pandas v0.24.0 から導入されました。to_numpy
は Index
、Series
、DataFrame
オブジェクトで定義できます。
古い DataFrame.values
には一貫性のない動作があり、pandas API ドキュメントによると使用は推奨されません。ただし、古いバージョンを使用している場合に備えて、このメソッドの例を検討します。
別の古いメソッド DataFrame.as_matrix()
は非推奨になりました。使用しないでください!
また、DataFrame.to_records()
メソッドを使用して、特定の DataFrame
を NumPy
レコード配列に変換する別のアプローチを紹介します。
to_numpy
メソッドで DataFrame
を NumPy
配列に変換する
pandas.Dataframe
は、行と列を持つ 2D 表形式のデータ構造です。このデータ構造は、to_numpy
メソッドを使用して NumPy
配列に変換できます:
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.to_numpy()
print(nmp)
print(type(nmp))
出力:
[[5 5 1 3]
[1 6 6 0]
[9 1 2 0]
[9 3 5 3]
[7 9 4 9]
[8 1 8 9]]
<class 'numpy.ndarray'>
次のように Dataframe.values
メソッドを使用して同じことを行うことができます:
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.values
print(nmp)
print(type(nmp))
出力:
[[8 8 5 0]
[1 7 7 5]
[0 2 4 2]
[6 8 0 7]
[6 4 5 1]
[1 8 4 7]]
<class 'numpy.ndarray'>
NumPy
配列に indexes
を含めたい場合は、reset_index()
に dataframe.values
を適用する必要があります:
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.reset_index().values
print(nmp)
print(type(nmp))
出力:
[[0 1 0 3 7]
[1 8 2 5 1]
[2 2 2 7 3]
[3 3 4 3 7]
[4 5 4 4 3]
[5 2 9 7 6]]
<class 'numpy.ndarray'>
to_records()
メソッドで DataFrame
を NumPy
レコード配列に変換
dtypes
が必要な場合は、to_records()
が最適なオプションです。to_numpy()
と to_records()
の両方のパフォーマンスはほぼ同じです。
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.to_records()
print(nmp)
print(type(nmp))
出力:
[(0, 0, 4, 6, 1)
(1, 3, 1, 7, 1)
(2, 9, 1, 6, 4)
(3, 1, 4, 6, 9)
(4, 9, 1, 3, 9)
(5, 2, 5, 7, 9)]
<class 'numpy.recarray'>