CSVファイルでは、データの区切りをカンマ(,
)で表現しています。
類似したフォーマットに、カンマの代わりに半角スペースで区切るケースや、タブ区切りで区切るケース(TSVファイル)もあります。このような場合、read_csv()
では、引数sep
に区切り文字を指定することで正しく読み込めるようになります。
# 区切り文字を指定して読み込み
df = pd.read_csv(ファイルパス, sep=区切り文字)
またタブ区切りの場合、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 | |
---|---|
0 | 1001 佐藤 172 53 |
1 | 1002 田中 160 50 |
2 | 1003 鈴木 165 58 |
3 | 1004 高橋 170 59 |
カンマ区切り以外のファイルを読み込む場合は、引数sep
で区切り文字を指定します。今回の場合は半角スペースで区切られているので、” “ を指定します。実行すると、意図通りデータが4列で読み込まれます。
# 区切り文字に半角スペースを指定して読み込み
df_space = pd.read_csv("dataset/physical_measurement_space.txt", sep=" ",)
df_space
StudentID | Name | Height | Weight | |
---|---|---|---|---|
0 | 1001 | 佐藤 | 172 | 53 |
1 | 1002 | 田中 | 160 | 50 |
2 | 1003 | 鈴木 | 165 | 58 |
3 | 1004 | 高橋 | 170 | 59 |
次に、タブ区切りのファイル(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
StudentID | Name | Height | Weight | |
---|---|---|---|---|
0 | 1001 | 佐藤 | 172 | 53 |
1 | 1002 | 田中 | 160 | 50 |
2 | 1003 | 鈴木 | 165 | 58 |
3 | 1004 | 高橋 | 170 | 59 |
たとえば、Excelファイルを読み込む際はread_excel()
を使います。
※ read_excel()
を使うには、別途openpyxlなどのExcelを扱うためのパッケージをインストールする必要があります。
# Excelファイルの読み込み
df = pd.read_excel(Excelファイルのパス, sheet_name=シート名)
read_csv()
同様、read_excel()
でも引数index_col
、header
、names
などでファイルの読み込み方をカスタマイズできます。また、引数sheet_name
を使って読み込むシートを指定できます。
コメント