Home

拙著「Pythonでデータ分析」の第3章「ファイル入出力」の補足

 

ファイル入出力のCSVファイルの場合Excelファイの場合の簡単なスクリプト例を用意した。スクリプトファイルなどは、圧縮ファイルc03files.zipにまとめた。ダウンロード展開して自由に利用されたい

 

 

CSVファイル

 

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ファイルに書きだす場合

 

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]}

 

この辞書型データをPandasDataFrame型に変換して書き出すスクリプトを次のように用意した。

 

print(pd.DataFrame(data_dict))

 

出力結果は以下のようである。

 

   番号  record

0  1       0

1  2      10

2  3      20

3  4      30

4  5      40

 

このDataFrame型のデータを次のスクリプトでファイル名MyData.csvCSVファイルに次のスクリプトで書き出した。

 

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ファイル

 

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.xlsxExcelで開くと図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ファイルに書きだす場合

 

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]}

 

この辞書型データをPandasDataFrame型に変換して書き出すスクリプトを次のように用意した。

 

print(pd.DataFrame(data_dict))

 

出力結果は以下のようである。

 

   番号  record

0  1       0

1  2      10

2  3      20

3  4      30

4  5      40

 

このDataFrame型のデータを、次のスクリプトでファイル名MyData.xlsxExcelファイルに書き出した。

 

with pd.ExcelWriter('MyData.xlsx') as f:

    pd.DataFrame(data_dict).to_excel(f, index=False)

 

保存したMyData.xlsxExcelで開くと図6のようである。

 

図6

 

 

 

Home