Python で CSV を辞書に変換する

Rayven Esplanada 2023年1月30日
  1. Python で CSV ファイルを辞書に変換するには csv モジュールを使用する
  2. Pandas を使って Python で CSV ファイルを辞書に変換する
Python で CSV を辞書に変換する

このチュートリアルでは、csv ファイルが 2つのカラムを持つ Python で csv ファイルを辞書に変換する方法を紹介します。1 列目にはキー、2 列目には値が格納されています。

このチュートリアルでは、サンプルの CSV の内容を以下に示します。

Python で CSV を辞書に変換する

最初の列にはキーとして使用される識別子が含まれ、2 番目の列には値が含まれます。

Python で CSV ファイルを辞書に変換するには csv モジュールを使用する

Python には csv モジュールがあり、変換、読み込み、書き込み、挿入などの CSV ファイルを操作するためのあらゆる種類のユーティリティ関数が含まれています。CSV ファイルを辞書に変換するには、CSV ファイルを開き、関数 csvreader() を用いて変数に読み込みます。

その後、辞書内包表記を使用して、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 でインストールされていることを確認してください。
Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

関連記事 - Python CSV

関連記事 - Python Dictionary