Soy nuevo en pandas y bokeh y estoy tratando de crear un diagrama de dispersión a partir de un marco de datos de pandas. Sin embargo, sigo recibiendo el siguiente error:
new_data[colname] = df[colname].tolist() AttributeError: 'DataFrame' object has no attribute 'tolist'Usando los datos ficticios de bokeh (de bokeh.sampledata.iris importa flores como datos), la dispersión funciona bien.
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)Editar: no estoy usando tolist(), pero Scatter() de Bokeh sí lo hace y produce el siguiente error.
Está utilizando tolist incorrectamente. Quieres: .values seguidos de 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.738954Para el marco de datos anterior, para obtener sus valores X e Y como una lista, puede hacer lo siguiente:
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]Como ha intentado configurar esto en la columna de un nuevo marco de datos, puede hacer:
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.738954Resolví el problema extrayendo primero las columnas relevantes del marco de datos.
df = df.loc[:, ('type', 'tsneX', 'tsneY') scatter = Scatter(df, x='tsneX', y='tsneY', color='type', marker='type', title='t-sne', legend=True)