PythonのPandasライブラリにおける「データフレームの初期化」は、データ分析やデータ処理の出発点として非常に重要です。
データフレーム(DataFrame
)は、Excelの表のように「行×列」の構造を持つ2次元のデータ構造で、pandas.DataFrame()
を使って初期化します。
ここでは、代表的な初期化方法を網羅的かつ詳細に解説します。
目次
データフレームの初期化方法一覧
辞書(dict
)からの初期化
各列をキー、対応する値をリストとして渡す方法。
import pandas as pd
data = {
'名前': ['田中', '佐藤', '鈴木'],
'年齢': [28, 34, 22],
'性別': ['男', '女', '男']
}
df = pd.DataFrame(data)
print(df)
リストのリストからの初期化
行データとしてリストを渡す方法。
列名は明示的に指定する必要があります。
import pandas as pd
data = [
['田中', 28, '男'],
['佐藤', 34, '女'],
['鈴木', 22, '男']
]
columns = ['名前', '年齢', '性別']
df = pd.DataFrame(data, columns=columns)
print(df)
リストの辞書からの初期化
各行を辞書としてリストに格納する形式。
構造が柔軟で行ごとの構成が異なっていてもOK。
import pandas as pd
data = [
{'名前': '田中', '年齢': 28, '性別': '男'},
{'名前': '佐藤', '年齢': 34, '性別': '女'},
{'名前': '鈴木', '年齢': 22, '性別': '男'}
]
df = pd.DataFrame(data)
print(df)
NumPyの配列から初期化
大量の数値データを扱う場合に便利。
列名は別途指定。
import numpy as np
data = np.array([
[1, 2, 3],
[4, 5, 6]
])
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
print(df)
Seriesの辞書から初期化
各列を pd.Series
で用意してから辞書にまとめる方法。
s1 = pd.Series([10, 20, 30], name='価格')
s2 = pd.Series(['A', 'B', 'C'], name='商品')
df = pd.DataFrame({'商品': s2, '価格': s1})
print(df)
空のデータフレームを初期化
列やインデックスを後から追加したい場合に使います。
df_empty = pd.DataFrame()
print(df_empty)
あるいは、列名だけ指定す。
df_empty_columns = pd.DataFrame(columns=['名前', '年齢', '性別'])
print(df_empty_columns)
カスタムインデックスの設定
data = {
'名前': ['田中', '佐藤', '鈴木'],
'年齢': [28, 34, 22]
}
index = ['A001', 'A002', 'A003']
df = pd.DataFrame(data, index=index)
print(df)
初期化後のチェックポイント
操作内容 | サンプルコード |
---|---|
データフレームの先頭を見る | df.head() |
データ型の確認 | df.dtypes |
行・列数の確認 | df.shape |
構造の全体を見る | df.info() |
初期化時の注意点
- 列ごとのデータ数を揃えること
→ 辞書やリストの長さがバラバラだとエラーになるか、NaN
になります。 - 列名やインデックス名を明示的に指定すると可読性UP
- 欠損値の補完・初期化後の整形処理も視野に
→df.fillna()
,df.dropna()
などの使用を想定して初期化設計を行うことが重要です。
まとめ:初期化方法選択の指針
初期化方法 | 適したケース |
---|---|
dict (列ベース) | 明確な列構成がある場合 |
リストのリスト | 既存データを行単位で扱う場合 |
リストの辞書 | 柔軟性が必要な場合(行ごとに異なるキー) |
NumPy配列 | 数値ベースの大量データ |
空のデータフレーム | 後から追加する場合 |
以上、PythonのPandasのデータフレームの初期化方法についてでした。
最後までお読みいただき、ありがとうございました。