You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Pandas Series按人口绘制污染物浓度CDF累积分布图?

没问题!要绘制基于人口的污染物浓度累积分布函数(CDF),核心是按污染物浓度排序后,计算人口的累积占比——毕竟你要的是「基于人口」的分布,不是普通的样本数量分布。下面是完整的实现步骤和代码,结合你已有的代码片段补全:

步骤1:数据预处理与排序

先完成数据加载、清洗,并按污染物浓度升序排序(CDF需要从低浓度到高浓度累积):

import pandas as pd
import matplotlib.pyplot as plt

# 加载数据并清洗(补全你的代码片段)
df = pd.read_csv("./data/test.csv")
df = df[df.columns[1:]]  # 移除第一列无关索引
df = df.sort_values(by=['pm25'], ascending=True)  # 按污染物浓度升序排序,若你的列名是conc则替换为conc

步骤2:计算基于人口的累积比例

这里我们需要用人口数据来计算累积占比,这是「基于人口的CDF」和普通CDF的核心区别:

# 计算总人口
total_pop = df['pop'].sum()
# 计算累积人口数
df['cumulative_pop'] = df['pop'].cumsum()
# 计算累积人口占比(即CDF的y轴值)
df['cdf'] = df['cumulative_pop'] / total_pop

此时你需要的两个核心Series就是:df['pm25'](污染物浓度)和df['cdf'](基于人口的累积比例)。

步骤3:绘制CDF图

用matplotlib绘制直观的CDF曲线:

plt.figure(figsize=(10, 6))
# 绘制CDF曲线,可调整样式适配你的需求
plt.plot(df['pm25'], df['cdf'], marker='.', linestyle='-', color='#1f77b4', alpha=0.8)

# 添加图表标注
plt.xlabel('污染物浓度 (PM2.5)')
plt.ylabel('累积人口占比')
plt.title('基于人口的污染物浓度累积分布')
plt.grid(True, alpha=0.3)

plt.show()

额外小提示

  • 如果你的污染物浓度列名是conc,记得把代码里的pm25全部替换为conc;
  • 若要对比多组数据(比如不同区域的CDF),可以重复上述步骤,在同一张图上绘制多条曲线;
  • 追求更美观的可视化效果时,可改用seaborn.lineplot替代原生matplotlib绘图。

内容的提问来源于stack exchange,提问作者Han Zhengzu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:25:09