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

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

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

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

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

なお、Pythonの記事については、こちらにまとめています。

目次

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文については、こちらの記事で詳しく解説されているのでぜひご覧ください。

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ファイルを読み書きを使いこなせるようになると、とても便利です。

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

この記事を書いた人

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

目次