如何从覆盖全年数据的DataFrame中计算均值、中位数、众数等统计指标
基于pandas的全年统计指标计算方案
前置准备
确保已安装并导入pandas库:import pandas as pd
步骤1:数据预处理
- 转换日期列格式:将第一列日期数据转换为pandas datetime类型,方便时间维度筛选
代码示例:df['date_col'] = pd.to_datetime(df['date_col']) - 筛选全年数据:如果需要统计指定自然年的指标,先筛选对应年份的数据集
代码示例:year_df = df[df['date_col'].dt.year == 2023](将2023替换为你需要统计的目标年份即可)
步骤2:统计指标计算
场景1:全量数据全年整体指标
直接对目标数值列调用内置统计方法即可:
# 均值 mean_value = year_df['value_col'].mean() # 中位数 median_value = year_df['value_col'].median() # 众数,pandas的mode返回Series,取第一个元素为最终众数 mode_value = year_df['value_col'].mode().iloc[0]
场景2:按项目分组统计各项目全年指标
如果需要计算每个项目编码对应的全年指标,使用groupby聚合即可:
project_year_stats = year_df.groupby('project_id_col')['value_col'].agg( yearly_mean = 'mean', yearly_median = 'median', yearly_mode = lambda x: x.mode().iloc[0] if not x.mode().empty else pd.NA ).reset_index()
注意事项
- 上述代码中
date_col替换为你的日期列实际列名,project_id_col替换为项目识别编码列的实际列名,value_col替换为你要统计的数值列实际列名 - 如果同一个日期下同一个项目存在多条重复记录,可以先按日期+项目编码分组聚合单日数值后再做全年统计
- 若存在多个相同频次的众数,上述代码仅返回第一个,需要返回全量众数可调整lambda函数的返回逻辑
内容的提问来源于stack exchange,提问作者R S John
相关产品推荐
相关产品推荐

