見出し画像

[Python]辞書型リストをpandasのDataFrameに変換する

はじめに

Pythonで、辞書型のリストをpandasのDataFrame型に変換する実装についてご紹介します。

使用するライブラリ

pandas

データ分析、機械学習の実装で最も使用されるライブラリ。

動作環境

・windows10
・Jupyter Notebook 6.2.0

実装

1. pandas.DataFrame()を使用する

import pandas as pd

vegtables1_1 = [
{
   'name': 'バナナ',
   'category': 'フルーツ',
   'price': 100
 },
 {
   'name': 'りんご',
   'category': 'フルーツ',
   'price': 120
 }
]

df1_1 = pd.DataFrame(vegtables1_1 )
print(df1_1)

今回の例のように、シンプルな構造の辞書型のリストをDataFrame型への変換が可能です。
辞書のキーが列名となります。

画像2

また、指定したキーがない場合の要素は欠損値(NaN)となります。

import pandas as pd

# 'name'がりんごの'price'キーが存在しない
vegtables1_2 = [
{
   'name': 'バナナ',
   'category': 'フルーツ',
   'price': 100
 },
 {
   'name': 'りんご',
   'category': 'フルーツ',
 },
]

df1_2 = pd.json_normalize(vegtables1_2)
print(df1_2)

画像2

2. pandas.json_normalize()を使用する

import pandas as pd

vegtables1_1 = [
{
   'name': 'バナナ',
   'category': 'フルーツ',
   'price': 100
 },
 {
   'name': 'りんご',
   'category': 'フルーツ',
   'price': 120
 }
]

df2_1 = pd.json_normalize(vegtables1_1)
print(df2_1)

1.と同様、シンプルな構造の辞書型のリストをDataFrame型への変換が可能です。

辞書型の値がネストしている場合でも、DataFrame型への変換が可能です。

import pandas as pd

vegtables2 = [
   {
       'name': 'バナナ',
       'category': 'フルーツ',
       'price': 100,
       'id' : {
           'code' : 10003,
           'lot' : 2106150001
       }
   },
   {
       'name': 'りんご',
       'category': 'フルーツ',
       'price': 120,
       'id' : {
           'code' : 10009,
           'lot' : 2106010008
       }
   }
]

df2_2 = pd.json_normalize(vegtables2)
print(df2_2)

画像3

この場合の列名は、デフォルトは、親のキー.子のキーとなります。.部分の指定は、引数sepで設定することが可能です。

pandas.json_normalize()について

pandas.json_normalize()は、pandas1.0.0以前のバージョンでは、pandas.io.json.json_normalize()という名前でした。pandas1.0.0以降のバージョンで、pandas.io.json.json_normalize()を使用すると、下記のようにWarningメッセージが表示されます。

画像4

まとめ

今回は、Pythonで、辞書型のリストをpandasのDataFrame型に変換する実装についてご紹介しました。DataFrame型に変換しておくと、その後のデータ分析作業やデータの出力が、ラクになります。

参考サイト















いいなと思ったら応援しよう!