PythonでのCSVファイルの読み書き徹底解説|モジュールを使用して簡単にCSVファイルを扱おう!
 
          - システム
 エンジニア
- PythonにおいてのCSVファイルはどのように読み書きをするのでしょうか。
- プロジェクト
 マネージャー
- csvモジュールやpandasモジュールを使用して読み書きをします。
PythonでのCSVファイルの読み書き徹底解説

            今回は、PythonでのCSVファイルの読み書きについて説明します。CSVの読み書きには、csvモジュールやpandasモジュールを使用します。これらを使ったCSVファイルの扱い方について紹介します。
PythonでのCSVファイルの読み書きに興味のある方はぜひご覧ください。
            
csvモジュールで読み込み
PythonでのCSVファイルの読み込みについて紹介します。csvモジュールを使用します。以下の内容をsample.csvとして保存しておいてください。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         | 
                          name,age,gender,email
                         
                          ichiro,20,male,ichiro@email.com
                         
                          jiro,30,male,jiro@email.com
                         
                          hanako,40,female,hanako@email.com
                         | 
それでは、実際のソースコードを見てみましょう。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         
                          5
                         
                          6
                         
                          7
                         
                          8
                         
                          9
                         | 
                          import csv
                         
                          # CSVファイルのオープン
                         
                          with open ('sample.csv', 'r') as f:
                         
                              # データの読み込み
                         
                              reader = csv.reader(f)
                         
                              # 全ての行を出力
                         
                              for line in reader:
                         
                                  print(line)
                         | 
実行結果は以下のようになります。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         | 
                          ['name', 'age', 'gender', 'email']
                         
                          ['ichiro', '20', 'male', 'ichiro@email.com']
                         
                          ['jiro', '30', 'male', 'jiro@email.com']
                         
                          ['hanako', '40', 'female', 'hanako@email.com']
                         | 
ヘッダを読み飛ばす場合は以下のように記述します。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         
                          5
                         
                          6
                         
                          7
                         
                          8
                         
                          9
                         
                          10
                         | 
                          import csv
                         
                          # CSVファイルのオープン
                         
                          with open ('sample.csv', 'r') as f:
                         
                              # データの読み込み
                         
                              reader = csv.reader(f)
                         
                              header = next(reader) # ヘッダを読み飛ばす
                         
                              # 全ての行を出力
                         
                              for line in reader:
                         
                                  print(line)
                         | 
実行結果は以下のようになります。
| 
                          1
                         
                          2
                         
                          3
                         | 
                          ['ichiro', '20', 'male', 'ichiro@email.com']
                         
                          ['jiro', '30', 'male', 'jiro@email.com']
                         
                          ['hanako', '40', 'female', 'hanako@email.com']
                         | 
CSVファイルを読み込んだ後に、特定のデータにアクセスするには以下のように記述します。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         
                          5
                         
                          6
                         
                          7
                         
                          8
                         
                          9
                         
                          10
                         
                          11
                         
                          12
                         
                          13
                         
                          14
                         
                          15
                         
                          16
                         
                          17
                         
                          18
                         
                          19
                         | 
                          import csv
                         
                          # CSVファイルのオープン
                         
                          with open ('sample.csv', 'r') as f:
                         
                              # データの読み込み
                         
                              reader = csv.reader(f)
                         
                              header = next(reader) # ヘッダを読み飛ばす
                         
                              # 行の取得
                         
                              line = [row for row in reader]
                         
                              print(line[0])
                         
                              print(line[1][1])
                         
                          # CSVファイルのオープン
                         
                          with open ('sample.csv', 'r') as f:
                         
                              # 辞書として取得
                         
                              dict = [row for row in csv.DictReader(f, ['name','age','gender','email'])]
                         
                              print(dict[1])
                         
                              print(dict[2]['age'])
                         | 
実行結果は以下のようになります。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         | 
                          ['ichiro', '20', 'male', 'ichiro@email.com']
                         
                          30
                         
                          OrderedDict([('name', 'ichiro'), ('age', '20'), ('gender', 'male'), ('email', 'ichiro@email.com')])
                         
                          30
                         | 
このようにPythonでは、csvモジュールでCSVファイルの読み込みができます。
csvモジュールで書き込み
PythonでのCSVファイルの書き込みについて紹介します。csvモジュールを使用します。実際のソースコードを見てみましょう。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         
                          5
                         
                          6
                         
                          7
                         
                          8
                         
                          9
                         | 
                          import csv
                         
                          header = ['name','age','gender','email']
                         
                          data = [['ichiro',20,'male','ichiro@email.com'],['jiro',30,'male','jiro@email.com']]
                         
                          with open('sample2.csv', 'w') as f:
                         
                              writer = csv.writer(f, lineterminator='\n') # 改行コード指定
                         
                              writer.writerow(header)     # listの書き込み
                         
                              writer.writerows(data)      # 2次元配列の書き込み
                         | 
実行すると、sample2.csvが生成されます。catコマンドで中身を確認してみます。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         
                          5
                         | 
                          ~$ cat sample2.csv
                         
                          name,age,gender,email
                         
                          ichiro,20,male,ichiro@email.com
                         
                          jiro,30,male,jiro@email.com
                         
                          ~$
                         | 
CSVファイルに追記するには以下のように記述します。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         
                          5
                         
                          6
                         
                          7
                         | 
                          import csv
                         
                          data = ['hanako',40,'female','hanako@email.com']
                         
                          with open('sample2.csv', 'a') as f: # 追記モード(a)で書き込み
                         
                              writer = csv.writer(f, lineterminator='\n')
                         
                              writer.writerow(data)
                         | 
実行後、catコマンドで中身を確認してみます。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         
                          5
                         
                          6
                         | 
                          ~$ cat sample2.csv
                         
                          name,age,gender,email
                         
                          ichiro,20,male,ichiro@email.com
                         
                          jiro,30,male,jiro@email.com
                         
                          hanako,40,female,hanako@email.com
                         
                          ~$
                         | 
このようにPythonでは、csvモジュールでCSVファイルの書き込みができます。
pandasモジュールで読み込み
PythonでのCSVファイルの読み込みについて紹介します。pandasモジュールを使用します。実際のソースコードを見てみましょう。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         
                          5
                         
                          6
                         
                          7
                         
                          8
                         
                          9
                         
                          10
                         
                          11
                         
                          12
                         
                          13
                         
                          14
                         
                          15
                         
                          16
                         
                          17
                         
                          18
                         
                          19
                         
                          20
                         | 
                          import pandas as pd
                         
                          df = pd.read_csv('sample.csv')
                         
                          print(df)
                         
                          # カラム名を表示
                         
                          print(df.columns)
                         
                          # Index(['name', 'age', 'gender', 'email'], dtype='object')
                         
                          # name 列を表示
                         
                          print(df['name'])
                         
                          # 0    ichiro
                         
                          # 1      jiro
                         
                          # 2    hanako
                         
                          # Name: name, dtype: object
                         
                          # 2レコード目を表示
                         
                          print(df[2:3])
                         
                          #      name  age  gender             email
                         
                          # 2  hanako   40  female  hanako@email.com
                         | 
実行結果は以下のようになります。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         
                          5
                         
                          6
                         
                          7
                         
                          8
                         
                          9
                         
                          10
                         
                          11
                         | 
                               name  age  gender             email
                         
                          0  ichiro   20    male  ichiro@email.com
                         
                          1    jiro   30    male    jiro@email.com
                         
                          2  hanako   40  female  hanako@email.com
                         
                          Index(['name', 'age', 'gender', 'email'], dtype='object')
                         
                          0    ichiro
                         
                          1      jiro
                         
                          2    hanako
                         
                          Name: name, dtype: object
                         
                               name  age  gender             email
                         
                          2  hanako   40  female  hanako@email.com
                         | 
このようにPythonでは、pandasモジュールでCSVファイルの読み込みができます。
pandasモジュールで書き込み
PythonでのCSVファイルの書き込みについて紹介します。実際のソースコードを見てみましょう。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         
                          5
                         
                          6
                         
                          7
                         
                          8
                         
                          9
                         
                          10
                         
                          11
                         
                          12
                         
                          13
                         
                          14
                         | 
                          import pandas as pd
                         
                          # データの作成
                         
                          df =\
                         
                          pd.DataFrame([["name","age","gender","email"],
                         
                                        ["ichiro",20,"male","ichiro@email.com"],
                         
                                        ["jiro",30,"male","jiro@email.com"]] )
                         
                          # CSVの書き込み
                         
                          df.to_csv('sample3.csv', header=False, index=False)
                         
                          # CSVの追記
                         
                          df_add = pd.DataFrame([["hanako",40,"female","hanako@email.com"]])
                         
                          df_add.to_csv('sample3.csv', mode='a', header=False, index=False)
                         | 
実行後、catコマンドで中身を確認してみます。
| 
                          1
                         
                          2
                         
                          3
                         
                          4
                         
                          5
                         
                          6
                         | 
                          ~$ cat sample3.csv
                         
                          name,age,gender,email
                         
                          ichiro,20,male,ichiro@email.com
                         
                          jiro,30,male,jiro@email.com
                         
                          hanako,40,female,hanako@email.com
                         
                          ~$
                         | 
このようにPythonでは、pandasモジュールでCSVファイルの書き込みができます。
- システム
 エンジニア
- csvモジュールを使用した場合とpandasモジュールを使用した場合、それぞれの読み書きの方法がより理解できました。
- プロジェクト
 マネージャー
- PythonでのCSVファイルの読み書きをより理解するために、実際のソースコードを確認してみましょう。
まとめ
いかがでしたでしょうか。csvモジュールやpandasモジュールを使用した、CSVファイルの読み書きについて説明しました。
ぜひご自身でPythonのソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
          
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
          数多くのエンジニアが集まります。

- 
              スマホアプリから業務系システムまで スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。 
- 
              充実した研修制度 毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。 
- 
              資格取得を応援 スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。 
- 
              東証プライム上場企業グループ オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。 安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。 
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
              まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Python新着案件New Job
- 
              
              マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務月給41万~50万円東京都豊島区(池袋駅)
- 
              
              マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務月給29万~34万円東京都豊島区(池袋駅)
- 
              
              商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】月給50万~60万円東京都都内(-駅)
- 
              
              商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】月給25万~35万円東京都都内(-駅)
- 
              
              商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】月給50万~60万円東京都都内(-駅)
- 
              
              商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】月給25万~35万円東京都都内(-駅)




