Python(含Pandas)如何统计数据集多列的唯一值数量
统计Pandas DataFrame所有列的唯一值数量
嘿,我懂你想一次性搞定DataFrame里所有列的唯一值统计需求,其实不用绕弯路,Pandas本身就有很直接的方法,咱们来拆解一下:
方法1:直接调用DataFrame的nunique()方法(最简便)
这是最高效的方式,因为Pandas的DataFrame对象原生支持nunique(),调用后会直接返回一个Series,索引是列名,值就是对应列的唯一值数量:
# 对整个DataFrame执行唯一值统计 unique_value_counts = DF.nunique() print(unique_value_counts)
输出示例(假设你的DF有var1、var2、var3三列):
var1 5 var2 10 var3 3 dtype: int64
如果你想要和你之前单列输出完全一致的格式(比如Number of unique values in Var1= X),可以结合循环遍历列名:
# 遍历所有列,格式化输出 for column_name in DF.columns: print(f"Number of unique values in {column_name} = {DF[column_name].nunique()}")
方法2:使用apply函数(兼容自定义逻辑)
如果你偏好使用apply,其实也能实现,只要对每一列应用pd.Series.nunique即可:
# 用apply对每列执行nunique统计 unique_value_counts = DF.apply(pd.Series.nunique) print(unique_value_counts)
不过要注意:直接调用DF.nunique()比apply更高效,因为前者是Pandas内部优化的向量化操作,而apply本质是循环执行函数,数据量大的时候差异会更明显。
小提示:包含缺失值的统计
默认情况下nunique()会忽略缺失值(dropna=True),如果你想把NaN也当作一个唯一值统计,只需要设置参数dropna=False:
# 统计包含缺失值的唯一值数量 unique_value_counts_with_na = DF.nunique(dropna=False)
内容的提问来源于stack exchange,提问作者pras
相关产品推荐
相关产品推荐

