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