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クラス」を使用

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

プログラミングの家庭教師『Tech Teacher』


引用元:Tech Teacher

「スクールに通い続ける自信がない…」
「時間がなくてスクールに通えない…」

そんな方にはプログラミングの家庭教師『Tech Teacher』がおすすめです。
Tech Teacherはマンツーマン指導なので、生徒様一人ひとりに最適な指導を行うことができます。また、オンライン指導も可能なので、全国どこにいても家庭教師の授業を受けることができます。

Tech Teacherの3つの特徴


生徒様に最適化されたマンツーマン指導
完全マンツーマンの指導なので、生徒様の目的・学習状況・ご要望に合わせて、最適な指導をご提供いたします。

指導力・人柄・相性の優れた教師のご紹介
Tech Teacherには採用率20%の選考を突破した、指導力の高い教師が在籍しています。また、選考では指導力だけではなく人柄も重視しております。

1,000人の教師が在籍!幅広い指導に対応可能
業界トップレベルの1,000人の教師が在籍しています。そのため、幅広い言語・ツール・目的に対応することができます。

家庭教師ならではの5つの魅力


オーダーメイドのカリキュラム
生徒様一人ひとりに習熟度・目的・期間に応じて最適なカリキュラムを提供いたします。

きめ細やかなフォローが可能
生徒様からのご要望にきめ細やかに対応し、学習計画や勉強法などの指導もできるので、普段の勉強も捗ります。

習い事・学業・お仕事との両立が簡単
教室に通う必要がないので親御様の送迎も不要です。授業時間・頻度を生徒様のご都合に合わせて自由に調節することができます。

自分のペースで進められる
生徒様の理解度や意欲に応じて授業のスピードを調節できます。不明点や疑問点は都度立ち止まって解消できるので、着実に理解して進むことができます。

すぐ質問できるから挫折しない
先生を独り占めできるので、周りの目を気にすることなく分からないところをいつでも質問できます。

Tech Teacherへのお問い合わせ

無料体験授業・資料請求のお問い合わせはこちらから

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