Python ';数据帧';对象没有属性';价值单位计数';

Python ';数据帧';对象没有属性';价值单位计数';,python,python-2.7,pandas,dataframe,Python,Python 2.7,Pandas,Dataframe,我的数据集是一个维度(840,84)的数据帧。当我编写代码时: ds[ds.columns[1]].value\u counts() 我得到了正确的输出: Out[82]: 0 847 1 5 Name: o_East, dtype: int64 但当我写一个循环来存储值时,我得到的“DataFrame”对象没有属性“value\u counts”。我无法解释为什么 wind_vec = [] wind_vec = [(ds[x].value_counts()) for x i

我的数据集是一个维度(840,84)的数据帧。当我编写代码时:
ds[ds.columns[1]].value\u counts()

我得到了正确的输出:

Out[82]:
0    847
1      5
Name: o_East, dtype: int64
但当我写一个循环来存储值时,我得到的“DataFrame”对象没有属性“value\u counts”。我无法解释为什么

wind_vec = []
wind_vec = [(ds[x].value_counts()) for x in ds.columns]
代码更新

import pandas as pd
import numpy as np
import numpy.ma as ma
import statsmodels.api as sm
import matplotlib
import matplotlib.pyplot as plt
from sklearn.preprocessing import OneHotEncoder

dataset = pd.read_csv('data/dataset.csv')

ds = dataset

o_wdire = pd.get_dummies(ds['o_wdire'])
s_wdire = pd.get_dummies(ds['s_wdire'])
t_wdire = pd.get_dummies(ds['t_wdire'])
k_wdire = pd.get_dummies(ds['k_wdire'])
b_wdire = pd.get_dummies(ds['b_wdire'])

o_wdire.rename(columns={'ENE': 'o_ENE','ESE': 'o_ESE', 'East': 'o_East', 'NE': 'o_NE', 'NNE': 'o_NNE', 'NNW': 'o_NNW', \
                     'NW': 'o_NW', 'North': 'o_North', 'SE': 'o_SE', 'SSE': 'o_SSE', 'SSW': 'o_SSW', 'SW': 'o_SW', \
                     'South': 'o_South', 'Variable': 'o_Variable', 'WSW': 'o_WSW','West':'o_West'}, inplace=True)
s_wdire.rename(columns={'ENE': 's_ENE','ESE': 's_ESE', 'East': 's_East', 'NE': 's_NE', 'NNE': 's_NNE', 'NNW': 's_NNW', \
                     'NW': 's_NW', 'North': 's_North', 'SE': 's_SE', 'SSE': 's_SSE', 'SSW': 's_SSW', 'SW': 's_SW', \
                     'South': 's_South', 'Variable': 's_Variable', 'West': 's_West','WSW': 's_WSW'}, inplace=True)
k_wdire.rename(columns={'ENE': 'k_ENE','ESE': 'k_ESE', 'East': 'k_East', 'NE': 'k_NE', 'NNE': 'k_NNE', 'NNW': 'k_NNW', \
                     'NW': 'k_NW', 'North': 'k_North', 'SE': 'k_SE', 'SSE': 'k_SSE', 'SSW': 'k_SSW', 'SW': 'k_SW', \
                     'South': 'k_South', 'Variable': 'k_Variable', 'WNW': 'k_WNW', 'West': 'k_West','WSW': 'k_WSW'}, inplace=True)
b_wdire.rename(columns={'ENE': 'b_ENE','ESE': 'b_ESE', 'East': 'b_East', 'NE': 'b_NE', 'NNE': 'b_NNE', 'NNW': 'b_NNW', \
                     'NW': 'b_NW', 'North': 'b_North', 'SE': 'b_SE', 'SSE': 'b_SSE', 'SSW': 'b_SSW', 'SW': 'b_SW', \
                     'South': 'b_South', 'Variable': 'b_Variable', 'WSW': 'b_WSW', 'WNW': 'b_WNW', 'West': 'b_West'}, inplace=True)
t_wdire.rename(columns={'ENE': 't_ENE','ESE': 't_ESE', 'East': 't_East', 'NE': 't_NE', 'NNE': 't_NNE', 'NNW': 't_NNW', \
                     'NW': 't_NW', 'North': 't_North', 'SE': 't_SE', 'SSE': 't_SSE', 'SSW': 't_SSW', 'SW': 't_SW', \
                     'South': 't_South', 'Variable': 't_Variable', 'WSW': 't_WSW', 'WNW': 't_WNW', 'West':'t_West'}, inplace=True)

#WIND
ds_wdire = pd.DataFrame(pd.concat([o_wdire,s_wdire,t_wdire,k_wdire,b_wdire],axis=1))
ds_wdire = ds_wdire.astype('float64')

In [93]: ds_wdire.shape
Out[93]: (852, 84)

In[101]: ds_wdire[ds_wdire.columns[0]].head()
Out[101]:   
0    0
1    0
2    0
3    0
4    0
Name: o_ENE, dtype: float64

In[103]: ds_wdire[ds_wdire.columns[0]].value_counts()
Out[103]:

0    838
1     14
Name: o_ENE, dtype: int64


In[104]: [ds_wdire[x].value_counts() for x in ds_wdire.columns]
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-104-d9756c468818> in <module>()
      1 #Filtering for the wind direction based on the most frequent ones.
----> 2 [ds_wdire[x].value_counts() for x in ds_wdire.columns]

<ipython-input-104-d9756c468818> in <listcomp>(.0)
      1 #Filtering for the wind direction based on the most frequent ones.
----> 2 [ds_wdire[x].value_counts() for x in ds_wdire.columns]

/home/florian/anaconda3/lib/python3.5/site-packages/pandas/core/generic.py in __getattr__(self, name)
   2358                 return self[name]
   2359             raise AttributeError("'%s' object has no attribute '%s'" %
-> 2360                                  (type(self).__name__, name))
   2361 
   2362     def __setattr__(self, name, value):

AttributeError: 'DataFrame' object has no attribute 'value_counts'
将熊猫作为pd导入
将numpy作为np导入
将numpy.ma导入为ma
将statsmodels.api作为sm导入
导入matplotlib
将matplotlib.pyplot作为plt导入
从sklearn.preprocessing导入OneHotEncoder
dataset=pd.read\u csv('data/dataset.csv'))
ds=数据集
o_wdire=pd.get_dummies(ds['o_wdire']))
s_wdire=pd.get_dummies(ds['s_wdire']))
t_wdire=pd.get_dummies(ds['t_wdire']))
k_wdire=pd.get_dummies(ds['k_wdire']))
b_wdire=pd.get_dummies(ds['b_wdire']))
重命名(列={'ENE':'o_ENE','ESE':'o_ESE','East':'o_East','NE':'o_NE','NNE':'o_NNE','NNW':'o_NNW'\
‘西北’:‘西北’,‘北’:‘北’,‘东南’:‘东南’,‘东南’:‘东南’,‘西南’:‘西南’,‘西南’:‘西南’\
'South':'o_South','Variable':'o_Variable','WSW':'o_WSW','West':'o_West'},inplace=True)
重命名(列={'ENE':'s_ENE','ESE':'s_ESE','East':'s_East','NE':'s_NE','NNE':'s_NNE','NNW':'s_NNW'\
‘西北’:‘南西北’、‘北’:‘南北’、‘东南’:‘南东南’、‘东南’:‘南东南’、‘西南’:‘南西南’、‘西南’:‘南西南’\
'South':'s_South','Variable':'s_Variable','West':'s_West','WSW':'s_WSW'},inplace=True)
重命名(列={'ENE':'k_ENE','ESE':'k_ESE','East':'k_East','NE':'k_NE','NNE':'k_NNE','NNW':'k_NNW'\
‘NW’:‘k_NW’、‘North’:‘k_North’、‘SE’:‘k_SE’、‘SSE’:‘k_SSE’、‘SSW’:‘k_SSW’、‘SW’:‘k_SW’\
‘南’:‘k_-South’,‘Variable’:‘k_-Variable’,‘WNW’:‘k_-WNW’,‘West’:‘k_-West’,‘WSW’:‘k_-WSW’},inplace=True)
重命名(列={'ENE':'b_ENE','ESE':'b_ESE','East':'b_East','NE':'b_NE','NNE':'b_NNE','NNW':'b_NNW'\
‘西北’:‘西北’、‘北’:‘北’、‘东南’:‘东南’、‘东南’:‘东南’、‘西南’:‘西南’、‘西南’:‘西南’\
'南':'南','变量':'南','西','西':'西','西':'西','西','西','西',inplace=True)
重命名(列={'ENE':'t_ENE','ESE':'t_ESE','East':'t_East','NE':'t_NE','NNE':'t_NNE','NNW':'t_NNW'\
‘NW’:‘t_-NW’、‘North’:‘t_-North’、‘SE’:‘t_-SE’、‘SSW’:‘t_-SSW’、‘SW’:‘t_-SW’\
‘南’:‘t_南’、‘变量’:‘t_变量’、‘WSW’:‘t_WSW’、‘WNW’:‘t_WNW’、‘西’:‘t_西’},inplace=True)
#风
ds_wdire=pd.DataFrame(pd.concat([o_wdire,s_wdire,t_wdire,k_wdire,b_wdire],轴=1))
ds_wdire=ds_wdire.astype('float64')
In[93]:ds_wdire.shape
Out[93]:(852,84)
在[101]:ds_wdire[ds_wdire.columns[0]].head()中
出[101]:
0    0
1    0
2    0
3    0
4    0
姓名:o_ENE,数据类型:float64
在[103]:ds_wdire[ds_wdire.columns[0]]中。值_计数()
出[103]:
0    838
1     14
名称:o_ENE,数据类型:int64
在[104]中:[ds_wdire[x]。ds_wdire.columns中x的值_counts()
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在()
1#根据最频繁的风向进行过滤。
---->2[ds_wdire[x]。ds_wdire.columns中x的值_counts()
英寸(.0)
1#根据最频繁的风向进行过滤。
---->2[ds_wdire[x]。ds_wdire.columns中x的值_counts()
/home/florian/anaconda3/lib/python3.5/site-packages/pandas/core/generic.py in\uuuuuu getattr\uuuuu(self,name)
2358返回自我[姓名]
2359 raise AttributeError(“%s”对象没有属性“%s”
->2360(类型(自身)。\名称\名称)
2361
2362定义设置属性(自身、名称、值):
AttributeError:'DataFrame'对象没有属性'value\u counts'

感谢@EdChum的建议,我检查了:

len(ds_wdire.columns),len(ds_wdire.columns.unique())
Out[100]: (83,84)
实际上,dict中缺少一个name值,该值应该从“WNW”修改为“o_WNW”:

o_wdire.rename(columns={'ENE': 'o_ENE','ESE': 'o_ESE', 'East': 'o_East', 'NE': 'o_NE', 'NNE': 'o_NNE', 'NNW': 'o_NNW', \
                 'NW': 'o_NW', 'North': 'o_North', 'SE': 'o_SE', 'SSE': 'o_SSE', 'SSW': 'o_SSW', 'SW': 'o_SW', \
                 'South': 'o_South', 'Variable': 'o_Variable', 'WSW': 'o_WSW','West':'o_West', **[MISSING VALUE WNW]**}, inplace=True)

也许写一个循环,在风向变量中插入一个前缀会更好,这样,我可以避免这种问题。

你的代码应该已经工作了,你需要发布更多的代码来重现这个错误,你在这之前有没有声明过
x
?试试
loc
wind\u-vec=[(ds.loc[,x].value_counts())表示ds.columns中的x]
@EdChum我已在我的post@AntonProtopopov我在loc中也遇到了同样的错误:“AttributeError:‘DataFrame’对象没有属性‘value_counts’。您需要发布一个指向您的数据的链接,因为它表明您的代码应该工作,并且事实上,
ds_wire.apply(pd.Series.value_counts)
works意味着df看起来很好,一种可能是您有重复的列名。
len(df.columns.unique())
显示了什么?如果不是84,那么您有重复的名称,或者尝试使用
ds\u wire.columns.is\u unique
您可以只执行
df.columns=['o\u'+x代表df中的x]
和类似的操作来处理其他df