【Python】CSVファイルを読み書きする方法

  • 2019年7月3日
  • 2020年4月11日
  • Python

こんにちは!

皆さんはCSVファイルからデータを読み込んだり、 CSVファイルへデータを書き込みたいと思ったことはありますか?

CSVファイルはエクセルなどでも開くことができたり、よく使われているデータ形式なので、プログラミングを勉強している人なら触れたことがあるデータ形式ではないかと思います。

今回はPythonでCSVファイルを読み書きする方法として、以下の2つの方法を紹介します。

  • with文を用いる方法
  • with文を用いない方法

CSVファイルの読み込み

CSVファイルの読み込みには、「csvモジュール」を使用します。

csvモジュールはPythonの標準ライブラリなので、インストールの必要はありません。

今回はCSVファイルの読み込み・書き込み方法を、with文を用いる方法、with文を用いない方法の2通り紹介します。

with文については、以下の記事を参考にしましょう。

参考記事

こんにちは! 皆さんは「with文」というものをご存知ですか? with文は、with文を用いなくても他の書き方で書けるため、知っていても使い方は理解していない、といった方もいるかと思います。 with文はファイルのオー[…]

一緒に見る

with文を用いる方法

以下のプログラムは、with文を用いた、CSVファイルを読み込むプログラムです。

import csv

data1 = 'file1.csv'

with open(data1, 'r') as f:
    reader = csv.reader(f)
    header = next(reader)  # ヘッダーを読み飛ばす場合

    for row in reader:
        print(row)

実行結果(file1.csvに下記のデータが入っている場合)

['160', '60']
['170', '70']

with文を用いない方法

次のプログラムは、with文を用いない、CSVファイルを読み込むプログラムをです。

import csv

data1 = 'file1.csv'

f = open(data1, "r")
reader = csv.reader(f)
header = next(reader) # ヘッダーを読み飛ばす場合

for row in reader:
  print(row)
f.close()

実行結果(file1.csvに下記のデータが入っている場合)

['160', '60']
['170', '70']
with文を用いる場合と用いない場合の違いに注目してみましょう。

1.1のwith文を用いる場合との大きな違いがわかりますか?

そうです!最後に「f.close()」によってファイルを閉じる必要があります。

忘れないように注意してください。忘れん坊の方はwith文を用いるようにした方が良いかもしれませんねw

CSVファイルへの書き込み

CSVファイルへの書き込みも、「csvモジュール」を使用します。

with文を用いる方法

次のプログラムは、with文を用いた、CSVファイルへの書き込みを行うプログラムです。

import csv

data2 = 'file2.csv'

header = ['身長', '体重']
data = [[160, 60], [170, 70]] # 2次元配列

with open(data2, 'w') as f:
    writer = csv.writer(f, lineterminator='\n')
    writer.writerow(header)
    writer.writerows(data)

with文を用いない方法

次のプログラムは、with文を用いない、CSVファイルへの書き込みを行うプログラムです。

import csv

data2 = 'file2.csv'

header = ['身長', '体重']
data = [[160, 60], [170, 70]] # 2次元配列

f = open(data2, 'w')

writer = csv.writer(f, lineterminator='\n')
writer.writerow(header)
writer.writerows(data)

f.close()

作成されたfile2.csv(例)


これで現在のディレクトリにCSVファイルが作成されます。既に存在する場合は更新されます。

CSVファイルの読み込みの場合と同様に、with文を用いる場合は、f.close() でファイルを閉じるのを忘れないように注意してください。

まとめ

今回はPythonでCSVファイルを読み書きする方法について紹介しました。

  • with文を用いる方法
     →ファイルを閉じる記述の必要なし
  • with文を用いない方法
     →ファイルを閉じる記述の必要あり

CSVファイルは、データ処理などでよく使われるデータ形式です。Pythonで多く実装される機械学習などでもよく使われるため、Pythonを使用する上で、押さえておくべき方法です。

しっかりとCSVファイルを読み書きする方法を押さえておきましょう!