簡體   English   中英

AttributeError: 'DataFrame' object 沒有屬性

[英]AttributeError: 'DataFrame' object has no attribute

嘗試在 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'

有任何想法嗎?

value_counts是一個Series方法而不是一個DataFrame方法(並且您正在嘗試在 DataFrame 上使用它, clean )。 您需要在特定列上執行此操作:

clean[column_name].value_counts()

在 DataFrame 上執行value_counts通常沒有意義,但我認為您可以通過展平底層值數組將其應用於每個條目:

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

要獲取數據df.count()所有列的所有計數,只需df.count()

value_counts()現在是一個 DataFrame 方法,因為 pandas 1.1.0

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

value_counts 僅適用於系列。 它不適用於整個 DataFrame。 嘗試僅選擇一列並使用此屬性。 例如:

df['accepted'].value_counts()

如果您有重復的列,它也不起作用。 這是因為當您選擇特定列時,它也將代表重復列並將返回數據幀而不是系列。 當時使用刪除重復列

df = df.loc[:,~df.columns.duplicated()]
df['accepted'].value_counts()

我有同樣的問題,它正在工作,但現在由於某種原因它不是。 我用 groupby 替換了它:

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

如果您使用的是 groupby(),只需創建一個新變量來存儲 data.groupby('column_name'),然后獲取該變量並通過應用 value_counts() 再次訪問該列。 就像 df=data.groupby('city'),在你可以說 df['city'].value_counts() 之后。 這對我有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM