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

プログラミング
Python学習初心者の方に向けて、CSVファイルの書き込み、それから読み込み方法についてご紹介しています。PythonのCSVファイルは、カンマ区切りのテキストファイルなので、テキストファイルとして読み込むことで、CSVモジュールよりも簡単に使うことが可能です。CSVの出力や入力を覚えて、Pythonでのデータ解析スキルを磨きましょう。
PythonでCSVファイルを読み書きする方法

AIや機械学習の分野でこれからの活躍がますます期待されているPythonですが、データ分析の分野でも注目されています。マーケティングや分析をする時に欠かせないのが「データの読み込み」です。Webスクレイピングをした後のデータ保存にCSVファイルが使われていて、これを読み取ったり書き込んだりすることは多いですよね。

この記事ではPythonの学習初心者の方に向けて、CSVファイルの書き込み、読み込み方法をご紹介していきます。

そもそもCSVとは?

CSVとは、Comma Separated Value の略称で、カンマ(,)で区切られた値が含まれているテキストファイルです。
そうは言ってもCSVファイルが具体的にどんなものかイメージできない方もいますよね。具体的には、以下のようにカンマで区切られているファイルのことを指します。

apple, banana, camera, diary, egg・・・

拡張子は「.csv」形式で、テキストエディタや、エクセルで開くことが可能です。
特にスクレイピングをよく行ったりする方は、扱い方などを一通り覚えておくと非常に便利です。

CSVファイルの読み込み

まずは、CSVファイルの読み込み方法からみていきましょう。
今回は、基本的な読み込み方法をご紹介したあとで、CSVファイルの具体的な読み込み例についてご紹介していきます。

基本的な読み込み方法

CSVファイルを読み込む時はまずCSVファイルを作成して、そのあとPythonプログラムにコードを書いてそれを実行します。

基本的な読み込み方法としては、以下のようなPythonプログラムを読み込んでいきます。

import csv

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

まず、CSVファイルを読み込む時には、import csv でCSVモジュールをインポートすることから始めます。その後、open関数で開くCSVファイルを割り当てます。この時、第二引数に「r(read)」を指定することで読み込みが可能になります。

そして、csv.reader()の第一引数にopen()で開いたファイルオブジェクトを設定します。そのあと、for文で反復処理をさせることによって、1行ずつデータを取得することが可能になります。

では、実際にファイルを読み込んでいきましょう。

CSVファイルの具体的な読み込み例

今回は、エクセルで簡単なCSVファイルを作ってみました。
Googleスプレッドシートでも作成することができるので皆さんもやってみましょう。

sample.csv

apple , banana, camera, diary, egg

上のファイルが、今回読み込むCSVファイルです。そして実行するプログラムは以下の通りです。

sample_csv.py

import csv

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

これら2つを同じ階層のディレクトリに保存して、コマンド(またはターミナル)を開いて、

python sample_csv.py

で実行してみましょう。

実行結果

['\ufeffapple', 'banana', 'camera', 'diary', 'egg']

このように出力されます。
\ufeffは、BOMと呼ばれるテキストの始まりを伝えるためのデータマークでCSV UTF-8で保存している場合、この形が出力されてしまいます。

これを消すためには、

  1. 普通のCSVファイルで保存しなおす
  2. コードを追加する

の2つの方法があります。

1の方法は、CSVファイルの保存形式を変更すればいいのでとても簡単に出来ます。
2の方は、以下のようにコードを追加してください。

import csv

with open('sample.csv', 'r',encoding = 'utf-8-sig') as f:
    reader = csv.reader(f)
    for line in reader:
        print(line)

encoding = 'utf-8-sig' を入れることによって、以下の実行結果になります。

実行結果

['apple', 'banana', 'camera', 'diary', 'egg']

\ufeffが消えましたね。
これが具体的なコードの読み込み例です。

CSVファイルへの書き込み

では、続いてCSVファイルへの書き込み例を見ていきましょう。
具体的な書き込み例は、以下の通りです。

基本的な書き込み方法

sample_csv2.py

import csv

word = "frog, god" 
words = word.split(',') 

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

以上が書き込み方法になります。

上のコードでは、書き込む内容をリストに保存して、その後ファイルに書き込む形式にしています。読み込む時との違いは、open関数の引数に、wが追加されている部分です。wと区切ることによって書き込みが可能になっているのです。

では、実際に書き込み例を見ていきましょう。

CSVファイルの具体的な書き込み例

では、早速先ほど作ったCSVファイルに書き込んでみましょう。
先ほど作ったプログラムをコマンド(もしくはターミナル)で実行していきます。

python sample_csv2.py

以上のコードを実行すると、ターミナル上ではなにを起こりません。CSVファイルを直接確認して、 apple , banana, camera, diary, eggが、frog, godに上書きされているかどうか確認してみましょう。

実行結果

frog, god

実行結果が以上のように表示されていたら、確実に上書きされている証拠です。
これで上書きが完了しました。

まとめ

今回は、Pythonを使ってCSVファイルの読み込み、書き込みを行う際の基本的な方法についてご紹介しました。Pythonは、色々な場面で利用出来ますが、データ分析で使う際にも非常に優秀です。

学習初心者の方は、本記事を参考にして、PythonでのCSVの読み込み、書き込みを実践してみてくださいね。


この記事のキーワードに関する勉強会・イベントを探す

TECH PLAYでは、ITエンジニア向けの勉強会・イベント情報を提供しています。
興味のある方はぜひご参加ください。


おすすめのコラム