質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

5562閲覧

python2.7において、csvファイルで読み込んだデータをDataFrameに変換することが出来ずに苦慮しております。

akakage13

総合スコア89

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/06/18 01:58

python2.7を用いて CSVファイルで読み込んだデータを、DataFrameに変換することが出来ずに苦慮しております。

# -*- coding:utf-8 -*- import numpy as np import pandas as pd from sklearn.datasets import load_boston from pandas import DataFrame ## データの用意 #ボストン近郊の住宅情報のデータを使用します。こちらは、無償で提供されており、 #例えばUCI Machine Learning Repository(UCI Machine Learning Repository: Housing Data Set)から #ダウンロードすることが可能です。ここでは、scikit-learnからロードする形で導入します。 # ボストンデータをインポート boston = load_boston() # 説明変数たちをDataFrameへ変換 df = DataFrame(boston.data, columns = boston.feature_names) # 目的変数をDataFrameへ追加 df['MEDV'] = np.array(boston.target) print df['MEDV']

上記のスクリプトは、成書から引用させていただきましたもので、うまく動きます。

そこで、上記のスクリプトを参考に、小生が作成しましたのが、下記のものでございます。

# -*- coding:utf-8 -*- import numpy as np import pandas as pd from sklearn.datasets import load_boston from pandas import DataFrame #ジョッキーのデータを読み込ませます jockey = pd.read_csv('jockey_1.csv') # 説明変数たちをDataFrameへ変換 df = DataFrame(jockey.data, columns = jockey.feature_names) # 目的変数をDataFrameへ追加 df['arrival_1'] = np.array(jockey.target) print df['arrival_1'] # http://keisanbutsuriya.hateblo.jp/entry/2015/12/16/161410#csv ファイルをデータフレームとして読み込む # ↑ 参考にさせていただきましたが、うまく出来ませんでした!!!

参考までに、jockey_1.csv の中身はこれでございます。

keibajyo season weather arrival_1 14 4 2 1 6 4 2 1 6 4 4 0 6 4 4 0 6 4 4 1 6 4 4 0
File "C:\Users\satoru\satoru_system_2.7\jockey_record\teisyutu_pa_1.py", line 16, in <module> df = DataFrame(jockey.data, columns = jockey.feature_names) File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 2672, in __getattr__ return object.__getattribute__(self, name) AttributeError: 'DataFrame' object has no attribute 'data'

このスクリプトを動かしますと、上記のようなエラーが発生いたします。

データフレームについて、自分の出来る範囲で調べましたが、うまく出来ませんでした。

先輩方の御教示、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

CSVは基本的にComma Separated Valueの略なので、以下のようにデータがカンマで区切られているのが正しいです

keibajyo,season,weather,arrival_1 14,4,2,1 6,4,2,1 6,4,4,0 6,4,4,0 6,4,4,1 6,4,4,0

しかし今回のデータはカンマではなくタブかスペースで区切られているように見受けられるので、TSV(tab-separated values)を読み込む方法として、pandas tsv 読込等でググると以下のような例が出てきて一発です

import pandas as pd pd.read_csv('jockey_1.csv', delimiter='\t')
import pandas as pd pd.read_csv('jockey_1.csv', delim_whitespace=True)

参考:http://www.mwsoft.jp/programming/numpy/pandas_csv.html

投稿2017/06/18 04:30

chck

総合スコア184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akakage13

2017/06/18 05:02

chck様、御教示ありがとうございます。 jockey = pd.read_csv('jockey_1.csv', delimiter='\t') こちらをprint しますと keibajyo,season,weather,arrival_1 0 14,4,2,1 1 6,4,2,1 2 6,4,4,0 3 6,4,4,0 4 6,4,4,1 5 6,4,4,0 このようになりまして、貴殿の御指摘とおり、小生のcsvはコンマで区切ってあることがわかります。 しかしながら、本来のスクリプトに、貴殿からいただきましたスクリプトを併せますと、 AttributeError: 'DataFrame' object has no attribute 'data' データフレームオブジェクトにはデータ属性がありませんとのことでございます。 小生の理解の仕方が間違っている可能性もございます。 お手数ではございますが、もう一度、御教示いただければ幸いです。
chck

2017/06/18 05:23

なるほど、承知しました ではこちらでいかがでしょうか ``` df = pd.read_csv('jockey_1.csv', delim_whitespace=True) # 説明変数たちを表示 print df[['keibajyo', 'season', 'weather']] # 目的変数を表示 print df['arrival_1'] ``` 以下のコードが綺麗になくなっている解説をしますと、read_csvで既にpandas DataFrameになるためです 成書のload_boston()はpandas DataFrame形式ではないため、boston.dataやboston.targetをDataFrameにするために前述のようにする必要があったということです ``` # 説明変数たちをDataFrameへ変換 df = DataFrame(jockey.data, columns = jockey.feature_names) # 目的変数をDataFrameへ追加 df['arrival_1'] = np.array(jockey.t ```
akakage13

2017/06/18 05:45

chck様、丁寧な御教示ありがとうございます。 解説は理解できたのですが、実際に、以下のスクリプトを動かしますと、 # -*- coding:utf-8 -*- import pandas as pd df = pd.read_csv('jockey_1.csv', delim_whitespace=True) # 説明変数たちを表示 print df[['keibajyo', 'season', 'weather']] # 目的変数を表示 print df['arrival_1'] #### KeyError: "['keibajyo' 'season' 'weather'] not in index" 上記のようにkeyエラーが出てまいります。 確認のために、dfをprintいたしますと keibajyo,season,weather,arrival_1 0 14,4,2,1 1 6,4,2,1 2 6,4,4,0 3 6,4,4,0 4 6,4,4,1 5 6,4,4,0 おそらく、小生の理解不足と思われますが、再度の御教示いただけますと幸いでございます。
chck

2017/06/18 05:53

>確認のために、dfをprintいたしますと keibajyo,season,weather,arrival_1 0 14,4,2,1 1 6,4,2,1 2 6,4,4,0 3 6,4,4,0 4 6,4,4,1 5 6,4,4,0 ということはTSVではなくCSVですね!すみません見落としていました であればread_csvに特別なオプションは要らず以下でどうでしょうか 入力データがcsvなのかtsvなのか、はたまたjsonなのか、形式を見定めることが重要です ``` df = pd.read_csv('jockey_1.csv') # 説明変数たちを表示 print df[['keibajyo', 'season', 'weather']] # 目的変数を表示 print df['arrival_1'] ```
akakage13

2017/06/18 06:09

chck様、うまく動きました。 今回は、丁寧な御教示、本当にありがとうございました。 今後とも、よろしくお願いいたします。
guest

0

この程度のCSVであれば、特に特別な処理をしなくても

Python

1import pandas as pd 2 3df = pd.read_csv('jockey_1.csv', delim_whitespace=True) 4print(df)

のみで、目的が達しているということはありませんかね。

投稿2017/06/18 03:44

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akakage13

2017/06/18 04:26

# -*- coding:utf-8 -*- import numpy as np import pandas as pd from sklearn.datasets import load_boston from pandas import DataFrame #データを読み込ませます jockey = pd.read_csv('jockey_1.csv', delim_whitespace=True) # 説明変数たちをDataFrameへ変換 df = DataFrame(jockey.data, columns = jockey.feature_names) # 目的変数をDataFrameへ追加 df['arrival_1'] = np.array(jockey.target) print df['arrival_1'] ################################## AttributeError: 'DataFrame' object has no attribute 'data' ################# magichan様、早々の御教示ありがとうございます。 早速、貴殿のスクリプトで実行させていただきましたが、うまく動かず、上記のエラーが出てまいりました。 データフレームオブジェクトにはデータ属性がありませんとのことでございます。 小生の理解の仕方が間違っている可能性もございます。 お手数ではございますが、もう一度、御教示いただければ幸いです。
magichan

2017/06/18 05:46 編集

いえ、私の回答の意図は違います。 df = pd.read_csv('jockey_1.csv', delim_whitespace=True) print(df) の2行のみの結果(printの出力)自体で、(それ以降の処理は行わなくても)目的となるデータフレームになってませんでしょうか?という意味です。 もし、違うとなると、どのような結果が望ましいのかを示していただくと助かります。
akakage13

2017/06/18 06:07

magichan様、貴殿の御指摘の意図が、ようやくわかりました。 データフレーム自体に対する、小生の知識不足でございました。 早々の御教示と重ねて、御礼申し上げます。 今後とも、よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問