AttributeError:'DataFrame'对象没有属性

时间:2013-10-15 22:32:13

标签: python pandas attributeerror

我在ipython中尝试运行此文件时遇到不同的属性错误...使用pandas初学者所以也许我错过了什么

代码:

from pandas import Series, DataFrame

import pandas as pd

import json

nan=float('NaN')
data = []
with open('file.json') as f:
for line in f:
    data.append(json.loads(line))

df = DataFrame(data, columns=['accepted', 'user', 'object', 'response'])
clean = df.replace('NULL', nan)
clean = clean.dropna()

print clean.value_counts() 

AttributeError: 'DataFrame' object has no attribute 'value_counts'

有什么想法吗?

4 个答案:

答案 0 :(得分:20)

value_counts系列方法,而不是 DataFrame 方法(您尝试在DataFrame上使用它,clean)。您需要在特定列上执行此操作:

clean[column_name].value_counts()

在DataFrame上执行value_counts通常没有意义,但我想您可以通过展平基础值数组将其应用于每个条目:

pd.value_counts(df.values.flatten())

答案 1 :(得分:9)

要获取数据框中所有列的所有计数,它只是df.count()

答案 2 :(得分:1)

从熊猫1.1.0开始,

value_counts()现在是一个DataFrame方法

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.value_counts.html

答案 3 :(得分:0)

value_counts仅适用于系列。它不适用于整个DataFrame。尝试仅选择一列并使用此属性。 例如:

df['accepted'].value_counts()

如果您有重复的列,它也将不起作用。这是因为当您选择特定的列时,它还将代表重复的列,并且将返回数据框而不是序列。那时使用

删除重复的列
df = df.loc[:,~df.columns.duplicated()]
df['accepted'].value_counts()