pandas.DataFrame はラベル付き 2 次元配列
Python の Pandas ライブラリが提供する pandas.DataFrame
型は、テーブル形状のデータを表す 2 次元データ型で、Pandas によるデータ解析の要となるデータ形式です。
内部では NumPy ライブラリの ndarray
が利用されていますが、pandas.DataFrame
を使うと、X 軸(列)、Y 軸(行)の各インデックスに任意のラベルを付けることができます (1 次元データを表現する pandas.Series 型も用意されています)。
NumPy の ndarray
は同じデータタイプの値しか持てませんが、pandas.DataFrame
であれば、列ごとに異なるデータタイプの値を保持することができます。
pandas.DataFrame を生成する
pandas.DataFrame
コンストラクタで、次のように初期値となる 2 次元データだけを渡すと、行と列のラベルとして、0、1、2 という連番が割り振られます。
pandas.DataFrame
オブジェクトを print
関数に渡すと、見やすい形で出力してくれます。
各インデックスにラベルを設定する
pandas.DataFrame
コンストラクタの columns
パラメータを使うと、X 軸(列)の各インデックスのラベルを設定することができます。
同様に、index
パラメータを使うと、Y 軸(行)の各インデックスのラベルを設定することができます。
import pandas as pd
data = [[100, 200, 300], [400, 500, 600], [700, 800, 900]]
columns = ('x1', 'x2', 'x3')
index = ('y1', 'y2', 'y3')
df = pd.DataFrame(data, columns=columns, index=index)
print(df)
ディクショナリから DataFrame を生成する
Python のディクショナリオブジェクトを pandas.DataFrame
に変換することができます。
pandas.DataFrame
コンストラクタにディクショナリを渡すと、そのキーがカラム名として使用されます。
この例では、キーがたまたまディクショナリの初期化時と同じ順番で並んでいますが、ディクショナリの要素には順序性はないので、このような順番でカラムが並ぶことは保証されていないことに注意してください(カラム名とそれに関連付けられた Series
データがあるだけです)。
ランダム値や連番からなる DataFrame を生成する
NumPy 配列から pandas.DataFrame
を生成することもできます。
NumPy ライブラリには、いろいろな形の NumPy 配列を生成するユーティリティ関数が用意されているので、これを利用してテスト用の pandas.DataFrame
を簡単に生成できます。
ランダムな DataFrame
import numpy as np
import pandas as pd
np.random.seed(2525) # 乱数シードを設定
arr = np.random.randint(0, 1000, size=(2, 3))
df = pd.DataFrame(arr, columns=("x1", "x2", "x3"))
print(df)
ランダムな値を使うときは、上記のようにシード値を設定しておくことで、同じデータを再現できるようになります。
連番の DataFrame
arr = np.arange(10).reshape((2, 5))
df = pd.DataFrame(arr, columns=("A", "B", "C", "D", "E"))
print(df)