タブ区切りデータ、コンマ区切りデータ等の読み込み

In [ ]:
# データフレーム操作に関するライブラリをインポートする
import pandas as pd
In [ ]:
# URL によるリソースへのアクセスを提供するライブラリをインポートする。
# import urllib # Python 2 の場合
import urllib.request # Python 3 の場合

「ニューヨークの大気状態観測値」のデータを読み込んでみましょう。 (詳細

In [ ]:
# ウェブ上のリソースを指定する
url = 'https://raw.githubusercontent.com/maskot1977/ipython_notebook/master/toydata/airquality.txt'
# 指定したURLからリソースをダウンロードし、名前をつける。
# urllib.urlretrieve(url, 'airquality.txt') # Python 2 の場合
urllib.request.urlretrieve(url, 'airquality.txt') # Python 3 の場合
In [ ]:
# データの読み込み
df1 = pd.read_csv('airquality.txt', sep='\t', index_col=0) 
In [ ]:
# 読み込んだデータの確認
df1

うまく読み込めました。

次に、「好きなアイスクリームアンケート」のデータを読み込んでみましょう。 (詳細

In [ ]:
# ウェブ上のリソースを指定する
url = 'https://raw.githubusercontent.com/maskot1977/ipython_notebook/master/toydata/icecream_chosa.txt'
# 指定したURLからリソースをダウンロードし、名前をつける。
# urllib.urlretrieve(url, 'icecream_chosa.txt') # Python 2 の場合
urllib.request.urlretrieve(url, 'icecream_chosa.txt') # Python 3 の場合
In [ ]:
# データの読み込み
df2 = pd.read_csv('icecream_chosa.txt', sep='\t', index_col=0) 
In [ ]:
df2

上の方法では、「好きなアイスクリームアンケート」のデータがうまく読み込めていません。原因は、実際のデータ区切り文字が「 」(空白)なのに、データの読み込み時に「sep='\t'」(データ区切り文字はタブ)と指定したからです。では改めて、データ区切り文字に空白を指定して読み込んでみましょう。

In [ ]:
# データの読み込み
df2 = pd.read_csv('icecream_chosa.txt', sep='\s+', index_col=0) 
In [ ]:
df2

うまく読み込めました。

次に、「ワインの品質」のデータを読み込んでみましょう。 (詳細

In [ ]:
# ウェブ上のリソースを指定する
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'
# 指定したURLからリソースをダウンロードし、名前をつける。
# urllib.urlretrieve(url, 'winequality-red.csv') # Python 2 の場合
urllib.request.urlretrieve(url, 'winequality-red.csv') # Python 3 の場合
In [ ]:
# データの読み込み
df3 = pd.read_csv('winequality-red.csv', sep='\t', index_col=0) 
In [ ]:
df3

上の方法では、「ワインの品質」のデータがうまく読み込めていません。原因は、実際のデータ区切り文字が「;」(セミコロン)なのに、データの読み込み時に「sep='\t'」(データ区切り文字はタブ)と指定したからです。では改めて、データ区切り文字にセミコロンを指定して読み込んでみましょう。

In [ ]:
# データの読み込み
df3 = pd.read_csv('winequality-red.csv', sep=';', index_col=0) 
In [ ]:
df3

うまく読み込めたように見えるかもしれませんが、不十分です。第1列目(いちばん左)のデータが、インデックス番号として取り扱われています。このデータにはインデックス番号が指定されていませんので、次のようにして読み込みましょう。

In [ ]:
# データの読み込み
df3 = pd.read_csv('winequality-red.csv', sep=';') 
In [ ]:
df3

うまく読み込めました。

次は、「あわびのデータ」のデータを読み込んでみましょう。 (詳細

In [ ]:
# ウェブ上のリソースを指定する
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data'
# 指定したURLからリソースをダウンロードし、名前をつける。
# urllib.urlretrieve(url, 'abalone.data') # Python 2 の場合
urllib.request.urlretrieve(url, 'abalone.data') # Python 3 の場合
In [ ]:
# データの読み込み
df4 = pd.read_csv('abalone.data', sep='\t', index_col=0) 
In [ ]:
df4

上の方法では、「あわびのデータ」がうまく読み込めていません。原因は、実際のデータ区切り文字が「,」(コンマ)なのに、データの読み込み時に「sep='\t'」(データ区切り文字はタブ)と指定したからです。では改めて、データ区切り文字にコンマを指定して読み込んでみましょう。

In [ ]:
# データの読み込み
df4 = pd.read_csv('abalone.data', sep=',', index_col=0) 
In [ ]:
df4

うまく読み込めたように見えるかもしれませんが、不十分です。第1列目(いちばん左)のデータが、インデックス番号として取り扱われています。このデータにはインデックス番号が指定されていませんので、次のようにして読み込みましょう。

In [ ]:
# データの読み込み
df4 = pd.read_csv('abalone.data', sep=',') 
In [ ]:
df4

うまく読み込めたように見えるかもしれませんが、不十分です。第1行目(いちばん上)のデータが、ヘッダ行として取り扱われています。このデータにはヘッダ行が指定されていませんので、次のようにして読み込みましょう。

In [ ]:
# データの読み込み
df4 = pd.read_csv('abalone.data', sep=',', header=None) 
In [ ]:
df4

これで、うまくデータを読み込めました。