AttributeError:“DataFrame”对象没有属性

Posted

技术标签:

【中文标题】AttributeError:“DataFrame”对象没有属性【英文标题】:AttributeError: 'DataFrame' object has no attribute 【发布时间】:2013-10-23 21:46:00 【问题描述】:

尝试在 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'

有什么想法吗?

【问题讨论】:

未来搜索者的注意事项:如果您选择重复的列名,您将获得一个数据框而不是一个系列! 【参考方案1】:

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

clean[column_name].value_counts()

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

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

【讨论】:

当我通过iloc获取列时它不起作用 value_counts() 现在是自 pandas 1.1.0 以来的 DataFrame 方法——发布了另一个答案 ***.com/a/65004307/9379924【参考方案2】:

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

【讨论】:

df.count() 产生的结果不同于df['col'].value_counts() aka series.value_counts()!但是,您的帖子可能对想要df.count() 的人有所帮助【参考方案3】:

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

df['accepted'].value_counts()

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

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

【讨论】:

【参考方案4】:

value_counts() 现在是自 pandas 1.1.0 以来的 DataFrame 方法

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

【讨论】:

【参考方案5】:

我遇到了同样的问题,它可以正常工作,但现在由于某种原因它不能正常工作。我用 groupby 替换了它:

grouped = pd.DataFrame(data.groupby(['col1','col2'])['col2'].count())
grouped.columns = ['Value_counts']
grouped

【讨论】:

以上是关于AttributeError:“DataFrame”对象没有属性的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:“DataFrame”对象没有属性“map”

AttributeError:“DataFrame”对象没有属性“label”

AttributeError:模块“networkx”没有属性“from_pandas_dataframe”

Pandas 分析错误 AttributeError:“DataFrame”对象没有属性“profile_report”

Pandas 中的 Concat 2 列 - AttributeError:“DataFrame”对象没有属性“concat”

Unpickling 包含 pandas 数据框的字典会引发 AttributeError:“Dataframe”对象没有属性“_data”