pandas

【pandas】DataFrameの作成方法

【pandas】DataFrameの作成方法

pandasでDataFrameを作成する方法について解説します。

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でのデータ分析の際は必ず使うといってもいい型となっています。ぜひ、作成方法をしっかりと理解して使えるようにしていただければと思います。