CSVファイルの読み書き
CSVファイルは"Comma separated values"の略称で、その名の通り値や項目をカンマ(,)で区切って記述された、通常はファイル名が.csv で終わるテキストファイルのことす。
Python でCSVファイルを読み書きする方法はいくつかあります。
目的や用途に応じて使い分けることになります。
Python 標準モジュールcsvを使う方法
csv.reader()/csv.writer()
数値計算を効率的に行うための拡張モジュールNumPyを使う方法
numpy.loadtxt() / numpy.genfromtxt()/ numpy.savetxt():
データ解析を支援するための拡張モジュールPandas を使う方法
read_csv() / read_table() / to_csv()
補足説明:
ファイル名の末尾部分のドット(.)に続く文字列を拡張子と呼びます、
例えば、Pythonスクリプトの.py、画像ファイルの .pngや.jpeg、
音楽デーの.mp3、CSVファイル(.csv)、JSONファイル(.json)、YAML(.yaml)などです。
Python 標準モジュールcsvを使う方法
csv.reader() と csv.writer() に open() で得たファイルオブジェクトを与えます。
code: 0311_csv_writer.py
import csv
with open('sample.csv', 'w') as f:
writer = csv.writer(f)
writer.writerows(data)
csv.writer() で返される writerオブジェクトの writerows()メソッドを使ってデータを書き出します。
code: 0312_csv_reader.py
import csv
with open('sample.csv') as f:
data = csv.reader(f)
for row in data:
print(row)
NumPy を使う方法
numpy は拡張モジュールなのでインストールする必要があります。
conda コマンドは 実行環境によっては pip コマンドを使う場合もあります。
code: bash
conda install numpy
pip install numpy
numpyを使うとCSVファイルの指定した部分を抜き出して読み込んだりすることができます。
code: 0313_csv_with_numpy_savetxt.py
import numpy as np
np.savetxt('sample.csv',
X=data, # 保存したい配列
delimiter=',' # CSVの区切り文字
)
numpy では読み込んだCSVファイルは arrayオブジェクトで返され、行列演算や集計処理などか簡単に処理できるようになります。
code: 0314_csv_with_numpy_loadtxt.py
import numpy as np
data = np.loadtxt('sample.csv',
delimiter=',', # CSVの区切り文字
skiprows=0, # 指定した行数をスキップ
usecols=(0,1,2) # 読み込みたい列番号
)
print(data)
Pandas を使う方法
Pandas は拡張モジュールなのでインストールする必要があります。
conda コマンドは 実行環境によっては pip コマンドを使う場合もあります。
code: bash
conda install pandas
pip install pandas
pandas を使うとデータ分析が容易になります。また、CSVファイルだけでなく、EXCELファイルや、JSONファイル、HTMLファイルの読み書きも行えます。
Pandas のDataFrameオブジェクトが持っている to_csv() メソッドを使ってCSVファイルに書き出します。
code: 0315_csv_with_pandas_tocsv.py
import pandas as pd
df = pd.DataFrame(data)
df.to_csv('sample.csv',header=None, index=False)
Pandas では読み込んだCSVファイルは Dataframeオブジェクトとして返され、データ分析が簡単に行えるようになります。
code: 0316_csv_with_pandas_readcsv.py
import pandas as pd
data = pd.read_csv('sample.csv', header=None)
print(data)