如何修复 AttributeError: 'Series' 对象没有属性 'find' 错误?

7

我正在尝试处理一些在线数据,但由于绘图函数中的“属性”错误而无法绘制该数据。

# 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()

有什么解决方法或指引可以帮助我吗?我可以绘制以下内容,所以显然我对上面的某些内容存在误解。
plt.plot(range(1,5), [1,2,1,2])
plt.show()

编辑:(添加了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

你能展示一下 walking_data 是什么样子吗? - Julien Spronck
@JulienSpronck 添加了。 - amehta
如果您尝试了DSM的答案,将整个错误信息发布出来会很有用。请提供完整的错误信息。 - Ajean
2个回答

7

plot 会因为你传递给它的是字符串而感到困惑。如果你将它们转换为(例如)float,它就可以正常工作了:

walking_data = walking_data.astype(float)

然后您将得到

步行图


我尝试了那个,但还是不行。 - amehta
ValueError: 无法将字符串转换为浮点数:- 这可能是由于缺失值引起的吗?我该如何避免 NaN? - durbachit
对于缺失值,您可以使用 data.fillna(value='')。对于 ValueError,您可以使用 tryexcept ValueError, e 来捕获不良数据并用一些默认值替换它们。 - Habib Karbasian

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接