「アウトプットと言う名の備忘録@Texas」

日本じゃない何処かの脳筋パイソニスタによる何かしらの走り書き

【Pandas最強説】Pythonで辞書のリストからCSV形式に変換する方法〜pandas編〜

pandas.io.json.json_normalize()メソッド pandas.json_normalize()メソッドを使って共通のkeyをもつ辞書のリストをデータフレームに変換、そして更にそこからto_csv()メソッドCSVファイルに変換する方法。

pandas.io.json.json_normalize()メソッドを使うと共通のキーをもつ辞書のリストをpandas.DataFrameに変換できる。


〜〜〜〜追記 2022-02-11〜〜〜〜〜
最近このメソッドを使ったら

FutureWarning: pandas.io.json.json_normalize is deprecated, use pandas.json_normalize instead.

と注意されてしまいました。
なのでpandas.json_normalize()を使っていきましょう!
pandas.pydata.org

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

to_csvメソッドcsvファイル書き出し、保存!
pandas.pydata.org


この方法だと、いちいちheaderを設定する必要なくpandasが共通のKeyをheaderに設定してくれ、直感的かつ簡単だったのでメモメモ。

そもそも、なぜCSV形式で求められるかというとやはりGoogle Sheetsへの移行が楽だから。CSV形式ならそのままGoogle SheetsにImport可能であり、集めたデータなどを他のチームのアナリストたちとシェアする時にとても便利。

(ちなみにCSVとはComma-separated valuesの略。直訳するとコンマで分けられた値。余談ですが、私が住む国にはCVSという巨大薬局チェーンがあり、毎回CSVCVSを混同しがちなので注意
(経験談:リアルに自分のResumeにCVSと記載して提出してしまった…!!泣)

さっそく本題に移ります。

今回は、JsonファイルやXMLファイルのデータをPythonで辞書のリストにまとめたと仮定して、辞書リストをpandasを使ってCSV形式に変換します。(PythonでのJsonXMLの扱いはまたまとめます。)

まず、辞書リストを用意します

dogs = [
    {'name': 'pochi', 'age': 3, 'gender': 'male', 'kind': 'shiba'},
    {'name': 'hanako', 'age': 12, 'gender': 'female', 'kind': 'golden retriever'},
    {'name': 'papi', 'age': 8, 'gender': 'male', 'kind': 'papillon'}
]

このワンちゃんデータを簡単にCSV形式でまとめたい!

そんな時にpandas!

とりあえずimport

import pandas as pd

まずはpandas.io.json.json_normalize()メソッドで、この辞書リストをデータフレーム型に変換。

df = pd.io.json.json_normalize(dogs)

print(df)

#output
#    age  gender              kind    name
# 0    3    male             shiba   pochi
# 1   12  female  golden retriever  hanako
# 2    8    male          papillon    papi

そしてto_csvメソッドcsvファイル書き出し、ファイル名を設定して保存!

df.to_csv('dogs.csv')

驚くほど簡単!!

f:id:At_sashimi_py:20190516144958p:plain
実行したpythonファイルと同じフォルダ内に保存されます
f:id:At_sashimi_py:20190516145345p:plain
headerもちゃんと設定してある!


というわけで、以上辞書リストをPandasを使って簡単にCSVファイルに変換する方法でした!

今日も頭のいい先人たちに感謝!


【Pandas最強説シリーズ】
atsashimipy.hatenablog.com