HOWTO · Python
Python で CSV を辞書に変換する
Python で csv ファイルを辞書に変換する方法を説明します。
このページの内容
このチュートリアルでは、csv ファイルが 2つのカラムを持つ Python で csv ファイルを辞書に変換する方法を紹介します。1 列目にはキー、2 列目には値が格納されています。
このチュートリアルでは、サンプルの CSV の内容を以下に示します。
最初の列にはキーとして使用される識別子が含まれ、2 番目の列には値が含まれます。
Python で CSV ファイルを辞書に変換するには csv モジュールを使用する
Python には csv モジュールがあり、変換、読み込み、書き込み、挿入などの CSV ファイルを操作するためのあらゆる種類のユーティリティ関数が含まれています。CSV ファイルを辞書に変換するには、CSV ファイルを開き、関数 csv の reader() を用いて変数に読み込みます。
その後、辞書内包表記を使用して、reader オブジェクトを繰り返し、辞書のキーと値のペアとして最初の 2 行にアクセスすることにより、CSV オブジェクトを辞書に変換します。
import csv
dict_from_csv = {}
with open("csv_file.csv", mode="r") as inp:
reader = csv.reader(inp)
dict_from_csv = {rows[0]: rows[1] for rows in reader}
print(dict_from_csv)
出力:
{'fruit': 'apple', 'vegetable': 'tomato', 'mammal': 'rabbit', 'fish': 'clownfish', 'bird': 'crow'}
Pandas を使って Python で CSV ファイルを辞書に変換する
CSV ファイルを Python 辞書に変換するもう一つの方法は、CSV ファイル用のデータ操作ツールを含む Pandas モジュールを利用することです。
pandas をインポートした後、組み込み関数 read_csv() を利用して CSV ファイルの形式を指定します。read_csv() を呼び出した後は、組み込みの pandas 関数 to_dict() を用いて結果を辞書に変換します。
import pandas as pd
dict_from_csv = pd.read_csv(
"csv_file.csv", header=None, index_col=0, squeeze=True
).to_dict()
print(dict_from_csv)
パラメータ header はヘッダを明示的に渡すか、別のパラメータで宣言するかを指定します。
index_col は、関数 read_csv() が返す DataFrame オブジェクトのラベルとしてどの列を用いるかを指定します。この場合、インデックス 0 の最初のカラムがラベルとなります。
最後に、squeeze パラメータは、データに値の列が 1つしか含まれていないかどうかを定義します。この場合、最初のカラムがインデックスのカラムあるいはラベルとして利用されるため、データには 1つのカラムしか存在しません。
出力:
{'fruit': 'apple', 'vegetable': 'tomato', 'mammal': 'rabbit', 'fish': 'clownfish', 'bird': 'crow'}
No module named 'pandas' というエラーが発生した場合は、pandas がローカルマシンに pip install pandas でインストールされていることを確認してください。