pandasを用いたcsvファイルの操作方法
ヘッダー付きでデータをcsvファイルに保存
Pythonのリストからpandas
データフレームを作成し、そのデータをヘッダー付きのcsvファイルに保存するプログラムを書く。
データの内容
名前と年齢と在住している都市のデータを扱う。
- Name:人の名前(文字列)
- Age:年齢(整数)
- City:都市(文字列)
データは次の通りです:
- Alice, 30, New York
- Bob, 25, Los Angeles
- Charlie, 35, Chicago
ファイル名
people_with_header.csv
条件
- ヘッダーを含めるように保存すること。(ヘッダーとは、csvファイルやデータフレームの最初の行に含まれる列名(タイトル)のこと。今回で言えば、Name, Age, City である。)
import pandas as pd
data = {'Name':["Alice", "Bob", "Charlie"],
"Age":[30, 25, 35],
"City":["New York", "Los Angels", "Chicago"]}
df = pd.DataFrame(data)
df.to_csv("people_with_header.csv")
結果
ヘッダーなしでデータを読み込む
people_with_header.csv
ファイルをヘッダーなしで読み込む。ヘッダーを無視して読み込むには、header=None
を使用する。
# CSVファイルをヘッダーなしで読み込む
data_read = pd.read_csv("people_with_header.csv", header=None)
print(data_read)
0 1 2 3
0 NaN Name Age City
1 0.0 Alice 30 New York
2 1.0 Bob 25 Los Angels
3 2.0 Charlie 35 Chicago
ポイント
- csvファイルの最初の行(
Name, Age, City
)がデータの一部として読み込まれる。 - 最初の列は、元々のインデックス列である。
to_csv()
のデフォルト設定でインデックスも保存されたため、この列が含まれている。
インデックス列を含めたくない場合
to_csv()
でindex=False
としてcsvファイルに保存することで、余計なインデックス列が含まれなくなる。
# CSVファイルに保存(インデックスを含めない)
df.to_csv("people_with_header_no_index.csv", index=False)
# 再びヘッダーなしで読み込む
data_read_no_index = pd.read_csv("people_with_header_no_index.csv", header=None)
print(data_read_no_index)
結果
0 1 2
0 Name Age City
1 Alice 30 New York
2 Bob 25 Los Angeles
3 Charlie 35 Chicago
まとめ
-
header=None
を指定することで、csvファイルの最初の列をヘッダーとして扱わず、全ての行をデータとして読み込む。 -
to_csv()
のindex
パラメータを適切に設定することで、インデックス(行番号)を保存するかどうかを制御できる。 -
index=False
とすることで、csvファイルにインデックスを含めずに、余分な行が生成されないようにできる。