pandas:【CSV】読み込みと書き出し
前提
- Linuxコマンド
- Windowsに読み替えて実行も可能
- IPthonで実行する場合はコマンドの先頭に「!」を付ける
- 参考:Windows環境でLinuxコマンドが使えるようにする手順
- CSV
サンプルコード
CSV読み込み(データフレーム作成)
CVSファイル準備
!echo -e "20220101,34\n20220102,78\n20220103,99" > ./in.csv
!cat ./in.csv
20220101,34 20220102,78 20220103,99
- Linuxコマンドを利用して作成
- windowsの場合はテキストエディタを使って作成
CVSファイル読み込み
df = pd.read_csv(
'in.csv',
names=('Date', 'Value'), #列名を設定
index_col='Date', #index列を指定
parse_dates=True #index列(ここでは「Date」)をdatetime型に変換
)
print(df)
print(type(df))
Value Date 2022-01-01 34 2022-01-02 78 2022-01-03 99 <class 'pandas.core.frame.DataFrame'>
- 「DataFrame」型になっている
- index列に指定した「Date」が先頭列なので、簡単に指定できたみたい
データの確認
a = df[df.index=='2022-01-01']
b = a['Value']
print(a)
print(type(a))
print(b)
print(type(b))
Date 2022-01-01 34 <class 'pandas.core.frame.DataFrame'> Date 2022-01-01 34 Name: Value, dtype: int64 <class 'pandas.core.series.Series'>
- データが確認できる
- データの抽出方法は別途説明
- 補足
- データ型がそれぞれ「DataFrame」と「Series」
データフレームのCSV書き込み
CVSファイル準備
!echo -e "20220101,34\n20220102,78\n20220103,99" > ./in.csv
!cat ./in.csv
20220101,34 20220102,78 20220103,99
- Linuxコマンドを利用して作成(CSV読み込みの説明と同じ手順)
- windowsの場合はテキストエディタを使って作成
CVSファイル読み込み
df = pd.read_csv('in.csv', header=None)
print(df)
a = df[0][0]
b = df[1][0]
print(a)
print(type(a))
print(b)
print(type(b))
0 1 0 20220101 34 1 20220102 78 2 20220103 99 20220101 <class 'numpy.int64'> 34 <class 'numpy.int64'>
- header=None
- ヘッダなしで読み込み
- 列番号が[0,1]と振られている
- 補足
- どちらも数値型になっている
CSV出力と出力ファイルの確認
df.to_csv("./out.csv", index=False, header=False)
!ls -l ./out.csv
!cat ./out.csv
-rw-rw-r-- 1 futa futa 36 Mar 10 16:06 ./out.csv 20220101,34 20220102,78 20220103,99
- ファイル「out.csv」が作成されている
- windowsではエクスプローラーなどで確認
- index=False
- インデックス番号の列を出力しない
- header=False
- ヘッダを出力しない
