pandas数据帧中所有列的基数/非重复计数

时间:2017-08-30 18:29:35

标签: python pandas

虽然dataframe.describe()对某些摘要描述性统计有用 - 特别是四分位数和范围值 - 但它显然没有基数计数选项?

有哪些选项 - 或者方法 - 用于获取数据框中的基数计数 - 可能通过提供列列表并默认为" all" ?

2 个答案:

答案 0 :(得分:4)

您可以计算数据集系列的不同值。这将为您提供列名和基数。例如,对于数据框:

names = pd.Categorical(['Tomba', 'Monica', 'Monica', 'Nancy', 'Neil', 'Chris'])
courses = pd.Categorical(['Physics', 'Geometry', 'Physics', 'Biology', 'Algebra', 'Algebra'])

df = pd.DataFrame({
    'Name' : names, 
    'Course': courses
})


Out[72]: df
     Course    Name
0   Physics   Tomba
1  Geometry  Monica
2   Physics  Monica
3   Biology   Nancy
4   Algebra    Neil
5   Algebra   Chris

df.apply(pd.Series.nunique)

Course    4
Name      5
dtype: int64

答案 1 :(得分:1)

或者,您可以使用value_counts。这是一个例子。

import pandas as pd

names = pd.Categorical(['Tomba', 'Monica', 'Monica', 'Nancy', 'Neil', 'Chris'])
courses = pd.Categorical(['Physics', 'Geometry', 'Physics', 'Biology', 'Algebra', 'Algebra'])
df = pd.DataFrame({'Name': names, 'Course': courses})

for col in df:
    cardinality = len(pd.Index(df[col]).value_counts())
    print(df[col].name + ": " + str(cardinality))