PythonでCSVデータをdict型として読み込む方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonでCSVデータをdict型として読み込む方法について現役エンジニアが解説しています。dict型は辞書型とも呼ばれるデータの形式をcsvモジュールのDictReader関数を使うことで、dict型として読み込めます。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

PythonでCSVデータをdict型として読み込む方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

 

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まるでしょう。

 

なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PythonでCSVデータをdict型として読み込む方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

dict型とは

dict型とは、辞書型とも呼ばれるデータの形式のことで、キーと値のペアを一つの要素としてデータを格納していく機能を有しています。

複数のデータを保持するため、リスト型と似ているものの、データ構造は異なるものです。

[list型]

list_data = [値1,値2,値3]

[dict型]

dict_data = {キー1: 値1, キー2:値2, キー3:値3}

dict型を使用する際の注意点として、キーになる部分は同じ値が使用できません。

 

csvモジュールのDictReader関数について

csvモジュールのDictReader関数は、csvデータをdict型で返す関数です。

通常csvデータをcsvモジュールのReader関数で読み込むとlist型で返されます。

しかし、DictReder関数を使用すれば、その後の処理がしやすくなったり、コードをシンプルに記述したりすることが可能となるでしょう。

DictReader関数は下記文法で使用可能です。

csv.DirectReader('open状態のcsvファイル','ヘッダー情報')

 

[PR] Pythonで挫折しない学習方法を動画で公開中

実際に書いてみよう

今回サンプルコードで使用するcsvデータはこちらからダウンロードしましょう。

それでは、DictReader関数の使い方についてサンプルコードを例に実際に記述します。

今回のサンプルコードでは、基本としてDirectReader関数を使用して開いたcsvファイルの中身を1行ずつdict型で出力するプログラムです。

更に応用編としてDirectReader関数を使用し、開いたcsvファイルの中身をdict型でキーを指定して指定して出力するプログラムを作成します。

以下、サンプルコードとなります。

# -*- coding: utf-8 -*-
import csv

# Headerを設定する
csv_header = ['生徒番号','名前','名前フリガナ']

# 基本編
print('<<基本編>>')
with open('sample.csvのファイルパス', 'r',encoding="utf-8_sig") as f:
    # DictReaderと共にHeaderを渡すことで辞書形式で返す。
    # 取得したデータを1行ずつ出力。
    for row in csv.DictReader(f, csv_header):
        print(row)

# 応用編
print('<<応用編>>')
with open('sample.csvのファイルパス', 'r',encoding="utf-8_sig") as f:
    # キーを指定して名前だけ出力。
    for row in csv.DictReader(f, csv_header):
        print(row['名前'])

 

実行結果

<<基本編>>
OrderedDict([('生徒番号', '401'), ('名前', '臼井 敬志'), ('名前フリガナ', 'ウスイ ケイジ')]) 
OrderedDict([('生徒番号', '402'), ('名前', '下田 優香'), ('名前フリガナ', 'シモダ ユウカ')]) 
OrderedDict([('生徒番号', '403'), ('名前', '黒木 光善'), ('名前フリガナ', 'クロキ ミツヨシ')]) 
OrderedDict([('生徒番号', '404'), ('名前', '丸山 真志'), ('名前フリガナ', 'マルヤマ マサシ')]) 
OrderedDict([('生徒番号', '405'), ('名前', '菊池 清名'), ('名前フリガナ', 'キクチ セイナ')]) 
<<応用編>>
臼井 敬志
下田 優香
黒木 光善
丸山 真志
菊池 清名

 

解説

それぞれのコードの詳細をみていきましょう。

<<基本編>>

今回使用するsample.csvのヘッダーをコード5行目で設定しましょう。

コード9行目では、先ほどダウンロードしたcsvファイルをDirectReader関数を使用してdict型で読み込んでいます。

コード12,13行目ではfor文を使用し、dict型で読み込んだcsvデータを1行ずつprint文で出力しました。

実行結果では、dict型で読み込まれたcsvデータが1行ずつ出力されていることが確認できるでしょう。

 

<<応用編>>

応用編ではDirectReader関数を使用して、dict型で読み込んだcsvデータをキーを指定して出力します。

コード20行目で、print文を使用してdict型で読み込んだデータをキーを指定して出力しました。

実行結果では、キー”名前”に対応するデータのみが出力されていることが確認可能です。

 

まとめ

今回は、PythonでCSVデータをdict型として読み込む方法についてみてきました。

データのインポート処理は、その後取り込んだデータをどのように使うかに応じて適切な形式へ整形する必要があります。

今回紹介した手法もそのような場面で使用するので、是非理解を深めて実際に使えるようにしましょう。

 

執筆してくれたメンター

菅繕久(すがよしひこ)

現在はフリーランスのエンジニアをしていてプログラミング歴は8年目になります。

普段は Python、FileMaker等を使って様々な業務で活用できるIoTプロダクトRPAツールを作成しています。

開発実績としては、業務自動化ツール(在庫管理・発注・ファイル操作 etc)、電子カルテシステム、ロボット用プログラムなどがあります。

TechAcademyではPythonコースを担当しております。

 

大石ゆかり

PythonでCSVデータをdict型として読み込む方法がよく分かったので良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、参加してみてください。