スライドショー

PythonでCSVファイルの読み込み・書き込み方法を解説

そもそもCSVファイルって何?
CSVファイルってどうやって読み込むの?
CSVファイルに書き込む方法は?

PythonでCSVファイルなどデータが格納されているファイルを読み込んで、データを取得する処理<を実装しなければいけないことは結構あります。Pythonでは簡単に「CSVの読み込み・書き込み処理」を実装することが可能です。

しかし、初心者にとってはそもそもCSVファイルってそもそも何なのかよくわからなかったり、読み込みや書き込み方法がわからない…などの疑問点が浮かんでくるのではないでしょうか。

そこで、今回はPythonにおけるCSVファイルの基本的な使い方をご紹介したいと思います。

CSVファイルとは

CSVファイルとはComma Separated Valueの略で、カンマ(,)で区切られた値が含まれているテキストファイルです。

CSVファイルは以下のように値とカンマで構成されています。

python,ruby,php,java,c,swift

拡張子は「.csv」形式で、テキストファイルやエクセルで開くことができます。

プログラミングにおいてCSVファイルは頻繁に使用されるものなので、扱い方などを一通り覚えておくととても便利なんです。

CSVファイルの読み込み

ではまずは、CSVファイルを読み込んでみましょう。PythonにおけるCSVファイルの読み書きは、基本的にはcsvモジュールを使用します。

このモジュールを使用することで、さまざまな作業がとても素早く進めることが出来ます。なのでまずは、csvモジュールをインポートすることから始めましょう。

import csv

上記一行のみで、csvモジュールのインポートは完了しました。

また、プログラムのファイル名とモジュール名が衝突した場合エラーが発生するので、モジュール名とプログラムの名前は区別するようにしましょう。

csvモジュールをインポートした後は、CSVファイルを読み込んでみましょう。

プログラムで読み込むCSVファイル以下のとおりです。

ファイル名「start.csv」

Hello,World
Hello,Python
Hello,Ruby
Hello,Java
Hello,PHP

サンプルプログラム「csv_sample.py」

import csv
  
with open('start.csv', 'r') as f:
    reader = csv.reader(f)
    for line in reader:
        print(line)

出力結果は以下の通りです。

['Hello', 'World']
['Hello', 'Python']
['Hello', 'Ruby']
['Hello', 'Java']
['Hello', 'PHP']

上のコードでは、読み込みたいファイルであるstart.csvを開き、その中身をprint関数で出力しています。open関数の第二引数には「'r'」(read)と指定することで、読み込みが可能になっています。

なお、このサンプルコードではwith文を使用しています。with文を使用しなくても同じコードを書くことはできますが、with文を使うとより簡潔でPythonらしいコードに仕上がるのでおすすめです。

with文については、こちらの記事で詳しく解説されているのでぜひご覧ください。

【Python入門】with構文を使ってファイルを簡単に扱おう
更新日 : 2019年3月30日

CSVファイルの読み込み方法まとめ

  • csvモジュールをインポートする
  • モジュール名とプログラムの名前は区別する
  • csvを読み込むにはopen関数でファイル名と「r」を指定する
  • データの取得はcsvモジュールreader(ファイルオブジェクト)を使用する
  • with文を使用することで簡潔に記述できる

CSVファイルの書き込み

CSVファイルの書き込みは先ほどと同じようにcsvモジュールとwith文を使用していきます。

以下のサンプルコードをご覧ください。

import csv
  
word = "Good morning, Hello, Good night"
words = word.split(',')

with open('start.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(words)

上のコードでは、書き込む内容をまずリストに保存し、その後CSVファイルに書き込んでいます。先ほどとの違いは、open関数の第二引数には「'w'」(write)と指定されているところです。

ちなみに、splitメソッドとはカンマで文字列を区切るために使われています。「'w'」と指定することによって、書き込みが可能になっているのです。

先ほどと同じstart.csvというファイルを使用しているので、以前の内容は"Good morning, Hello, Good night"という文字列に上書きされました。

CSVファイルの書き込み方法まとめ

  • csvモジュールをインポートする
  • モジュール名とプログラムの名前は区別する
  • csvに書き込むにはopen関数でファイル名と「w」を指定する
  • 書き込みはcsvモジュールwriter(ファイルオブジェクト)を使用する
  • 実際の書き込みはwriter row(配列)を使用する

CSVファイルを辞書型オブジェクトに格納する

では基本的な読み書きの方法を学んだところで、CSVファイルのより応用的な内容にも触れていきましょう。

csvファイルを読み込んだ後、辞書型オブジェクトなどに格納する方法をご紹介していきます。

以下の内容のdict.csvというファイルを用意します。

Country_name, Capital_city, other
Japan, Tokyo, Osaka
USA, Washington, NewYork

以下のコードをご覧ください。

import csv

with open('dict.csv', 'r') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row)

出力結果は以下の通りです。

OrderedDict([('Country_name', 'Japan'), (' Capital_city', ' Tokyo'), (' Other', ' Osaka')])
OrderedDict([('Country_name', 'USA'), (' Capital_city', ' Washington'), (' Other', ' NewYork')])

上のコードでは、csvモジュールのDictReaderクラスを使用し、辞書への変換を行いました。

読み込むCSVファイルの一行目が辞書のkey(Country_name, Capital_city, Otherなどがkey)となり、2行目以降のデータをひとつずつ取り出し、それらを辞書のvalueとしてkeyに紐づけています。

ご覧いただけるように、一行目の一番目の要素であるCountry_nameは、きちんと二行目の一番目であるJapanや、三行目の一番目であるUSAと組み合わさっています。

まとめ

今回は、Pythonにおける基本的なCSVファイルの読み書き方法をご紹介しました。さまざまなCSVファイルを読み書きを使いこなせるようになると、とても便利です。

この記事を参考にしながら、ぜひマスターしてくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Kotono

Kotono

イタリア在住15年目の22歳です。イタリアの大学で情報科学&応用数学を学んでいます。主にJavaScriptやPythonについての記事を書いたりしています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説