pandas の DataFrame を作成する基本的な方法まとめ

pandas を使ううえで最初に覚えるのが DataFrame の作成方法だ。データの形式に応じていくつかの手段が用意されており、状況に合わせて使い分けることで効率よく作業を進められる。

辞書から作成する

もっとも直感的な方法は、Python の辞書を渡すやり方です。キーが列名、値がデータのリストになります。

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie"],
    "age": [25, 30, 35],
    "city": ["Tokyo", "Osaka", "Nagoya"]
}
df = pd.DataFrame(data)
print(df)

辞書のキーがそのまま列名として使われるため、構造がわかりやすいのが利点です。列の順序は Python 3.7 以降であれば辞書の挿入順が保持されます。

リストのリストから作成する

行単位でデータを持っている場合は、リストのリストを使うほうが自然です。この場合は columns 引数で列名を明示的に指定します。

rows = [
    ["Alice", 25, "Tokyo"],
    ["Bob", 30, "Osaka"],
    ["Charlie", 35, "Nagoya"]
]
df = pd.DataFrame(rows, columns=["name", "age", "city"])

API のレスポンスやスクレイピング結果など、行ごとにデータが得られるケースではこの方法が便利です。

辞書のリストから作成する

各行を 1 つの辞書として表現し、そのリストを渡す方法もあります。JSON 形式のデータと相性がよく、Web API からのレスポンスをそのまま DataFrame に変換できます。

records = [
    {"name": "Alice", "age": 25, "city": "Tokyo"},
    {"name": "Bob", "age": 30, "city": "Osaka"},
    {"name": "Charlie", "age": 35, "city": "Nagoya"}
]
df = pd.DataFrame(records)

キーが一致しないレコードが混ざっていると、該当するセルは自動的に NaN で埋められます。データの欠損に注意しましょう。

NumPy 配列から作成する

数値データを扱う場合は NumPy 配列から直接 DataFrame を作ることもできます。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
df = pd.DataFrame(arr, columns=["x", "y", "z"])

NumPy 配列はすべて同じ型であるため、型の不一致が起きにくいという特徴があります。科学計算やシミュレーション結果の整理に向いている方法です。

インデックスを指定する

どの作成方法でも、index 引数を渡せば行ラベルをカスタマイズできます。

df = pd.DataFrame(
    {"score": [80, 95, 70]},
    index=["math", "english", "science"]
)

デフォルトでは 0 から始まる連番が振られますが、意味のあるラベルを付けておくと、あとから loc でアクセスするときに便利です。

辞書から作成

列単位でデータを管理しやすい。列名をキーにして直感的に記述できる

リストのリストから作成

行単位でデータを管理しやすい。columns 引数で列名を別途指定する必要がある

実際の業務では CSV や Excel から読み込むケースが大半ですが、テストデータの準備やちょっとした検証には手動で DataFrame を組み立てる場面も多いため、基本的な作成方法を押さえておくと役立ちます。