【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という巨大薬局チェーンがあり、毎回CSVとCVSを混同しがちなので注意)
(経験談:リアルに自分のResumeにCVSと記載して提出してしまった…!!泣)
さっそく本題に移ります。
今回は、JsonファイルやXMLファイルのデータをPythonで辞書のリストにまとめたと仮定して、辞書リストをpandasを使ってCSV形式に変換します。(PythonでのJsonやXMLの扱いはまたまとめます。)
まず、辞書リストを用意します
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')
驚くほど簡単!!
というわけで、以上辞書リストをPandasを使って簡単にCSVファイルに変換する方法でした!
今日も頭のいい先人たちに感謝!
【Pandas最強説シリーズ】
atsashimipy.hatenablog.com