pandas

【Pandas】辞書からDataFrameを作成する

MAX

pandasのDataFrameを作成する時は、CSVファイルからデータを読み込んだり、リストやndarrayから作成することが多いと思う。

しかしAPI経由で取得したデータの場合、大抵はJSON形式なのでdictに変換してからDataFrameを作成することになる。

辞書からDataFrameを作成する場合、キーを列にするか、インデックスにするかで、少し挙動が変わってくる。

スポンサーリンク

辞書のキーをカラム名としてDataFrame作成

DataFrameとして利用する前提のAPIなどの場合、この形式で良い感じになるようになっている(はず)。

1import pandas as pd
2
3dict_data = {
4    "key1": "val1",
5    "key2": "val2",
6    "key3": [1, 2, 3],
7    "key4": ["aaa", "bbb", "ccc"]
8}
9df1 = pd.DataFrame(data=dict_data)
10print(df1)
11#    key1  key2  key3 key4
12# 0  val1  val2     1  aaa
13# 1  val1  val2     2  bbb
14# 2  val1  val2     3  ccc

辞書のキーをカラム名として扱いたい場合、dataに辞書を指定するだけ。

リストになっている値は展開される。

また、リストの長さが異なる場合、エラーとなる。

リスト以外の値についてはブロードキャストされる。

辞書のキーをインデックスとしてDataFrame作成

1df2 = pd.DataFrame(data=dict_data.values(), // dataに辞書の値を指定
2                   index=dict_data.keys(), // indexに辞書のキーを指定
3                   columns=["value"]) // カラム名は適宜指定
4print(df2)
5#                 value
6# key1             val1
7# key2             val2
8# key3        [1, 2, 3]
9# key4  [aaa, bbb, ccc]

この方法だとリストは展開されない(ので使う機会はあまりない)。

通常は、リストが展開される方法でDataFrameを作成し、転置する。

1df1_t = df1.transpose()
2print(df1_t)
3#          0     1     2
4# key1  val1  val1  val1
5# key2  val2  val2  val2
6# key3     1     2     3
7# key4   aaa   bbb   ccc
あわせて読みたい
【Pandas】DataFrameに行を追加する
【Pandas】DataFrameに行を追加する
スポンサーリンク
ABOUT ME
MAX
MAX
ITエンジニア、データサイエンティスト
新卒でSIerに入社し、フリーランスになってWEB系へ転向。
その後AIの世界へ足を踏み入れ、正社員に戻る。 テーブルデータの分析がメイン。
スポンサーリンク
記事URLをコピーしました