Python 辞書を Pandas DataFrame に変換する方法

  1. dictionary を Pandas DataFame に変換するメソッド
  2. Pandas Dataframe で「キー」を「列」に、「値」を「行」の値に変換するメソッド
  3.  dictdataframe に変換する pandas.DataFrame().from_dict() メソッド

Python の dictionary を Pandas の Datafarme に変換する方法と、keyscolumns に、valuesrow の値にするようなオプションを紹介します。ネストされた dictionarydataframe に変換することもできます。

また、pandas.DataFrame.from_dict を使用した別のアプローチを紹介します。これを任意の rename メソッドとチェーンして、インデックスと列の名前を一度に設定します。

dictionary を Pandas DataFame に変換するメソッド

Pandas の DataFrame コンストラクターpd.DataFrame() は、辞書自体ではなく、コンストラクターの引数として辞書の items が指定されている場合、辞書を dataframe に変換します。

# python 3.x
import pandas as pd

fruit_dict = {
    3: 'apple',
    2: 'banana',
    6:'mango',
    4:'apricot',
    1:'kiwi',
    8:'orange'}

print(pd.DataFrame(list(fruit_dict.items()),
                   columns=['Quantity', 'FruitName']))

辞書の keysvaluesdataframe の 2つの列に変換され、オプション columns で指定された列名が付けられます。

   Quantity FruitName
0         3     apple
1         2    banana
2         6     mango
3         4   apricot
4         1      kiwi
5         8    orange

Pandas Dataframe で「キー」を「列」に、「値」を「行」の値に変換するメソッド

次のように、辞書を角括弧で囲み、上記のコードから列名を削除するだけです。

import pandas as pd

fruit_dict = {
    1: 'apple',
    2: 'banana',
    3:'mango',
    4:'apricot',
    5:'kiwi',
    6:'orange'}

print(pd.DataFrame([fruit_dict]))

出力:

       1       2      3        4     5       6
0  apple  banana  mango  apricot  kiwi  orange

Pandas の 辞書内包concat を使用してすべての辞書を組み合わせ、リストを渡して新しい列名を指定します

次のコードを考えてください、

import pandas as pd

data = {
    '1':{
        'apple':11, 
        'banana':18}, 
    '2':{
        'apple':16, 
        'banana':12}
}
df = pd.concat({k: pd.Series(v) for k, v in data.items()}).reset_index()
df.columns = ['dict_index', 'name','quantity']
print(df)

出力:

  dict_index    name  quantity
0          1   apple        11
1          1  banana        18
2          2   apple        16
3          2  banana        12

 dictdataframe に変換する pandas.DataFrame().from_dict() メソッド

from_dict を使用して dictdataframe に変換します。ここでは、ディクショナリキーを行として使用し、rename() メソッドを適用して列名を変更するために orient='index'を設定します。

次のコードについて考えます。

import pandas as pd

print(pd.DataFrame.from_dict({
 'apple': 3,
 'banana': 5,
 'mango': 7,
 'apricot': 1,
 'kiwi': 8,
 'orange': 3}, orient='index').rename(columns={0:'Qunatity'}))

出力:

         Quantity
apple           3
banana          5
mango           7
apricot         1
kiwi            8
orange          3

関連記事 - Pandas DataFrame

  • Pandas DataFrame に 1 行を追加する方法
  • Pandas で DataFrame 列を文字列に変換する方法
  • comments powered by Disqus