拙著「Pythonでデータ分析」の第3章「ファイル入出力」の補足
ファイル入出力のCSVファイルの場合とExcelファイルの場合の簡単なスクリプト例を用意した。スクリプトファイルなどは、圧縮ファイルc03files.zipにまとめた。ダウンロード展開して自由に利用されたい
CSVファイルを読み込むスクリプト例をリスト1のように用意した。CSVファイルに書き出す例は、読み込み例の説明の次に示す。
リスト1 CSVファイルからの読み込み
import pandas as pd
import numpy as np
with open('Data.csv', 'r') as f:
data = pd.read_csv(f)
print('data...\n', data)
print('keys...',[k for k in
data.keys()])
Data_V = []
for k in data.keys():
Data_V.append(data[k].values)
print('Data_V...')
for v in Data_V:
print(v)
CSVファイルData.csvをメモ帳で開くと図1のようになっている。
図1
Excelで開くと図2のようである。
図2
このファイルを、リスト1の次のスクリプトでdataに読み込んでいる。
with open('Data.csv', 'r') as f:
data = pd.read_csv(f)
dataの内容を次のprint文で書き出してみる。
print('data...\n', data)
以下の出力を得る。
data...
Data_ID V1 V2 V3 クラス
0 D_1 1 a
10 桜
1 D_2 2 b
20 梅
2 D_3 3 c
30 松
3 D_4 4 d
40 梅
4 D_5 5 e
50 桜
キーのリストを得るために、次のスクリプトを実行する。
print('keys...',[k for k in
data.keys()])
以下の出力を得る。
keys...
['Data_ID', 'V1', 'V2', 'V3', 'クラス']
dataから各キーに対応する値のリストをData_Vのリストに加えるスクリプトを次のように用意している。
Data_V = []
for k in data.keys():
Data_V.append(data[k].values)
Data_Vの内容を書き出すスクリプトを次のように用意している。
print('Data_V...')
for v in Data_V:
print(v)
出力結果は、以下のようである。
Data_V...
['D_1' 'D_2' 'D_3' 'D_4' 'D_5']
[1 2 3 4 5]
['a' 'b' 'c' 'd' 'e']
[10 20 30 40 50]
['桜' '梅' '松' '梅' '桜']
CSVファイルに書きだすスクリプト例を、リスト2のように作成した。
リスト2 CSVファイルへの書き出し
import pandas as pd
data_dict = {}
data_dict['番号'] = [f'{v+1}番' for v in range(5)]
data_dict['record'] = [v*10 for v in
range(5)]
print(data_dict)
print(pd.DataFrame(data_dict))
with open('MyData.csv', 'w') as f:
pd.DataFrame(data_dict).to_csv(f,
lineterminator='\n', index=False)
まず、CSVファイルに格納するデータを辞書型として次のスクリプトで作成している。
data_dict = {}
data_dict['番号'] = [f'{v+1}番' for v in range(5)]
data_dict['record'] = [v*10 for v in
range(5)]
作成した辞書型データdata_dictを次のスクリプトで書き出している。
print(data_dict)
出力結果は、以下のようである。
{'番号': ['1番', '2番', '3番', '4番', '5番'], 'record': [0, 10, 20, 30, 40]}
この辞書型データをPandasのDataFrame型に変換して書き出すスクリプトを次のように用意した。
print(pd.DataFrame(data_dict))
出力結果は以下のようである。
番号
record
0
1番 0
1
2番 10
2
3番 20
3
4番 30
4
5番 40
このDataFrame型のデータを次のスクリプトでファイル名MyData.csvのCSVファイルに次のスクリプトで書き出した。
with open('MyData.csv', 'w') as f:
pd.DataFrame(data_dict).to_csv(f, lineterminator='\n', index=False)
書き出したMyData.csvファイルをメモ帳で開くと図3のようである。
図3
Excelで開くと図4のようである。
図4
Excelファイルの読み込みスクリプト例をリスト3のように用意してみた。Excelファイルへの書き出し例は、読み込み例の次に示す。
リスト3 Excelからの読み込み
import pandas as pd
import numpy as np
with pd.ExcelFile('Data.xlsx') as f:
data = pd.read_excel(f)
print('data...\n', data)
print('keys...',[k for k in
data.keys()])
Data_V = []
for k in data.keys():
Data_V.append(data[k].values)
print('Data_V...')
for v in Data_V:
print(v)
ExcelファイルData.xlsxをExcelで開くと図5のようである。
図5
このファイルを、リスト3の次のスクリプトでdataに読み込んでいる。
with pd.ExcelFile('Data.xlsx') as f:
data = pd.read_excel(f)
dataの内容を次のprint文で書き出してみる。
print('data...\n', data)
以下の出力を得る。
data...
Data_ID V1 V2 V3 クラス
0 D_1 1 a
10 桜
1 D_2 2 b
20 梅
2 D_3 3 c
30 松
3 D_4 4 d
40 梅
4 D_5 5 e
50 桜
キーのリストを得るために、次のスクリプトを実行する。
print('keys...',[k for k in
data.keys()])
以下の出力を得る。
keys...
['Data_ID', 'V1', 'V2', 'V3', 'クラス']
dataから各キーに対応する値のリストをData_Vのリストに加えるスクリプトを次のように用意している。
Data_V = []
for k in data.keys():
Data_V.append(data[k].values)
Data_Vの内容を書き出すスクリプトを次のように用意している。
print('Data_V...')
for v in Data_V:
print(v)
出力結果は、以下のようである。
Data_V...
['D_1' 'D_2' 'D_3' 'D_4' 'D_5']
[1 2 3 4 5]
['a' 'b' 'c' 'd' 'e']
[10 20 30 40 50]
['桜' '梅' '松' '梅' '桜']
Excelファイルに書きだすスクリプト例を、リスト4のように作成した。
リスト4 Excelファイルへの書き出し
import pandas as pd
data_dict = {}
data_dict['番号'] = [f'{v+1}番' for v in range(5)]
data_dict['record'] = [v*10 for v in
range(5)]
print(data_dict)
print(pd.DataFrame(data_dict))
with pd.ExcelWriter('MyData.xlsx') as
f:
pd.DataFrame(data_dict).to_excel(f, index=False)
まず、Excelファイルに格納するデータを辞書型として次のスクリプトで作成している。
data_dict = {}
data_dict['番号'] = [f'{v+1}番' for v in range(5)]
data_dict['record'] = [v*10 for v in
range(5)]
作成した辞書型データdata_dictを次のスクリプトで書き出している。
print(data_dict)
出力結果は以下のようである。
{'番号': ['1番', '2番', '3番', '4番', '5番'], 'record': [0, 10, 20, 30, 40]}
この辞書型データをPandasのDataFrame型に変換して書き出すスクリプトを次のように用意した。
print(pd.DataFrame(data_dict))
出力結果は以下のようである。
番号
record
0
1番 0
1
2番 10
2
3番 20
3
4番 30
4
5番 40
このDataFrame型のデータを、次のスクリプトでファイル名MyData.xlsxのExcelファイルに書き出した。
with pd.ExcelWriter('MyData.xlsx') as
f:
pd.DataFrame(data_dict).to_excel(f, index=False)
保存したMyData.xlsxをExcelで開くと図6のようである。
図6