Python

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

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

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

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

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

まとめ

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

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

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

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

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

Pythonの辞書をマスターしよう!基本的な使い方から応用まで網羅Pythonの辞書を学習し始め、 「もっと詳しく知りたい」 「基本から応用までをまとめて知りたい」 と思う人も多い...
ファイル操作をマスターしよう!Pythonでの読み込み・書き込み方法を徹底解説!Pythonを学び始めて、Pythonでテキストファイルを扱いたいと思い始めた人も少なくないでしょう。 そこで今回はPythonでテキ...

Pythonの個別指導なら『Tech Teacher』

引用元:Tech Teacher

このBlogを運営するTech Teacherは、Pythonを学習する社会人を対象に、初心者から挫折した人まで、一人ひとりの目的や学習状況にあわせた個別指導を行っています。

また、オンライン指導も選べるので、自宅でも対面でも受講できます。

一人ひとりに最適化された完全マンツーマン指導を提供

完全マンツーマン指導で着実に身につく!

Tech Teacherでは専任の教師が完全マンツーマン指導を行います。
学習状況や目標をしっかり把握した教師が、生徒様のご要望もふまえながら最適なオーダーメイドの指導をご提供します。

お仕事と両立しながら続けられる!

Tech Teacherなら、受講日時や回数を生徒様のご都合に合わせて柔軟に調整することができます。
そのため、お仕事との両立がしやすく、プログラミング学習を継続的に学習することができます。忙しい合間にプログラミングを学びたいという方におすすめです。

授業料は受けた分だけ!

Tech Teacherでは、生徒様が受けた授業の時間分だけ後払いで請求させていただきます。そのため、気軽にプログラミングの学習を始めることができます

以下のボタンからさらに詳しい情報をご覧いただけます。