Pandas Dataframe を Numpy 配列に変換する方法

  1. to_numpy メソッドで dataframenumpy 配列に変換する
  2. to_records() メソッドで dataframenumpy レコード配列に変換

to_numpy() メソッドを学習し、pandas.Dataframenumpy 配列に変換します。これは、古い .values メソッドを置き換える pandas v0.24.0 から導入されました。to_numpyIndexSeriesDataFrame オブジェクトで定義できます。

古い DataFrame.values には一貫性のない動作があり、pandas API ドキュメントによると使用は推奨されません。ただし、古いバージョンを使用している場合に備えて、このメソッドの例を検討します。

別の古いメソッド DataFrame.as_matrix() は非推奨になりました。使用しないでください!

また、DataFrame.to_records() メソッドを使用して、特定の dataframenumpy レコード配列に変換する別のアプローチを紹介します。

to_numpy メソッドで dataframenumpy 配列に変換する

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() メソッドで dataframenumpy レコード配列に変換

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'>

関連記事 - Pandas DataFrame

  • Pandas のデータフレームの行を反復する方法
  • Pandas で DataFrame 列を日時に変換する方法
  • comments powered by Disqus