如何在Dataframe中忽略空值并批量统计各类颜色的元素数量?
解决方法
方法一:使用pandas内置的value_counts()(推荐)
pandas的Series.value_counts()方法专门用来统计类别型数据的出现次数,默认会自动忽略NaN空值,代码简洁且性能优化过,完全不用手动写重复代码:
color_counts = data["Primary Fur Color"].value_counts()
执行后,color_counts是一个pandas.Series对象——索引是各类颜色(比如Black、Gray、Cinnamon),对应的值就是该颜色的元素总数。你可以直接打印查看结果,也能通过索引单独获取某类颜色的数量,比如color_counts["Gray"]。
如果需要把结果转换成字典格式方便后续处理,只需追加:
color_counts_dict = data["Primary Fur Color"].value_counts().to_dict()
方法二:手动过滤空值后统计(适合自定义逻辑)
如果需要在统计过程中添加额外自定义规则,可以先过滤列中的空值,再获取唯一颜色类别,最后循环统计:
# 过滤掉所有空值 fur_clean = data["Primary Fur Color"].dropna() # 获取去重后的颜色集合 fur_unique = set(fur_clean.to_list()) # 遍历统计每个颜色的数量 color_counts = {} for color in fur_unique: color_counts[color] = len(fur_clean[fur_clean == color])
这种方法灵活性更高,但对于单纯的计数需求,value_counts()是更优选择——尤其是数据量较大时,内置方法的性能会远优于手动循环。
内容的提问来源于stack exchange,提问作者Avry G.
相关产品推荐
相关产品推荐

