2015-04-03 17 views
5

Sto cercando di giocare con alcuni dati on-line, e avendo qualche problema tracciato a causa di un errore 'attributo' nella funzione plotCome correggere l'errore AttributeError: l'oggetto 'Series' non ha attributo 'find'?

# Reading data from an online data sets 
import pandas as pd 
import requests, zipfile, StringIO 
r = requests.get('https://archive.ics.uci.edu/ml/machine-learning-databases/00287/Activity Recognition from Single Chest-Mounted Accelerometer.zip') 
z = zipfile.ZipFile(StringIO.StringIO(r.content)) 
activity_files = [name for name in z.namelist() if name.endswith('.csv')] 

# Loading it to a pandas dataframe 
z_data = z.read(activity_files[4]).split('\n') 
activity_data = pd.DataFrame([z.split(',') for z in z_data], columns=('Seq','Ax','Ay','Az','Label')) 


# Filtering 
working_desk_data = activity_data[activity_data.Label == '1'] 
standing_data = activity_data[activity_data.Label == '3'] 
walking_data = activity_data[activity_data.Label == '4'] 

# Plotting 
plt.plot(walking_data['Seq'], walking_data['Ax']) # <--- Error 
plt.plot(walking_data['Seq'], walking_data['Ay']) # <--- Error 
plt.plot(walking_data['Seq'], walking_data['Az']) # <--- Error 
plt.show() 

alcuna soluzione alternativa o mi indica la direzione giusta sarebbe utile? Posso tracciare quanto segue, quindi sto chiaramente fraintendendo qualcosa sopra.

plt.plot(range(1,5), [1,2,1,2]) 
plt.show() 

Edit: (dati aggiunti per Julien Spronck)

walking_data.head() 
Out[12]: 
Seq Ax Ay Az Label 
22950 22950 1978 2386 1988 4 
22951 22951 1977 2387 1990 4 
22952 22952 1983 2390 1994 4 
22953 22953 1978 2396 1994 4 
22954 22954 1980 2387 1992 4 

walking_data.columns 
Out[79]: 
Index([u'Seq', u'Ax', u'Ay', u'Az', u'Label'], dtype='object') 
In [80]: 

type(walking_data.Seq) 
Out[80]: 
pandas.core.series.Series 
In [81]: 

type(walking_data.Ax) 
Out[81]: 
pandas.core.series.Series 
+0

ci può mostrare ciò che walking_data assomiglia? –

+0

@JulienSpronck aggiunto – amehta

+0

Sarebbe utile postare l'intero errore che si ottiene, specialmente quando si è tentato di rispondere al DSM. – Ajean

risposta

1

Utilizzare il metodo DataFrame plot:

walking_data.plot('Seq', ,'Ax') 
4

plot sta ottenendo confuso perché si sta passando stringhe, non numeri. Se li si converte a (diciamo) float s:

walking_data = walking_data.astype(float) 

Poi si otterrà

walking plot

+0

L'ho provato e ancora, ma ancora non funziona per me – amehta

+0

'ValueError: impossibile convertire la stringa in float: -' potrebbe essere dovuto a valori mancanti? Come posso aggirare il NaN? – durbachit