pandasでDataFrameを作成する方法について解説します。
Contents
DataFrameの作成方法
pandasのDataFrameはインデックスが付与された2次元の配列です。pandasのSeriesと並んでpandasの中心的な型となっています。
DataFrameは、配列を操作するための多くの機能的なツールを提供してくれるため、データ分析のためのデータ加工等で非常に重要な位置づけのものとなっています。
以降では、DataFrameを使用するためのデータ作成方法について説明していきます。
辞書のリストから作成する
pandasのDataFrameは、Python辞書のリストから作成することができます。以下で簡単な例を用いて見てみましょう。
import pandas as pd dics = [{'attr1': 1, 'attr2': 2}, {'attr1': 3, 'attr3': 4}, {'attr2': 5, 'attr3': 6}] print(dics, '\n') # 辞書のリストからDataFrameを作成。欠損値がある場合はNaNが補完される df = pd.DataFrame(dics) print(df)
【実行結果】 [{'attr1': 1, 'attr2': 2}, {'attr1': 3, 'attr3': 4}, {'attr2': 5, 'attr3': 6}] attr1 attr2 attr3 0 1.0 2.0 NaN 1 3.0 NaN 4.0 2 NaN 5.0 6.0
上記のようにDataFrameでは、辞書のキーは列方向の名称として使用されます。行方向は0からのインデックスが付与されます。また、欠損するような値がある場合には、NaNが自動で補完されてDataFrameが作成されます。
Seriesから作成する
pandasのDataFrameは、以下のようにSeriesから作成することができます。
import pandas as pd # Seriesを作成する data = pd.Series([100, 200, 300, 400, 500], index=['A', 'B', 'C', 'D', 'E']) print(data, '\n') # SeriesからDataFrameを作成する df = pd.DataFrame(data, columns=['attr1']) print(df)
【実行結果】 A 100 B 200 C 300 D 400 E 500 dtype: int64 attr1 A 100 B 200 C 300 D 400 E 500
Seriesの辞書から作成する
辞書のリストから作成した時と同様に、SeriesのリストからDataFrameを作成することができます。
import pandas as pd attr1 = pd.Series([10, 20, 30, 40, 50], index=['A', 'B', 'C', 'D', 'E']) attr2 = pd.Series([60, 70, 80, 90, 100], index=['A', 'B', 'C', 'F', 'G']) dics = {'attr1': attr1, 'attr2': attr2} print(dics, '\n') # Seriesの辞書からDataFrameを作成する df = pd.DataFrame(dics) print(df)
【実行結果】 {'attr1': A 10 B 20 C 30 D 40 E 50 dtype: int64, 'attr2': A 60 B 70 C 80 F 90 G 100 dtype: int64} attr1 attr2 A 10.0 60.0 B 20.0 70.0 C 30.0 80.0 D 40.0 NaN E 50.0 NaN F NaN 90.0 G NaN 100.0
辞書のリストから作成する例に似ていますが、Seriesは辞書を一般化をしたような型ともいえるため、文字列インデックス等を持つような場合にも対応することができます。また、欠損するような値がある場合には、NaNが自動で補完されてDataFrameが作成されます。
2次元のNumPy配列(ndarray)から作成する
DataFrameは、以下のように2次元のNumPy配列(ndarray)から作成することができます。
import numpy as np import pandas as pd arr = np.arange(9).reshape((3, 3)) print(arr, '\n') # 2次元のNumPy配列からDataFrameを作成する df = pd.DataFrame(arr, index=['A', 'B', 'C'], columns=['attr1', 'attr2', 'attr3']) print(df)
【実行結果】 [[0 1 2] [3 4 5] [6 7 8]] attr1 attr2 attr3 A 0 1 2 B 3 4 5 C 6 7 8
上記の例で見て分かるように、DataFrameを作成する際には「index=」で行方向のインデックス名を、「columns=」で列方向のインデックス名を指定することで各行・列の名前を付けることができます。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。