自分のキャリアをあれこれ考えながら、Pythonで様々なデータを分析していくブログです

pandasで様々なデータをデータフレームに読み込んでみよう(TSV編)

Python
Python

どうもヒノマルクです。
今回はCSVファイルではなくTSVとスペースで区切られたファイルを読み込んでみます。

import pandas as pd
pd.__version__
Out[0]
'1.3.4'
スポンサーリンク

TSVを読み込む

# API reference: https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html
df = pd.read_csv("/Users/hinomaruc/Desktop/notebooks/ドラえもん登場人物.tsv",header=None,names=["名前","誕生日"])
df
Out[0]
名前 誕生日
0 ドラえもん\t2112-9-3 NaN
1 野比 のび太\t1964-8-7 NaN
2 源 静香\t1964-5-2 NaN
3 骨川 スネ夫\t1964-3-28 NaN
4 剛田 武\t1964-6-15 NaN

CSVファイルを読み込むときと同じコードを使いましたが、上手く読み込めませんでした。
これは区切り文字をきちんと認識できていないからです。
区切り文字がコンマ以外のファイルは明示的にsepオプションで区切り文字を指定してあげる必要があります。
今回のファイルはTSV(タブで分けられたファイル)なので、\tと指定してあげます。
(タブ区切り以外にも スペース、\001、|などで区切りられている場合もあります。)

df = pd.read_csv("/Users/hinomaruc/Desktop/notebooks/ドラえもん登場人物.tsv",header=None,names=["名前","誕生日"],sep="\t")
df
Out[0]
名前 誕生日
0 ドラえもん 2112-9-3
1 野比 のび太 1964-8-7
2 源 静香 1964-5-2
3 骨川 スネ夫 1964-3-28
4 剛田 武 1964-6-15

今度はうまく読み込めました。

スポンサーリンク

スペース区切りもやってみる。

df = pd.read_csv("/Users/hinomaruc/Desktop/notebooks/ドラえもん登場人物.space",header=None,names=["名前","誕生日"],sep=" ")
df
Out[0]
名前 誕生日
0 ドラえもん 2112-9-3
1 野比 のび太
2 静香
3 骨川 スネ夫
4 剛田

「野比 のび太」の間にスペースが存在するため、区切られてしまいました。
これを解決するためには、区切り文字を変更するか、「野比 のび太」→ 「"野比 のび太"」のようにダブルクオテーションで囲む必要があります。
今回は各登場人物の名前をダブルクオテーションで囲んだファイルを作成しました。

df = pd.read_csv("/Users/hinomaruc/Desktop/notebooks/ドラえもん登場人物.space2",header=None,names=["名前","誕生日"],sep=" ")
df
Out[0]
名前 誕生日
0 ドラえもん 2112-9-3
1 野比 のび太 1964-8-7
2 源 静香 1964-5-2
3 骨川 スネ夫 1964-3-28
4 剛田 武 1964-6-15

無事スペースが含まれている名前が区切られず表示されるようになりました。

スポンサーリンク

参照元

https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html [pandas.read_csv — pandas 1.3.4 documentation

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