Pythonの辞書をデータフレーム(Pandas)に変換する方法 初心者向け完全ガイド
生徒
「Pythonで辞書を表形式にして見やすくしたいのですが、どうすればいいですか?」
先生
「それならpandas(パンダス)というライブラリを使って、辞書をデータフレームに変換するのが良いですよ。」
生徒
「データフレームって何ですか?」
先生
「データフレームは表形式のデータ構造で、エクセルのように行と列を持つ形でデータを管理できるものです。Pandasではこれを簡単に作れます。」
1. Pandasとデータフレームとは?
PandasはPythonでデータ分析を行うためのライブラリです。特にデータフレーム(DataFrame)を使うことで、辞書・リスト・CSVファイルなど様々なデータを表形式に変換できます。
データフレームを使うと、列ごとの計算、フィルタリング、並び替えなどが簡単にできます。
2. 辞書をデータフレームに変換する基本
まずはPandasをインポートして、辞書を直接データフレームに変換してみましょう。
import pandas as pd
data = {
"名前": ["田中", "佐藤", "鈴木"],
"年齢": [28, 34, 22],
"出身地": ["東京", "大阪", "福岡"]
}
df = pd.DataFrame(data)
print(df)
名前 年齢 出身地
0 田中 28 東京
1 佐藤 34 大阪
2 鈴木 22 福岡
キーが列名、値がリストになっていれば、そのまま表形式に変換できます。
3. 辞書のリストをデータフレームに変換する
1件ごとのデータを辞書にして、それをリストにまとめても変換できます。
data_list = [
{"名前": "田中", "年齢": 28, "出身地": "東京"},
{"名前": "佐藤", "年齢": 34, "出身地": "大阪"},
{"名前": "鈴木", "年齢": 22, "出身地": "福岡"}
]
df = pd.DataFrame(data_list)
print(df)
名前 年齢 出身地
0 田中 28 東京
1 佐藤 34 大阪
2 鈴木 22 福岡
この方法は、データを1行ずつ追加するイメージで管理できるため、Web APIやファイル読み込み後の処理でも使いやすいです。
4. インデックス(行番号)を指定して変換する
行のラベルを指定することもできます。
df = pd.DataFrame(data, index=["社員A", "社員B", "社員C"])
print(df)
名前 年齢 出身地
社員A 田中 28 東京
社員B 佐藤 34 大阪
社員C 鈴木 22 福岡
インデックスを使うことで、行を名前で管理でき、検索やデータ抽出がしやすくなります。
5. ネスト構造の辞書をデータフレームに変換する
辞書の中にさらに辞書が入っている場合は、orientパラメータを使って変換します。
nested_data = {
"社員A": {"名前": "田中", "年齢": 28, "出身地": "東京"},
"社員B": {"名前": "佐藤", "年齢": 34, "出身地": "大阪"},
"社員C": {"名前": "鈴木", "年齢": 22, "出身地": "福岡"}
}
df = pd.DataFrame.from_dict(nested_data, orient="index")
print(df)
名前 年齢 出身地
社員A 田中 28 東京
社員B 佐藤 34 大阪
社員C 鈴木 22 福岡
このように、キーを行ラベルとして変換できます。
6. 実用例:集計や分析への応用
データフレームに変換すると、すぐに集計や分析が可能です。
print(df["年齢"].mean()) # 平均年齢
print(df["出身地"].value_counts()) # 出身地の人数集計
28.0
東京 1
大阪 1
福岡 1
Name: 出身地, dtype: int64
このように、辞書からデータフレームに変換すれば、分析やグラフ化がとても簡単になります。
まとめ
Pythonで辞書をデータフレームに変換する方法は、データ分析の入り口として非常に重要であり、Pandasを扱う上で欠かせない基本スキルです。辞書という柔軟で扱いやすいデータ構造を、表形式のデータフレームへ変換することで、情報を視覚的に整理し、集計・抽出・加工・統計処理など幅広い分析作業が可能になります。今回の記事では、辞書からデータフレームへ変換するためのさまざまな書き方を学びました。キーが列名になっている辞書をそのまま渡す方法、1行ごとに辞書を並べた「辞書のリスト」パターン、さらにネストされた辞書をorient="index"で行方向に展開する方法など、それぞれ目的に応じて使い分けることができます。
また、データフレームの活用は変換して終わりではありません。変換したあとのデータを用いて平均値を求めたり、特定の列で集計したり、フィルタリングで絞り込んだり、並び替えたりと、Excelでは煩雑になりがちな処理もPandasなら簡潔なコードで実現できます。辞書→データフレーム変換は、データ分析や可視化への第一歩として非常に有効であり、実務でも日常的に使われるテクニックです。
辞書からデータフレームに変換する際に押さえておくべきポイントは、各キーの値の長さが揃っているか、辞書の構造が「列を中心に扱いたいデータ」なのか「行を中心に扱いたいデータ」なのかを確認することです。行方向の辞書であればfrom_dictとorient="index"を使い、縦に整ったパターンであれば通常のDataFrameで十分です。また、インデックス(行ラベル)を任意の文字列に指定することで、検索性や可読性を高めることもできます。こうした工夫を通じて、Pandasのデータフレームをより柔軟に扱えるようになります。
辞書はAPIレスポンス、Webスクレイピング結果、JSONデータや設定情報など、多くのプログラムでよく使われます。その辞書をデータフレームに変換できるようになることで、分析可能なデータ形式へ瞬時に変換でき、次の処理へと自然に進めるようになります。Pythonを使ったデータ分析では、こうした基本操作が大きな力を発揮するので、今回学んだ方法をしっかり練習して身につけておくことをおすすめします。
サンプルプログラム:辞書 → データフレーム変換の総まとめ
記事内容を一度に復習できるように、複数パターンをまとめたサンプルコードを紹介します。
import pandas as pd
# 1. 基本の辞書からデータフレームへ
data = {
"名前": ["田中", "佐藤", "鈴木"],
"年齢": [28, 34, 22],
"出身地": ["東京", "大阪", "福岡"]
}
df1 = pd.DataFrame(data)
print("基本のデータフレーム:")
print(df1)
# 2. 辞書のリスト → データフレーム
data_list = [
{"名前": "田中", "年齢": 28, "出身地": "東京"},
{"名前": "佐藤", "年齢": 34, "出身地": "大阪"},
{"名前": "鈴木", "年齢": 22, "出身地": "福岡"}
]
df2 = pd.DataFrame(data_list)
print("辞書のリストから:")
print(df2)
# 3. ネスト辞書 → orient='index'
nested = {
"社員A": {"名前": "田中", "年齢": 28, "出身地": "東京"},
"社員B": {"名前": "佐藤", "年齢": 34, "出身地": "大阪"},
"社員C": {"名前": "鈴木", "年齢": 22, "出身地": "福岡"}
}
df3 = pd.DataFrame.from_dict(nested, orient="index")
print("ネスト辞書から:")
print(df3)
# 4. 集計例
print("平均年齢:", df3["年齢"].mean())
print("出身地の集計:")
print(df3["出身地"].value_counts())
このサンプルでは、辞書の形が変わっても柔軟にデータフレームへ変換できる点を確認できます。また、変換後の簡単な集計処理も行っており、データ分析へと自然に発展できる流れになっています。
生徒
「辞書の形が違ってもデータフレームに変換できるなんて、すごく便利ですね!特にネストされた辞書を行方向に展開できるのは驚きました。」
先生
「その通りです。辞書はデータ取得の段階で使われることが多いので、データフレームへ変換できると分析や加工が一気に楽になります。orientの使い方を覚えると、より柔軟に扱えます。」
生徒
「インデックスを指定できるのも便利でした。数字だけじゃなくてラベルで管理できると表が見やすいですし、検索も簡単になりますね。」
先生
「まさにその通り。データフレームはエクセルに近い感覚で扱えるので、業務や分析作業でも自然に活用できますよ。」
生徒
「辞書 → データフレーム → 集計という流れがすごく理解しやすかったです!自分でもAPIの結果をデータフレームに変換してみたいです。」
先生
「ぜひ挑戦してみてください。Pandasは学べば学ぶほど便利さが実感できるので、今回の基礎を大切にしながら応用へ進んでいきましょう。」