Data Science|Basics

マスターしよう!PythonでのCSVファイル操作方法を徹底解説!

Pythonを学習し始めた方で、CSVの扱いでつまずいている人もいるでしょう。

「PythonにおけるCSVの読み書きについて正確な方法が知りたい」
「CSVの読み書きの応用が知りたい」

このような悩みを抱えている方に、CSVの読み書きの基本から応用方法まで詳しく解説します。


本ブログを運営しているTech Teacherは、
プログラミング家庭教師サービスを運営しています。
完全マンツーマン・フルオーダーメイド
あなたが必要な指導を提供します。

PythonのCSVとは

「CSV」とは、”Comma Separated Value”の略称で、「 , 」で区切ってデータを並べたファイル形式を指します。CSVファイルはアプリケーション間でデータをやり取りするときに使用されます。

CSV形式のファイルはメモ帳などのテキストエディタで作ることが可能で、以下のように1行の文字列を半角カンマで複数の項目に分割して記述します。

1. name , street address , birthday , pthone numder

ファイルの拡張子は「.csv」です。Excelやテキストファイルで開くことができ、編集も可能です。CSVファイルはよく使用されるためしっかり覚えておきましょう。

【入力】PythonのCSVファイル読み込みの基本と応用

PythonでCSVファイルを取り扱うには「csvモジュール」を使用するのが一般的です。モジュールを使うことによって、CSVファイルの読み込み・書き込みに関するさまざまな操作を素早く進めることができます。

まず、csvモジュールをインポートするところからスタートしてみましょう。csvモジュールのインポート方法は以下の通りです。

1 import csv

PythonでCSVファイルを扱う際には最初にcsvモジュールをインポートする必要があるので覚えておきましょう。

CSVファイルの読み込みにはcsvモジュール内の「csv.readerクラス」を使用します。

基本的な使い方

実際のコードを使って基本的な使い方を説明していきます。

1. import csv
2.
3. with open ( ‘csvファイル’ , ‘r’ ) as f :   # ’r’=読み込み
4.  reader = csv . reader ( f )
5.  for line in reader :
6.  print ( line )

PythonでCSVファイルを扱うには、まずopen関数でファイルを取り込む必要があります。
上の例のように、第1引数に開くCSVファイルを、第2引数に「’r’」を指定することで読み込みができるようになります。

そして、「csv . reader ( )」の引数にopen( )で開いたファイルオブジェクト「f」を渡してfor文で反復処理させることによって行を1つずつ取得することができます。

CSVファイルの具体例

次のCSVファイル「sample . csv」を読み込んでみましょう。

#example.csv
red , blue , green , purple , black
apple , grape , banana , orange , strawberry
cat , dog , pig , tiger , elephant
1.  import csv   # CSVモジュールの読み込み
2.
3.  with open ( ‘example . csv ‘ , ‘r’ ) as f :   # ファイルを開く
4.  reader = csv . reader ( f )   # ファイルからデータを読み込む
5.  for line in reader :   # for文で1行ずつ取得する
6.  print ( line )   # lineの中身を表示
7.
8. # 実行結果
9. [ ‘red’ , ‘blue’ , ‘green’ , ‘purple’ , ‘black’ ]
10. [ ‘apple’ , ‘grape’ , ‘banana’ , ‘orange’ , ‘strawberry’ ]
11. [ ‘cat’ , ‘dog’ , ‘pig’ , ‘tiger’ , ‘elephant’ ]

このように、各行のデータを要素に持ったリストが取得できました。

行・列・要素を取得

CSVファイル全体を1つの二次元リストに格納することもできます。

1. with open(“example.csv”, ‘r’) as f:
2. reader = csv.reader(f)
3. line = [row for row in reader]

行を取得する方法は下記の通りです。

1. print ( line [ 1 ] )
2. # 実行結果
3. [ ‘apple’ , ‘grape’ , ‘banana’ , ‘orange’ , ‘strawberry’ ]

要素を取得する方法は下記通りです。

1. print ( line [ 1 ] [ 1 ])
2. # 実行結果
3. ’grape’

また、列を取得したい場合は行と列を入れ替える転置を行ってから「インデックス[ ]」で指定するとできますよ。

区切り文字を指定する

「csv.reader( )」は、区切り文字を「 , 」として扱うのがデフォルトです。これはCSVファイルを念頭に置いているためですが、時には次のようなファイルを扱いたい場合があります。

#example.txt
red blue green purple black
apple grape banana orange strawberry
cat dog pig tiger elephant

このファイルでは半角スペースでデータが区切られています。これはCSVファイルではなくTXTファイルとして保存されていますが、csvモジュールを使えばこのようなデータを処理することも可能です。

1. with open (’example . txt’ , ‘r’ ) as f :
2.      reader = csv . reader ( f , delimiter = ‘ ’ ) #デリミタに半角スペースを指定
3.      line = [ row for row in reader ]
4.
5. print ( line )
6. #  実行結果
7. [[ ’red’, ‘blue’, ‘green’, ‘purple’, ‘black’ ] , [ ’apple’, ‘grape’, ‘banana’, ‘orange’, ‘strawberry’ ] , [ ’cat’, ‘dog’, ‘pig’, ‘tiger’, ‘elephant’ ] ]

このように、csv.reader()の第2引数として「delimiter = 区切り文字」を指定することで、区切り文字で区切られたデータを処理することができます。
上の例では区切り文字として半角スペース「’ ’」を指定しています。

辞書として読み込み

各行を辞書として読み込むには「csv.DictReader」を使用します。通常のcsv.readerのように動作しますが、読み込んだ情報を辞書にマッピングします。

1. # CSVファイル「examplebirthday . csv」
2. name , department , birthday
3. Adam ,Engineering Department , July 7
4. Alice , Office work , January 1

上記のファイルを辞書として読み込んでみましょう。

1.  import csv
2.
3.  with open ( ‘exampledirthday . csv’ , ‘r’ ) as csv _ file :
4.  csv _ reader = csv . DictReader ( csv _ file )
5.   line _ count = 0
6.   for row in csv _ reader :
7.   if line _ count == 0
8.   print ( f ‘ Column names are {‘ , ‘ . join ( row ) } ‘ )
9.  line _ count += 1
10. print ( f ’ \t { row [ ‘name’ ] } works in the { row [ ‘department’ ] }department , and was born in { row [ ‘birthday’ ] } . ‘ )
11. line _ count += 1
12. print ( f ‘ Processed { line _ count } lines . ‘ )
13.
14. # 実行結果
15. Column names are name , department , birthday month
16.  Adam works in the Engineering Department department , and was born in July 7 .
17.   Alice works in the Office work department , and was born in January 1 .

このように文字列のリストを処理するのではなく、csvデータを辞書に直接読み込むこともできますよ。

【出力】PythonのCSVファイル書き込みの基本と応用

CSVファイルの書き込みにはcsvモジュール内の「csv . writerクラス」を使用します。

基本的な使い方

「writerow( )メソッド」を使用することによって、csvファイルに1行の書き込みができます。

1.  import csv
2.
3.  word = “red , blue”
4.  words = word . split ( ‘,’ )
5.
6.  with open (‘example.csv’ , ‘w’) as f :    # ’w’=書き込み
7.  writer = csv . writer ( f )
8.   writer . writerow ( words )
9.
10. # 実行結果
11. red , blue

上記のようにopen( )の第2引数に「’w’」を指定することによって書き込みができるようになります。

追記する方法

CSVファイルにデータw追加するには、open関数の第2引数に「’a’」を指定します、

1. with open ( ‘example . csv’ , ‘a’ ) as f :   # ’a’=追記
2.  writer = csv . writer ( f )
3 writer . writerow ( [ ‘追記したいもの’ } )

ファイルが存在する場合は末尾に追加され、ファイルが存在しない場合は新しくファイルが作成されますよ。

区切り文字を指定する

CSVファイルによく似たファイル形式に「TSVファイル」があります。
CSVの「C」が「コンマ」の略だったのに対して、「T」は「タブ」の略です。その名の通り、TSVファイルとはタブでデータを区切ったファイル形式になります。

TSVファイルとして保存したい場合は、次のようにcvs . writer( )の第2引数を「delimiter=’\t’」とするといいですよ。

1.  with open (’example . tsv’ , ’w’) as f :
2.     writer = csv . writer ( f , delimiter=’\t’)
3.     writer.writerow ( line )
4.
5.  with open (’example . tsv’) as f :
6.      print ( f . read( ) )
7.  # 実行結果
8.  ‘red’  ’blue’ ’green’ ’purple’ ’black’
9.  ’apple’  ’grape’ ’banana’ ‘orange’ ‘strawberry’
10. ’cat’  ’dog’ ’pig’ ’tiger’ ’elephant’

辞書として書き込み

「csv . DictWriter」は各行に辞書を書き込みます。

1.  import csv
2.
3.  with open ( ‘example . csv’ , ‘w’ ) as csv _ file :
4.  fieldnames = [ ‘name’ , ‘dept’ , ‘birth’ ]
5.   writer = csv . DictWriter ( csv _ file , fieldnames = fieldnames )
6.
7.   writer . writeheader ( )
8.   writer . writerow ( { ‘name’ : ‘Adam’ , ‘dept’ : ‘Engineering Department’ , ‘birth’ : ‘July 7 ‘ } )
9.   writer . writerow ( { ‘name’ : ‘Alice’, ‘dept’ : ‘Office work’ , ‘birth’ : ‘January 1’ } )
10.
11. # 実行結果
12. name , dept , birth
13. Adam , Engineering Department , July 7
14. Alice , Office work , January 1

『Tech Teacher』3つの魅力

魅力1. オーダーメイドのカリキュラ

『Tech Teacher』では、決められたカリキュラムがなくオーダーメイドでカリキュラムを組んでいます。「質問だけしたい」「相談相手が欲しい」等のご要望も実現できます。

    魅力2. 担当教師によるマンツーマン指導

    Tech Teacherでは完全マンツーマン指導で目標達成までサポートします。
    東京大学を始めとする難関大学の理系学生・院生・博士の教師がが1対1で、丁寧に指導しています。
    そのため、理解できない箇所は何度も分かるまで説明を受けることができます。

    魅力3. 3,960円/30分で必要な分だけ受講

    Tech Teacherでは、授業を受けた分だけ後払いの「従量課金制」を採用しているので、必要な分だけ授業を受講することができます。また、初期費用は入会金22,000円のみです一般的なプログラミングスクールとは異なり、多額な初期費用がかからないため、気軽に学習を始めることができます。

    まとめ

    ・魅力1. 担当教師によるマンツーマン指導

    ・魅力2. オーダーメイドのカリキュラム

    ・魅力3. 3,960円/30分で必要な分だけ受講

    質問のみのお問い合わせも受け付けております。

    まとめ

    今回、CSVの読み書きの基本から応用方法まで詳しく説明してきましたがいかがでしたでしょうか。

    今回の要点をまとめると以下のようになります。

    • CSVとはデータを「 , 」で区切ったファイル
    • PythonでCSVファイルを扱うには「csvモジュール」を使用
    • CSVファイルの読み込みには「csv . readerクラス」を使用
    • CSVファイルの書き込みには「csv . writerクラス」を使用

    学習し始めたばかりだとつまずいてしまうこともあるでしょう。スムーズに学習を行えるように、しっかり理解を深めておきましょう。

    Pythonについてもっと学びたい!という方にはこちらの記事もおすすめです。

    https://www.tech-teacher.jp/blog/python-dictionary/

    ファイル操作をマスターしよう!Pythonでの読み込み・書き込み方法を徹底解説!Pythonを学び始めて、Pythonでテキストファイルを扱いたいと思い始めた人も少なくないでしょう。 そこで今回はPythonでテキ...