2015-04-03 8 views
5

staram się grać z niektórych danych online, a niektóre problemy kreślenia go z powodu „atrybut” błędu w funkcji plotJak naprawić AttributeError: Obiekt "Series" nie ma atrybutu "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() 

żadnego obejścia lub wskazujące mnie we właściwym kierunku byłoby pomocne? Mogę narysować następujące rzeczy, więc wyraźnie nie rozumiem czegoś powyżej.

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

Edycja: (dodane dane dla 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

można pokazać nam co walking_data wygląda? –

+0

@JulienSpronck dodano – amehta

+0

Przydałoby się opublikować cały otrzymany błąd, szczególnie gdy wypróbowałeś odpowiedź DSM. – Ajean

Odpowiedz

4

plot jest uzyskiwanie mylić bo jesteś przechodzącą go ciągi, nie liczby. Jeśli przekonwertować je na (powiedzmy) float s:

walking_data = walking_data.astype(float) 

Wtedy dostaniesz

walking plot

+0

Próbowałem to i znowu, ale nadal nie działa dla mnie – amehta

+0

'ValueError: nie można przekonwertować ciąg do float: -' może to być z powodu brakujących wartości? Jak mogę obejść NaN? – durbachit

Powiązane problemy