Python Pandas计算会员组length_duration均值遇执行无响应问题排查
问题分析与解决办法
你的代码逻辑本身没有错误,一直显示“executing”无结果,大概率是以下几种原因导致的:
数据量过大:如果DataFrame行数特别多,单条件筛选+均值计算会消耗大量内存和时间,建议先做数据抽样测试,比如:
# 取10%的样本数据测试 sample_df = df.sample(frac=0.1, random_state=42) round(sample_df[sample_df["member_casual"] == "member"]["length_duration"].mean(), 1)如果样本能出结果,说明是全量数据处理的性能问题,这时可以考虑用
dask.dataframe替代pandas处理大数据,或者分块读取数据。length_duration数据类型异常:如果该列不是数值类型(比如是字符串),mean计算会隐性消耗大量资源甚至卡住。先检查数据类型:
print(df["length_duration"].dtype) # 如果是object类型,尝试转换为数值 df["length_duration"] = pd.to_numeric(df["length_duration"], errors="coerce")转换后再重新执行你的均值计算,注意
errors="coerce"会把无法转换的值设为NaN,不影响均值计算(pandas会自动忽略NaN)。内存不足:如果你的内存不足以承载筛选后的数据集,程序会卡在内存交换阶段。可以用以下命令查看DataFrame内存占用:
print(df.memory_usage(deep=True).sum() / 1024**2) # 输出占用内存MB数要是内存占用过高,建议先清理无关列再计算:
# 只保留需要的两列 slim_df = df[["member_casual", "length_duration"]] round(slim_df[slim_df["member_casual"] == "member"]["length_duration"].mean(), 1)
内容的提问来源于stack exchange,提问作者Ernesto Sanchez
相关产品推荐
相关产品推荐

