CSVファイルの読み込み 区切り文字

CSVファイルでは、データの区切りをカンマ(,)で表現しています。

類似したフォーマットに、カンマの代わりに半角スペースで区切るケースや、タブ区切りで区切るケース(TSVファイル)もあります。このような場合、read_csv()では、引数sepに区切り文字を指定することで正しく読み込めるようになります。

# 区切り文字を指定して読み込み
df = pd.read_csv(ファイルパス, sep=区切り文字)
https://images.pyq.jp/repo/prod/pandas_io_read_csv/read_csv_sep.jpg

またタブ区切りの場合、read_csv()の代わりにread_table()でも読み込めます。read_table()read_csv()によく似た関数で、区切り文字のデフォルトがカンマではなくタブになっています。

演習

まずは、catコマンドを使って今回使うファイルの中身を確認しましょう。

今回使うファイルは、カンマ区切り(,)ではなく、半角スペース区切りでデータが格納されています。

!cat dataset/physical_measurement_space.txt
StudentID Name Height Weight
1001 佐藤 172 53
1002 田中 160 50
1003 鈴木 165 58
1004 高橋 170 59

まずは、何もオプションを指定せずに読み込んでみましょう。デフォルトだとカンマ区切り(,)で列を識別するため、半角スペース区切りのファイルだとすべてのデータが1列として読み込まれてしまい、意図しない結果になってしまいます。

import pandas as pd

# デフォルトのまま読み込み
df_default = pd.read_csv("dataset/physical_measurement_space.txt")
df_default
StudentID Name Height Weight
01001 佐藤 172 53
11002 田中 160 50
21003 鈴木 165 58
31004 高橋 170 59

カンマ区切り以外のファイルを読み込む場合は、引数sepで区切り文字を指定します。今回の場合は半角スペースで区切られているので、” “ を指定します。実行すると、意図通りデータが4列で読み込まれます。

# 区切り文字に半角スペースを指定して読み込み
df_space = pd.read_csv("dataset/physical_measurement_space.txt", sep=" ",)
df_space
StudentIDNameHeightWeight
01001佐藤17253
11002田中16050
21003鈴木16558
31004高橋17059

次に、タブ区切りのファイル(TSVファイル) を読み込んでみましょう。catコマンドで、読み込み対象となるファイルの中身を確認します。

!cat dataset/physical_measurement.tsv
StudentID	Name	Height	Weight
1001	佐藤	172	53
1002	田中	160	50
1003	鈴木	165	58
1004	高橋	170	59

半角スペース同様、タブ(”\t”)の場合も引数sepを指定して読み込めます。

また、タブ区切りの場合はread_csv()の代わりに read_table() も使えます。使い方はread_csv()とほぼ同じですが、 read_table()ではデフォルトの区切り文字がタブ になっています。

実際にread_table()を使ってタブ区切りのファイルを読み込んでみましょう。次のコードを実行すると、引数sepが未指定でも正常に読み込めることがわかります。

# タブ区切りのファイルの読み込み
df_tab = pd.read_table("dataset/physical_measurement.tsv")
df_tab
StudentIDNameHeightWeight
01001佐藤17253
11002田中16050
21003鈴木16558
31004高橋17059

たとえば、Excelファイルを読み込む際はread_excel()を使います。

※ read_excel()を使うには、別途openpyxlなどのExcelを扱うためのパッケージをインストールする必要があります。

# Excelファイルの読み込み
df = pd.read_excel(Excelファイルのパス, sheet_name=シート名)

read_csv()同様、read_excel()でも引数index_colheadernamesなどでファイルの読み込み方をカスタマイズできます。また、引数sheet_nameを使って読み込むシートを指定できます。

コメント

タイトルとURLをコピーしました