この記事では、データフレームとは何か、そしてPandas DataframeをNumpy Arrayに変換する方法、またはその逆を説明します。
では、はじめましょう。
この記事もチェック:Pandasのデータフレームに行を追加する5つの簡単な方法
イントロダクション
Pythonのデータフレームは、データフレームの異なる特徴を定義する行と列からなる2次元の表形式データ構造です。
Pandas ライブラリを用いてデータフレームを作成することもできますし、既に作成されたデータフレーム (.csv ファイル) をインポートして作業を行うこともできます。
Pandasはpipコマンドでインストールすることができます。
pip install pandas |
上記のコードでpandasがインストールされ、Pandasライブラリの様々な機能を使用する準備が整いました。
同じように、numpyライブラリもインストールします。
pip install numpy |
まず、この表形式構造(pandasデータフレーム)をnumpyの配列に変換するところを見てみましょう。
1. Pandas DataframeをNumpy Arrayに変換します。
dataframe.to_numpy()メソッドを使用することで可能です。
これは、与えられたPandas DataframeをNumpy Arrayに変換するメソッドです。
- このチュートリアルで使用する2つのデータフレームを作成します。
#importing pandas import pandas as pd
#creating dataframes student_data = { "Name" : [ 'Alice' , 'Sam' , 'Kevin' , 'Max' , 'Tom' ],
"exam_no" : [ 201 , 202 , 203 , 204 , 205 ],
"Result" : [ 'Pass' , 'Pass' , 'Fail' , 'Pass' , 'Fail' ]}
set_of_numbers = { "Numbers" : [ '134' , '273' , '325' , '69.21' , '965' ]}
print ( "This is our first dataset :" )
student_dataframe = pd.DataFrame(student_data)
print ( " ,student_dataframe)
print ( " )
numbers_dataframe = pd.DataFrame(set_of_numbers)
print ( " ,numbers_dataframe)
|
- student_data と set_of_numbers という2つのデータフレームを作成しました。データフレームは以下のような感じです。
print ( type (student_dataframe))
|
- Pandas DataframeをNumpy Arrayに変換する前に、型を見てみましょう。
print ( type (numbers_dataframe))
|
<class 'pandas.core.frame.DataFrame'> |
上記の両方のステートメントに対する出力は同じです。
student_array = student_dataframe.to_numpy()
print (student_array)
|
- このPandas DataframeをNumpy Arrayに変換するには、以下のコードを実行します。
student_dataをNumpy配列に変換する
[[ 'Alice' 201 'Pass' ]
[ 'Sam' 202 'Pass' ]
[ 'Kevin' 203 'Fail' ]
[ 'Max' 204 'Pass' ]
[ 'Tom' 205 'Fail' ]]
|
結果は以下の通りです。
numbers_array = numbers_dataframe.to_numpy()
print (numbers_array)
|
2番目のデータフレーム (set_of_numbers) の場合
[[ '134' ]
[ '273' ]
[ '325' ]
[ '69.21' ]
[ '965' ]]
|
結果は以下の通りです。
print ( type (student_array))
print ( type (numbers_array))
|
- 両方の配列のデータ型を確認することもできます。
出力: 0
結果は以下の通りです。
< class 'numpy.ndarray' >
< class 'numpy.ndarray' >
|
このように、わずか数ステップでPandas DataframeをNumpy Arrayに変換したことがよくわかります。
これはデータフレームとその変換を処理する最も簡単な方法です。
- さらに、データフレーム内のカラムのデータ型を変更することもできます。2番目のデータフレームがいくつかの整数値といくつかの浮動値で構成されているとすると、それらをすべてfloatに変更してみましょう。
print (numbers_dataframe.to_numpy(dtype = 'float64' ))
|
結果は以下の通りです。
[[ 134. ]
[ 273. ]
[ 325. ]
[ 69.21 ]
[ 965. ]]
|
2. Numpy Array から Pandas Dataframe への変換
Pandas DataframeからNumpy Arrayへの変換は理解できたと思いますので、データをNumpy Arrayに戻す必要があるかもしれません。
その方法について見ていきましょう。
- まず、numpy arrayを定義します。まず、numpyの配列を定義し、pandasライブラリのpandas.DataFrame()関数で変換を行います。
#importing pandas and numpy import pandas as pd
import numpy as np
#defining numpy array arr1 = np.array([[ 1 , 6 , 4 , 5 ], [ 3 , 7 , 2 , 4 ], [ 9 , 5 , 3 , 7 ]])
print ( "Numpy array : " )
print (arr1)
|
というわけで、配列はこんな感じです。
Numpy array : [[ 1 6 4 5 ]
[ 3 7 2 4 ]
[ 9 5 3 7 ]]
|
- これをpandasのdataframeに変換します。
#converting array to dataframe df = pd.DataFrame(arr1)
print ( " )
df |
変換後のデータフレームは:
type (df)
|
- データフレームの種類を確認します。
pandas.core.frame.DataFrame |
出力される。
#converting and providing headers df = pd.DataFrame(arr1, index = ["1","2","3"], columns = ["A","B","C","D" ]) print(" df |
- データフレームの行と列に独自のヘッダを付与することも可能です。行のヘッダはindexキーワードで、列のヘッダはcolumnsキーワードで指定します。
これで、データフレームは次のようになります。
この記事もチェック:Pandasのdataframeでインデックスをカラム(列、行)に変換する方法
まとめ
以上で、本記事を終了します。
この記事であなたは以下を理解しました。
- pandasのデータフレームとnumpyの配列の基本的なこと
- pandasのデータフレームをnumpyの配列に変換する方法
- numpyの配列をpandasのデータフレームに変換する方法
この記事があなたにとって有用であったことを願っています。
ありがとうございました。
参考文献
- https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_numpy.html
- https://stackoverflow.com/questions/13187778/convert-pandas-dataframe-to-numpy-array/