Python

PythonでCSVファイルの読み込みと書き込む方法について

By 2021年2月10日February 17th, 2021No Comments

こちらの記事では、PythonのCSVファイルの読み込みと書き込み方法について紹介しています。

CSVとはカンマ(,)で区切られた値が含まれているテキストファイルの事になります。

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト

PythonでCSVファイルを読み込み方法

CSVファイルを読み込むには、まず事前にCSVファイルを作成します。

sample.csv

1,2,3
11,12,13
21,22,23
31,32,33

今回は、このようなsample.csvというCSVファイルを作成しました。

CSVファイルを読み込むにはCSVモジュールをインポートします。CSVモジュールはPythonの標準ライブラリなので追加でインストールする必要はありません。下記のようにインポートします。

import csv

基本的なCSVファイルの読み込み方法としては下記のように書くとCSVファイルを行ごとにリスト形でデータを読み込む事ができます。

import csv

with open('sample.csv', 'r') as f:
    reader = csv.reader(f)
    for line in reader:
        print(line)

結果:

[‘1’, ‘2’, ‘3’] [’11’, ’12’, ’13’] [’21’, ’22’, ’23’] [’31’, ’32’, ’33’]

open関数で開くCSVファイルを指定しています。今回はsample.csvを指定しています。そして、第2引数にはファイルを読み込む意味の’r’を指定すると読み込む事ができます。

次にcsv.reader( )にopen( )で開いたファイルオブジェクトを指定します。with open(‘sample.csv’, ‘r’) as f:でas文を使う事によりopen(‘sample.csv’, ‘r’) の文が’f’という名前に置き換えてるのでcsv.reader( )の引数に’f’が指定されています。

そして、for文で処理をする事で1行ずつデータを取得できます。csv.reader( )はすべてリスト型で読み込まれました。

quoting=csv.QUOTE_NONNUMERICを使用するとCSVファイルの全ての列の数値をfloat型である小数点で読み込む事ができます。

with open("sample.csv") as f:
  for row in csv.reader(f, quoting=csv.QUOTE_NONNUMERIC):
    print(row)

結果:

[1.0, 2.0, 3.0] [11.0, 12.0, 13.0] [21.0, 22.0, 23.0] [31.0, 32.0, 33.0]

小数点で表示したい場合は、このようにquoting=csv.QUOTE_NONNUMERICを使う事ができます。

sample.csv

name,age,from
yamada,10,osaka
tanaka,20,tokyo
ueda,30,nagoya

このような文字列と数値が混在しているCSVファイルの場合は文字列として読み込みたいデータをダブルクォーテーションで囲まなければエラーになります。

"name","age","from"
"yamada",10,"osaka"
"tanaka",20,"tokyo"
"ueda",30,"nagoya"

このようにダブルクォーテーションで囲みます。

 結果:

[‘name’, ‘age’, ‘from’] [‘yamada’, ’10’, ‘osaka’] [‘tanaka’, ’20’, ‘tokyo’] [‘ueda’, ’30’, ‘nagoya’]

 ダブルクォーテーションで囲むことですべて表示する事ができました。

csv.reader( )はリスト型で結果が表示されていましたがcsv.DictReader( )を使うと辞書型でデータを表示させる事ができます。

with open('sample.csv', "r") as f:
    a = csv.DictReader(f)
    for row in f:
        print(row)

結果:

1,2,3

11,12,13

21,22,23

31,32,33


csv.DictReader( )は辞書型でデータを表示しています。csv.DictReader( )は行データが辞書型なのでカラム名を指定して取得すること等ができます。

PythonでCSVファイルを作成して出力する方法

CSVファイルの書き込みにはcsv.writer( )クラスを使うことで出力する事ができます。csv.writerの第1引数にopen( )で開いたファイルを指定します。そして、第2引数に書き込みを意味する’w’を指定します。

writerow( )で1行ずつ書き込む事ができます。引数にリストを入力します。

with open('sample.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(['name', 'age', 'from'])
    writer.writerow(['yamada', '10', 'osaka'])

結果:

name,age,from

yamada,10,osaka


sample.csvのファイルには上記の結果が出力されてCSVファイルが作成されているのが確認できます。既存のファイルに作成して出力をすると上書きされて元の内容は削除されます。

writerows( )を使うとリストの二次元配列をCSVファイルに書き込むできます。

profile = [["name","age","from"],["yamada",10,"osaka"], ["tanaka",20,"tokyo"],  ["ueda",30,"nagoya"]]

with open('sample.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerows(profile)
with open('sample.csv') as f:
    print(f.read())

結果:

name,age,from

yamada,10,osaka

tanaka,20,tokyo

ueda,30,nagoya


このようにCSVファイルに書き込む内容が多い場合にはwriterows( )を使うと便利な場合もあります。

まとめ

PythonのCSVファイルの読み込みと書き込みの方法についてでした。CSVはマーケティングや分析をする時などにCSVでのデータ保存やデータの書きこみをするのに使われる事もあります。以上、PythonのCSVファイルの読み込みと書き込み方法についてでした。

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト
HOSL

Author HOSL

More posts by HOSL