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

如何用Pandas计算每日生产件数的增长百分比?

如何计算并展示每日生产件数的增长百分比

嘿,我来帮你搞定这个问题!其实计算每日生产件数的增长百分比不需要纠结transpose()或unstack(),用pandas里的专用方法就能轻松解决,我给你一步步拆解:

先明确常见数据结构(假设你的CSV是这种格式)

通常每日生产件数的CSV会是「日期+生产数量」的长格式,比如:

date,production
2024-01-01,100
2024-01-02,120
2024-01-03,114
2024-01-04,137
2024-01-05,145

如果你的数据是宽格式(日期作为列名),我后面也会补充处理方法。


步骤1:读取并整理数据

首先用pandas读取CSV,重点是把日期列解析成日期格式,确保后续计算的正确性:

import pandas as pd

# 读取CSV,自动解析date列为日期类型,并设为索引
df = pd.read_csv('production_data.csv', parse_dates=['date'], index_col='date')

# 务必按日期升序排序(避免CSV里日期乱序导致计算错误)
df = df.sort_index()

步骤2:计算每日增长百分比

用pandas内置的pct_change()方法就能直接算出环比增长,它会自动计算当前行相对于前一行的变化率,乘以100转成百分比格式即可:

# 计算增长百分比,保留2位小数
df['growth_pct'] = df['production'].pct_change() * 100
df['growth_pct'] = df['growth_pct'].round(2)

运行后你的数据会变成这样:

production  growth_pct
date                             
2024-01-01         100         NaN
2024-01-02         120        20.0
2024-01-03         114        -5.0
2024-01-04         137        20.18
2024-01-05         145         5.84
  • 第一行的NaN是因为没有前一天的数据,你可以用df['growth_pct'] = df['growth_pct'].fillna(0)填充为0,或者用df = df.dropna()直接删除该行。

步骤3:可视化展示(可选但直观)

如果想把增长趋势可视化,用matplotlib做双轴图就能同时展示生产件数和增长百分比:

import matplotlib.pyplot as plt

plt.figure(figsize=(10,6))
# 绘制生产件数折线图
plt.plot(df.index, df['production'], marker='o', label='生产件数')
# 双Y轴绘制增长百分比柱状图
ax2 = plt.gca().twinx()
ax2.bar(df.index, df['growth_pct'], alpha=0.3, color='red', label='增长百分比(%)')

# 美化图表
plt.title('每日生产件数及增长趋势')
plt.xlabel('日期')
plt.ylabel('生产件数')
ax2.set_ylabel('增长百分比(%)')
plt.legend(loc='upper left')
ax2.legend(loc='upper right')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

如果你的数据是宽格式(日期为列名)怎么办?

比如CSV是这种结构:

product,2024-01-01,2024-01-02,2024-01-03
A,100,120,114
B,80,90,95

这时候需要先转成长格式再计算,用melt()方法就能搞定:

df = pd.read_csv('production_wide.csv')
# 转成长格式:产品、日期、生产件数
df_long = df.melt(id_vars='product', var_name='date', value_name='production')
# 解析日期列
df_long['date'] = pd.to_datetime(df_long['date'])
# 按产品+日期排序
df_long = df_long.sort_values(['product', 'date'])
# 分组计算每个产品的每日增长百分比
df_long['growth_pct'] = df_long.groupby('product')['production'].pct_change() * 100
df_long['growth_pct'] = df_long['growth_pct'].round(2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:30:49