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回の授業を濃い時間にすることができます。
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についてもっと学びたい!という方にはこちらの記事もおすすめです。

