Pandasのデータフレームを辞書やリストに変換することは、データをPythonのネイティブな形式で扱いたい場合に便利です。
この記事では、具体的なコード例を交えながら、データフレームを辞書やリストに変換する方法を詳しく解説します。
Contents
データフレームを辞書に変換する方法
Pandasではto_dict()
メソッドを使用してデータフレームを辞書形式に変換できます。
このメソッドは、以下のようなオプションで異なる構造の辞書を生成できます。
records形式
各行を辞書としてリストに格納します。
import pandas as pd
# サンプルデータフレームを作成
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
})
# データフレームを辞書(records形式)に変換
dict_records = df.to_dict(orient='records')
print(dict_records)
出力
[
{'Name': 'Alice', 'Age': 25, 'City': 'New York'},
{'Name': 'Bob', 'Age': 30, 'City': 'Los Angeles'},
{'Name': 'Charlie', 'Age': 35, 'City': 'Chicago'}
]
dict形式(デフォルト)
各列をキー、列データを値とした辞書を生成します。
dict_default = df.to_dict()
print(dict_default)
出力
{
'Name': {0: 'Alice', 1: 'Bob', 2: 'Charlie'},
'Age': {0: 25, 1: 30, 2: 35},
'City': {0: 'New York', 1: 'Los Angeles', 2: 'Chicago'}
}
その他の形式
index
形式
行インデックスをキー、行データを値として辞書を生成。split
形式
辞書にindex
,columns
,data
を含めた構造を生成。
dict_index = df.to_dict(orient='index')
print(dict_index)
出力例
{
0: {'Name': 'Alice', 'Age': 25, 'City': 'New York'},
1: {'Name': 'Bob', 'Age': 30, 'City': 'Los Angeles'},
2: {'Name': 'Charlie', 'Age': 35, 'City': 'Chicago'}
}
データフレームをリストに変換する方法
Pandasでは、values
属性やto_numpy()
、to_records()
メソッドを使用してデータフレームをリストに変換できます。
2次元リストとして取得
各行をリストとして格納。
list_values = df.values.tolist()
print(list_values)
出力
[
['Alice', 25, 'New York'],
['Bob', 30, 'Los Angeles'],
['Charlie', 35, 'Chicago']
]
.values
はNumPyの配列を返します。リストが必要な場合はtolist()
を追加してください。
列ごとのリスト
データフレームの各列をリストとして取得するには、列名を指定します。
list_column = df['Name'].tolist()
print(list_column)
出力
['Alice', 'Bob', 'Charlie']
タプル形式のリスト
to_records()
を使用すると、行データをタプル形式で取得できます。
list_records = df.to_records(index=False)
print(list(list_records))
出力
[
('Alice', 25, 'New York'),
('Bob', 30, 'Los Angeles'),
('Charlie', 35, 'Chicago')
]
辞書とリストの使い分け
- 辞書は、データをキーと値のペアで操作したい場合や、JSON形式に変換する場合に便利です。
- リストは、ループ処理や計算処理を行う場合に有用です。
JSON形式への変換
データフレームを辞書に変換した後、Pythonのjson
モジュールを使用してJSON形式に変換することも簡単です。
import json
import pandas as pd
# サンプルデータフレームを作成
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
})
dict_records = df.to_dict(orient='records')
# 辞書(records形式)をJSON形式に変換
json_data = json.dumps(dict_records, indent=4)
print(json_data)
出力
[
{
"Name": "Alice",
"Age": 25,
"City": "New York"
},
{
"Name": "Bob",
"Age": 30,
"City": "Los Angeles"
},
{
"Name": "Charlie",
"Age": 35,
"City": "Chicago"
}
]
まとめ
Pandasのデータフレームを辞書やリストに変換する方法は多岐にわたります。
以下に簡単にまとめます。
変換形式 | メソッド/属性 | 用途 |
---|---|---|
辞書 (records ) | to_dict(orient='records') | 行を辞書形式で扱いたい場合 |
辞書 (index ) | to_dict(orient='index') | 行インデックスをキーにした辞書が必要な場合 |
列リスト | .tolist() | 特定の列データをリストとして取得したい場合 |
2次元リスト | .values.tolist() | 行単位でリストを取得したい場合 |