38

尝试在 ipython 中运行此文件时,我不断收到不同的属性错误...熊猫初学者,所以也许我遗漏了一些东西

代码:

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

6 回答 6

53

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

clean[column_name].value_counts()

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

pd.value_counts(df.values.flatten())
于 2013-10-16T00:29:39.743 回答
15

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

于 2015-04-29T00:02:24.693 回答
9

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

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

于 2020-11-25T12:00:53.907 回答
0

如果您使用 groupby(),只需创建一个新变量来存储 data.groupby('column_name'),然后在获取该变量并通过应用 value_counts() 再次访问该列之后。就像 df=data.groupby('city'),你可能会说 df['city'].value_counts()。这对我有用

于 2022-02-25T00:43:07.320 回答
0

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

df['accepted'].value_counts()

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

df = df.loc[:,~df.columns.duplicated()]
df['accepted'].value_counts()
于 2020-05-21T12:40:40.463 回答
0

我有同样的问题,它正在工作,但现在由于某种原因它不是。我用 groupby 替换了它:

grouped = pd.DataFrame(data.groupby(['col1','col2'])['col2'].count())
grouped.columns = ['Value_counts']
grouped
于 2021-08-18T12:53:00.133 回答