pandasでDataFrame
を作成する方法について解説します。
Contents
DataFrameの作成方法
pandasのDataFrame
はインデックスが付与された2次元の配列です。pandasのSeries
と並んでpandasの中心的な型となっています。
DataFrame
は、配列を操作するための多くの機能的なツールを提供してくれるため、データ分析のためのデータ加工等で非常に重要な位置づけのものとなっています。
以降では、DataFrame
を使用するためのデータ作成方法について説明していきます。
辞書のリストから作成する
pandasのDataFrame
は、以下のようにPython辞書のリストから作成することができます。
import pandas as pd dic = [ {"attr1": 1, "attr2": 2}, {"attr1": 3, "attr3": 4}, {"attr2": 5, "attr3": 6}, ] print(dic, "\n") # 辞書のリストからDataFrameを作成。欠損値がある場合はNaNが補完される df = pd.DataFrame(dic) 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"]) dic = {"attr1": attr1, "attr2": attr2} print(dic, "\n") # Seriesの辞書からDataFrameを作成する df = pd.DataFrame(dic) 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=
」で列方向のインデックス名を指定することで各行・列の名前を付けることができます。
まとめ
pandasでDataFrame
を作成する方法について解説しました。
pandasのDataFrame
はインデックスが付与された2次元の配列です。pandasのSeries
と並んでpandasの中心的な型となっています。
DataFrame
は、配列を操作するための多くの機能的なツールを提供しており、pandasでのデータ分析の際は必ず使うといってもいい型となっています。ぜひ、作成方法をしっかりと理解して使えるようにしていただければと思います。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。