Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで辞書(dict)をCSVファイルに保存する方法を徹底解説

CSV(Comma Separated Values、カンマ区切り値)は、多くのプラットフォームやアプリケーションで広くサポートされている、最も一般的なデータ交換用ファイル形式です。Pythonで扱った辞書型(dict)のデータをCSVとして保存できれば、Excelなどの表計算ソフトでも簡単に開けるようになります。

ここでは、Pythonの標準ライブラリである csvモジュール を使って、辞書をCSVファイルに書き出す2つの方法を紹介します。

方法1:open()関数とwrite()メソッドを使うシンプルな方法

最も手軽なのは、open() 関数でCSVファイルを書き込みモード('w')で開き、キーと値をカンマ区切りの文字列として1行ずつ書き込む方法です。

import csv

my_dict = {'1': 'aaa', '2': 'bbb', '3': 'ccc'}

with open('test.csv', 'w') as f:
    for key in my_dict.keys():
        f.write("%s,%s\n" % (key, my_dict[key]))

このコードでは、辞書の各キーを順番に取り出し、対応する値と組み合わせて「キー,値」の形式でファイルに書き込んでいます。with 文を使っているため、処理が終わると自動的にファイルが閉じられる点も安心です。

方法2:csv.DictWriterクラスを使う推奨の方法

より本格的な方法として、csvモジュールが提供する DictWriterクラス を利用するやり方があります。DictWriterは、書き込み先のCSVファイル名(ファイルオブジェクト)と、フィールド名(ヘッダー)のリストを指定して使います。

  • writeheader() メソッド:1行目にフィールド名(ヘッダー行)を書き込む
  • writerow() メソッド:辞書1件分を1行としてCSVに書き込む
import csv

csv_columns = ['No', 'Name', 'Country']
dict_data = [
    {'No': 1, 'Name': 'Alex', 'Country': 'India'},
    {'No': 2, 'Name': 'Ben', 'Country': 'USA'},
    {'No': 3, 'Name': 'Shri Ram', 'Country': 'India'},
    {'No': 4, 'Name': 'Smith', 'Country': 'USA'},
    {'No': 5, 'Name': 'Yuva Raj', 'Country': 'India'},
]
csv_file = "Names.csv"

try:
    with open(csv_file, 'w', newline='') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
        writer.writeheader()
        for data in dict_data:
            writer.writerow(data)
except IOError:
    print("I/Oエラーが発生しました")

この例では、まずフィールド名のリスト csv_columns を定義し、複数の辞書を格納したリスト dict_data を用意しています。その後、for ループで各辞書を1行ずつCSVファイルに書き込んでいきます。ファイル操作中に入出力エラーが発生した場合に備えて、try-except ブロックで例外処理を行っている点もポイントです。

補足:Windows環境での改行問題に注意

Windowsで実行する場合、open() の第2引数に newline='' を指定することをおすすめします。これを指定しないと、行間に余分な空行が挿入されてしまうことがあります。

with open('test.csv', 'w', newline='') as f:

まとめ

辞書をCSVに保存するには、シンプルな f.write() を使う方法と、csv.DictWriter を使う方法の2つがあります。単純なキーと値のペアなら前者で十分ですが、ヘッダー付きの構造化データを扱う場合は、DictWriterを使う方が可読性が高く、保守性にも優れたコードになります。用途に応じて使い分けましょう。

  1. PythonでHTMLテーブルのデータをCSVファイルに保存する方法【BeautifulSoup活用】

    課題:データ収集の難しさ データサイエンティストにとって最も苦労する作業のひとつが、データの収集です。ウェブ上には実際ところ豊富なデータが存在していますが、問題はそれをどう自動的に抽出・取得するかという点にあります。 はじめに 本記事では、tutorialspointのPythonチュートリアルページに埋め込まれているHTMLテーブル内のデータ(基本演算子の一覧など)を抽出し、CSVファイルとして保存する方法を解説します。 もしテーブルが1つだけなら、コピー&ペーストでCSVファイルに貼り付けることも可能です。しかしながら、1つのページに5つ以上のテーブルが存在する場合、手作業での対応は非

  2. PythonでpandasのDataFrameをCSVファイルに書き込む方法【to_csv()の使い方】

    pandasのDataFrameをCSVファイルに出力する基本 PythonでpandasのDataFrameをCSVファイルに書き込むには、to_csv()メソッドを使用します。このメソッドは、DataFrameの内容をそのままCSV形式で保存できる、最もシンプルで一般的な方法です。 まずはサンプルデータとして、リストを値にもつ辞書を作成しましょう。 # リストの辞書を定義 d = {Car: [BMW, Lexus, Audi, Mercedes, Jaguar, Bentley], Date_of_purchase: [2020-10-10, 2020-10-12, 2020-