如何用Python计算列中特定值的均值?及pandas处理自定义缺失值列
问题1:如何用Python计算数据列中特定值的均值?
如果用pandas处理数据,核心思路是先筛选出符合特定条件的行,再对目标列求均值:
- 示例:计算
score列中数值大于80的均值
import pandas as pd # 构造示例数据 data = pd.DataFrame({'score': [75, 85, 90, 88, 70]}) # 筛选目标值并计算均值 specific_mean = data[data['score'] > 80]['score'].mean() print(specific_mean)
- 如果目标是列中等于某个具体值的均值(比如等于90),写法类似(结果即为该值本身):
specific_mean = data[data['score'] == 90]['score'].mean()
问题2:处理以90/99表示的缺失值并删除超标列
统计列中90/99的出现次数
# 统计每列中90和99的总数量 missing_counts = data.apply(lambda col: ((col == 90) | (col == 99)).sum())
改进删除列的代码
你的原代码存在语法错误(比如data.column不是pandas的正确用法,逻辑判断不符合向量运算规则),正确实现如下:
threshold = 0.6 # 计算每列中90或99的占比(占总行数的比例) missing_ratio = data.apply(lambda col: ((col == 90) | (col == 99)).mean()) # 保留占比低于阈值的列,删除超标列 data = data.loc[:, missing_ratio < threshold]
说明:
apply(lambda col: ...)遍历DataFrame的每一列(col == 90) | (col == 99)生成布尔序列,标记列中等于90或99的位置mean()计算布尔序列的均值,即缺失值(90/99)在列中的占比loc[:, missing_ratio < threshold]筛选出占比低于阈值的列,更新原DataFrame
内容的提问来源于stack exchange,提问作者Arwa
相关产品推荐
相关产品推荐

