Help us understand the problem. What is going on with this article?

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

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

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

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

詳細

# ウェブ上のリソースを指定する
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 の場合
# データの読み込み
df1 = pd.read_csv('airquality.txt', sep='\t', index_col=0) 
# 読み込んだデータの確認
df1

うまく読み込めました。

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

詳細

# ウェブ上のリソースを指定する
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 の場合
# データの読み込み
df2 = pd.read_csv('icecream_chosa.txt', sep='\t', index_col=0) 
df2

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

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

うまく読み込めました。

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

詳細

# ウェブ上のリソースを指定する
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 の場合
# データの読み込み
df3 = pd.read_csv('winequality-red.csv', sep='\t', index_col=0) 
df3

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

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

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

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

うまく読み込めました。

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

詳細

# ウェブ上のリソースを指定する
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 の場合
# データの読み込み
df4 = pd.read_csv('abalone.data', sep='\t', index_col=0) 
df4

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

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

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

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

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

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away