はじめに
PandasのDataFrame型のデータを生成し、それをread_csvで読み出したりto_csvで保存するときのインデックスやヘッダーの状態を確認したいと思います。
開発環境
- Windows 10
- Python 3.10.5
確認
下のようなプログラムを実行してみます。
import pandas as pd
# インデックス、ヘッダーがあるDataFrame型のデータ
data_list = [[10, 20, 30, 40], [11, 21, 31, 41], [12, 22, 32, 42]]
df_list = pd.DataFrame(data_list, index=['data00', 'data01', 'data02'], columns=['clmn0', 'clmn1', 'clmn2', 'clmn3'])
# 生成されたdf_listを表示
print('df_list = ')
print(df_list)
df_list.to_csv('sample.csv')
# 単純にread_csvで読み出して表示
df_list_Default = pd.read_csv('sample.csv')
print ('df_list_Default = ')
print (df_list_Default)
インデックス及びヘッダーがあるDataFrame型のファイルdf_listを生成します。そしてこのファイルをprintで表示します。
df_list =
clmn0 clmn1 clmn2 clmn3
data00 10 20 30 40
data01 11 21 31 41
data02 12 22 32 42
このようにインデックスとヘッダーがついています。
このファイルをto_csvによりsample.csvとして保存します。念のため保存されたsample.csvをEXCELで確認してみます。
同じ内容であることが確認されました。次に単純にread_csvで読み出した後、printで表示します。
df_list_Default =
Unnamed: 0 clmn0 clmn1 clmn2 clmn3
0 data00 10 20 30 40
1 data01 11 21 31 41
2 data02 12 22 32 42
ここでわかることは、単純にread_csvで読み出すとヘッダーはヘッダーとして認識されるようですが、インデックスについては1つの列として扱われ、新たに数字でインデックスが追加されることになります。
# header=Noneを設定しread_csvで読み出して表示
df_list_HeaderNone = pd.read_csv('sample.csv', header=None)
print ('df_list_HeaderNone = ')
print (df_list_HeaderNone)
header=Noneを設定してread_csvを実行した場合、printで以下のように表示されます。
df_list_HeaderNone =
0 1 2 3 4
0 NaN clmn0 clmn1 clmn2 clmn3
1 data00 10 20 30 40
2 data01 11 21 31 41
3 data02 12 22 32 42
本来ヘッダーであったところは1つの行として認識され、新たに数字でヘッダーが追加されることになります。
# index_col=0を設定しread_csvで読み出して表示
df_list_IndexCol0 = pd.read_csv('sample.csv', index_col=0)
print ('df_list_IndexCol0 = ')
print (df_list_IndexCol0)
index_col=0を設定してread_csvを実行した場合、printで以下のように表示されます。
df_list_IndexCol0 =
clmn0 clmn1 clmn2 clmn3
data00 10 20 30 40
data01 11 21 31 41
data02 12 22 32 42
これで保存されたデータと同じ形式になりました。