Python 文法・関数

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

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

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

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


本ブログを運営しているTech Teacherは、業界初のプログラミング家庭教師サービスを提供しています。

その特徴は完全マンツーマン・フルオーダーメイド指導・30分ごとの利用が可能であるところです。

完全マンツーマン

Tech Teacherのマンツーマン指導なら理解できない箇所は何度も分かるまで説明を受けることができます。

フルオーダーメイド指導

Tech Teacherではあらかじめ決められたカリキュラムはありません。そのためご自身の学習状況や学びたいことに合わせた指導が可能です。

一括支払いなし

一般的なプログラミングスクールの料金体制はカリキュラムに対して一括払いですが、Tech Teacherでは利用した分だけの支払いとなります。そのため、大きな費用負担がなく気軽に始めることができます。

Pythonをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

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つの魅力~」

本Blogを運営するプログラミング家庭教師Tech Teacherは以下のような疑問をすべて解決できるサービスです。

・Pythonの応用をもっと学びたいが、値段が高いスクールに通うのは気が引ける

・目的別に短時間の利用ができるサービスがあったらいいな

比較対象 Tech Teacher プログラミングスクールA社
受講形態
1対1

1対3~5
担当教師
担任教師
×
講座別の講師
カリキュラム
自分専用指導

全員指導
仕事・学業との両立
可能
×
不可能
メンター制度
担任教師

異なる担当
料金
授業分だけ
×
一括払い
初期費用
入会金
22,000円
×
一括払い
528,000円
シミュレーション
(3ヶ月90分の指導を週1で行う)

164,500円
×
528,000円

以下、Tech Teacherの3つの魅力を紹介します。

Pythonをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

1.効率的な学習スタイル

一人のためだけの指導~1対1の完全個別指導~

一般的なプログラミングスクールでは大人数の対面講義や、録画講義の視聴またはオンラインでの受講がメインです。そうなると学習しながら生じた疑問をすぐに聞くことができずに、先に進んでしまい内容をうまく理解できなかったり、作業がうまく進まなかったりします。

家庭教師であれば、マンツーマンのため自分の課題にだけ焦点を当てて指導を受けられるので、1回の授業を濃い時間にすることができます。

無駄のない学習~フルオーダーメイド~

Tech Teacherは一般的なプログラミングスクールと異なり、あらかじめ決められたコースやカリキュラム設定がありません。
一般的なプログラミングスクールのカリキュラムでは、自分が本当に学習したいことを学ぶのにいくつか他の講義を受けなければなりません

Tech Teacherでは生徒様の現状の習熟度・目的・期間に応じてお悩みにダイレクトに刺さる授業を展開し、最短で目標となるゴールを目指せます。

2.自分のペースで学習できる

必要な分だけ~従量課金モデル~

Tech Teacherでは、他にはない「短時間(30分ごと)」の利用が可能です!勉強していてちょっとわからないところ、プログラミング学習のモチベーション維持など様々な疑問や悩みを解決することができます。
授業を受けた分だけ後払いする料金体系(3,960円〜 / 30分)のため、必要な期間に必要な分だけ受講できます。

好きな時間で~相性のいい教師の紹介~

Tech Teacherではあらゆるニーズに対応できる教師陣がいるため、生徒様の希望条件に最適な教師を紹介します。

Tech Teacherを受講している方のほとんどが仕事をしている社会人の方です。TechTeacherの家庭教師なら受講日時や回数を、生徒様のご都合に合わせて柔軟に調整することができ、スキルだけでなく都合の良い時間で指導できる教師を選べます。

3.確実に身につく

挫折しない~担任教師の継続指導~

オンライン・オンデマンドの講義の視聴形態だと、学習に対するモチベーションの維持が課題となり、当初の予定よりも受講期間が伸びたり、挫折したりする恐れがあります。

Tech Teacherでは、担任教師が生徒と二人三脚で学習をするため、学習が大変なときも寄り添ったサポートを受けられます。

具体的には学習計画の管理や受講目的を明確にした上で中間目標を設定し、それに向けた学習の指導をすることでモチベーションの維持を図ります。

いつでも質問できる~チャットサポート(オプション)~

担当教師は授業の時間以外に、チャットサービスを利用して、自分で学習しているときに生じた疑問をすぐに質問して解決することができます。

Javaをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

Tech Teacherへのお問い合わせ

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

まとめ

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

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

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

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

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

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