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

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

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

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

Q&A

解決済

1回答

210閲覧

保存したアイリスデータの散布図の作成

k2r

総合スコア10

Python

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

0グッド

0クリップ

投稿2020/01/15 07:10

編集2020/01/15 07:19

前提・実現したいこと

保存したアイリスデータの散布図の作成(6種類)
それぞれの特徴量から6種類の散布図を作成したいのですが、エラーがでて困っています。
どのようにしたらできますでしょうか。教えてください。

発生している問題・エラーメッセージ

AttributeError Traceback (most recent call last)
<ipython-input-181-893180ca08ff> in <module>
33
34 if name == 'main':
---> 35 main()

<ipython-input-181-893180ca08ff> in main()
3
4 特徴量の入ったデータ (4 次元)
----> 5 features = iris.data
6 各特徴量の名前
7 feature_names = iris.feature_names

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in getattr(self, name)
5065 if self._info_axis._can_hold_identifiers_and_holds_name(name):
5066 return self[name]
-> 5067 return object.getattribute(self, name)
5068
5069 def setattr(self, name, value):

AttributeError: 'DataFrame' object has no attribute 'data'

該当のソースコード

python

iris_data2 = pd.read_csv("iris_learn2.csv")
print(iris_data2)

SepalLength SepalWidth PetalLength PetalWidth Name

0 7.0 3.2 4.7 1.4 Iris-versicolor
1 6.4 3.2 4.5 1.5 Iris-versicolor
2 6.9 3.1 4.9 1.5 Iris-versicolor
3 5.5 2.3 4.0 1.3 Iris-versicolor
4 6.5 2.8 4.6 1.5 Iris-versicolor
5 6.3 3.3 6.0 2.5 Iris-virginica
6 5.8 2.7 5.1 1.9 Iris-virginica
7 7.1 3.0 5.9 2.1 Iris-virginica
8 6.3 2.9 5.6 1.8 Iris-virginica
9 6.5 3.0 5.8 2.2 Iris-virginica

def main():
iris = pd.read_csv("iris_learn2.csv")

features = iris.data feature_names = iris.feature_names targets = iris.target plt.figure(figsize=(12, 8)) for i, (x, y) in enumerate(itertools.combinations(range(4), 2)): plt.subplot(2, 3, i + 1) for t, marker, c in zip(range(3), '>ox', 'rgb'): plt.scatter( features[targets == t, x], features[targets == t, y], marker=marker, c=c, ) plt.xlabel(feature_names[x]) plt.ylabel(feature_names[y]) plt.autoscale() plt.grid() plt.show()

if name == 'main':
main()

の後に上記のエラーが出てきます。

試したこと

def main():
iris = datasets.load_iris()

features = iris.data feature_names = iris.feature_names targets = iris.target plt.figure(figsize=(12, 8)) for i, (x, y) in enumerate(itertools.combinations(range(4), 2)): plt.subplot(2, 3, i + 1) for t, marker, c in zip(range(3), '>ox', 'rgb'): plt.scatter( features[targets == t, x], features[targets == t, y], marker=marker, c=c, ) plt.xlabel(feature_names[x]) plt.ylabel(feature_names[y]) plt.autoscale() plt.grid() plt.show()

if name == 'main':
main()

パッケージに保存されているデータだと上手に動きましたが、保存したものだと動きませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Python

1iris = load_iris()

で得られたデータと

Python

1iris = pd.read_csv("iris_learn2.csv")

で得られたデータは、データの内容は同じ物(かもしれない)ですが、データの形式が全く別物となります。

違う形式のデータを同じコードで動作させることはできませんので、後者のデータ形式に合わせて移植する必要があるかと思います。

一応、簡単に移植したものをサンプルとして記述しましたので参考にしてください。
データが無いので動作未確認です。

Python

1import pandas as pd 2import matplotlib.pyplot as plt 3import itertools 4 5def main(): 6 iris = pd.read_csv("iris_learn2.csv") 7 print(iris) 8 plt.figure(figsize=(12, 8)) 9 10 for i, (x, y) in enumerate(itertools.combinations(range(4), 2)): 11 plt.subplot(2, 3, i + 1) 12 13 for (name, d), marker, c in zip(iris.groupby('Name'), '>ox', 'rgb'): 14 plt.scatter( 15 d.iloc[:, x], 16 d.iloc[:, y], 17 marker=marker, 18 c=c 19 ) 20 plt.xlabel(iris.columns[x]) 21 plt.ylabel(iris.columns[y]) 22 plt.autoscale() 23 plt.grid() 24 plt.tight_layout() 25 plt.show() 26 27if __name__ == '__main__': 28 main()

投稿2020/01/15 08:50

magichan

総合スコア15898

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問