'DataFrame' - Objekt hat kein Attribut 'value_counts'

Mein dataset ist ein DataFrame dimension (840,84). Wenn ich den code schreiben:
ds[ds.columns[1]].value_counts()

Bekomme ich eine korrekte Ausgabe:

Out[82]:
0    847
1      5
Name: o_East, dtype: int64

Aber wenn ich Schreibe eine Schleife zum speichern der Werte, die ich bekomme 'DataFrame' - Objekt hat kein Attribut 'value_counts'. Ich kann nicht erklären, warum ...

wind_vec = []
wind_vec = [(ds[x].value_counts()) for x in ds.columns]

UPDATE FÜR DEN CODE

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'
  • Ihr code sollte gearbeitet haben, müssen Sie die post mehr code diesen Fehler zu reproduzieren, haben Sie erklärt x davor irgendwo???
  • Versuchen Sie, mit loc: wind_vec = [(ds.loc[:, x].value_counts()) for x in ds.columns]
  • Ich habe aktualisiert, der code in meinem post
  • Ich habe den gleichen Fehler mit loc : "AttributeError: 'DataFrame' - Objekt hat kein Attribut 'value_counts"
  • was passiert, wenn Sie ds_wire.apply(pd.Series.value_counts), auch du hast nicht geschrieben reicht die Daten und den code für andere, Sie zu unterstützen
  • mit anwenden dies bekomme ich: Out[108]: o_ENE o_East o_NE o_NNE o_NNW o_NW o_North o_SE o_SSE o_SSW ... b_North b_SE b_SSE b_SSW b_SW b_South b_Variable b_WNW b_WSW b_West 0 838 847 805 771 811 811 677 847 818 770 ... 710 739 647 835 845 801 817 841 846 842 1 14 5 47 81 41 41 175 5 34 82 ... 142 113 205 17 7 51 35 11 6 10 2 Zeilen × 84 Spalten
  • Weiter zu deiner ersten Frage, die ich nicht erklären x vor irgendwo.
  • Sie müssen einen link zu posten deine Daten, wie es steht Ihr code sollte gearbeitet habe, und die Tatsache, dass ds_wire.apply(pd.Series.value_counts) Werke bedeutet, dass die df scheint in Ordnung zu sein, eine Möglichkeit ist, dass Sie doppelte Spaltennamen. Was bedeutet len(df.columns.unique()) zeigen? wenn es nicht 84 dann Sie doppelte Namen haben oder versuchen ds_wire.columns.is_unique
  • Können Sie ausdrucken x und ds[x] gleich nach der Fehler?

InformationsquelleAutor florian | 2016-03-22
Schreibe einen Kommentar