Python 辞書からpandasデータフレームを作成するパターン別雛形コード

'24/04/06更新:雛形コードを追加した。
本記事では、辞書からpandasデータフレームを作成する雛形コードを3パターン載せました。

■その1. 下図のように、キーに対してバリューが1つの場合の辞書データがあります。これからキーとバリューを列に設定したデータフレームを作成したい場合の例です。

上記のことを成す雛形コードは次の通りです。

import pandas as pd

# 辞書
data = {'A':'1',
        'B':'2',
        'C':'3',
        'D':'4'}

# データフレームに変換するための辞書を作成する
converted_data = {'Key': list(data.keys()),
                  'Val': list(data.values())}

# 辞書をデータフレームに変換する
df = pd.DataFrame(converted_data)
df

 

■その2. 下図のように、キーに対してバリューがリストの辞書データがあります。これをキーとバリューのリストの要素インデックス別に、列を設定したデータフレームを作成したい場合の例です。

上記のことを成す雛形コードは次の通りです。

import pandas as pd

# 辞書データ
data = {'A': ['1', '2', '3'],
        'B': ['4', '5', '6'],
        'C': ['7', '8', '9'],
        'D': ['10', '11', '12']}

# 所望のデータフレームに変換する辞書を作成する
converted_data = {'Key': list(data.keys())}
for key, values in data.items():
    for i, value in enumerate(values):
        converted_data[f'Val{i+1}'] = converted_data.get(f'Val{i+1}', []) + [value]

# 辞書をデータフレームに変換します
df = pd.DataFrame(converted_data)
df

 

■その3. 下図のように、キーに対してバリューが複数のリストの辞書データがあります。これをキーとバリューのリスト数別に、列を設定したデータフレームを作成したい場合の例です。

上記のことを成す雛形コードは次の通りです。

import pandas as pd

# サンプルのdata_dict
data_dict = {
    # category: x_data, y_data
    "A": ([1, 2, 3], [4, 5, 6]),
    "B": ([7, 8, 9], [10, 11, 12]),
    "C": ([13, 14, 15], [16, 17, 18]),
}

# 辞書からリストを作成
rows = []
for select_sheet_name, (x_data, y_data) in data_dict.items():
    for x, y in zip(x_data, y_data):
        rows.append([select_sheet_name, x, y])

# データフレームを作成
df = pd.DataFrame(rows, columns=["category", "x_data", "y_data"])
df

以上

<広告>