web-dev-qa-db-ja.com

ボケ:AttributeError: 'DataFrame'オブジェクトには属性 'tolist'がありません

pandas and bokehが初めてで、pandasデータフレームから散布図を作成しようとしています。しかし、次のエラーが発生し続けます。

new_data[colname] = df[colname].tolist()
AttributeError: 'DataFrame' object has no attribute 'tolist' 

Bokehからのダミーデータ(bokeh.sampledata.irisからの花をデータとしてインポート)を使用すると、散布は正常に機能します。

   type   tsneX      tsneY      +50.000 columns
0  A      53.828863  20.740931  
1  B      57.816909  18.478468  
2  A      55.913429  22.948167  
3  C      56.603005  15.738954 


scatter = Scatter(df, x='tsneX', y='tsneY',
                  color='type', marker='type',
                  title='t-sne',
                  legend=True)

編集:私はtolist()を使用していませんが、BokehのScatter()は以下のエラーを発生させます。

5
Jab

最初にデータフレームから関連する列を抽出することで問題を解決しました。

df = df.loc[:, ('type', 'tsneX', 'tsneY')

scatter = Scatter(df, x='tsneX', y='tsneY',
                  color='type', marker='type',
                  title='t-sne',
                  legend=True)
0
Jab

tolistを誤って使用しています。必要なもの:_.values_に続いてtolist()

_  type   tsneX      tsneY  
0  A      53.828863  20.740931  
1  B      57.816909  18.478468  
2  A      55.913429  22.948167  
3  C      56.603005  15.738954 
_

上記のデータフレームの場合、X値とY値をリストとして取得するには、次のようにします。

_tsneY_data = df['tsneY'].values.tolist()
>> [20.740931, 18.478468, 22.948167, 15.7389541]

tsneX_data = df['tsneX'].values.tolist()
>> [53.828863, 57.816909, 55.913429, 56.603005]
_

これを新しいデータフレームの列に設定しようとしたので、次のことができます。

_new_data = pd.DataFrame()
new_data['tsneY'] = df['tsneY'].values.tolist()

> new_data
       tsneY
0  20.740931
1  18.478468
2  22.948167
3  15.738954
_
12
Chuck