gpt4 book ai didi

python - 是否可以为数据框的每一列创建一个额外的 pct_change 列?

转载 作者:行者123 更新时间:2023-12-04 08:21:06 26 4
gpt4 key购买 nike

我试图自己解决这个问题,并搜索了其他主题寻求帮助,但我的问题仍然存在。如果有人可以帮助我或为我指明正确的方向,我将不胜感激
我对 python 相当陌生,我正在尝试对 Pandas 数据框执行一些更改。
总而言之,我想验证销售数据的百分比变化。
我知道 pct_change 方法,下面是我尝试过的方法。
这是一个示例数据,看起来像我的原始数据框:

  store_id  sales_value      day
0 1 54,141.00 2020-12-22
1 1 78,921.00 2020-12-23
2 6 5,894.00 2020-12-24
3 6 22,991.00 2020-12-23
4 6 25,802.00 2020-12-22
我做了一个函数来计算行的变化。
它看起来像这样:
def var_percent(df, n):
return df.pct_change(n)
然后,使用:
df['var_pct'] = var_percent(df['sales_value'],1)
它给了我如下内容:
  store_id  sales_value    day           var_pct
0 1 54,141.00 2020-12-22 nan
1 1 78,921.00 2020-12-23 0.46
4 6 25,802.00 2020-12-22 -0.67
3 6 22,991.00 2020-12-23 -0.11
2 6 5,894.00 2020-12-24 -0.74
那真的不是我想要的。我需要单独查看每个商店的更改 (store_id),这种类型的配置计算行,无论它来自哪个商店。
向前迈进我试过这个:
df.set_index(["day", "store_id"]).unstack(level=1)
最后,我得到了我的实际数据帧,我一直坚持使用的数据帧,它有点像这样:
sotore_id     1      6       15      22   
day
2020-12-22 54141 25802 173399 36,200.00
2020-12-23 78921 22991 234885 32,762.00
2020-12-24 0 5894 0 10,956.00
2020-12-26 0 0 0 0.00 10980
2020-12-28 0 0 0 0.00 0
现在数据框是我需要的样子,但我还没有找到一种方法来实现 pct_change 我想要的方式,这将是这样的,为每个现有列添加一个百分比变化列(这些是虚拟数字,它是只是我希望它如何的直观表示):
sotore_id     1     1_pct    6       6_pct      15      15_pct    
day
2020-12-22 54141 0 25802 0 173399 0
2020-12-23 78921 25 22991 -8 234885 20
2020-12-24 0 0 5894 -60 0 0
2020-12-26 0 0 0.00 0 10980 1000
2020-12-28 0 0 0.00 0 0 0
甚至有可能这样做吗?

最佳答案

您可以使用以下内容:
销售值应转换为数字,日期应更改为日期时间,然后对数据进行排序。如果所有这些都已经完成,你可以跳过这个块:

df['sales_value']=pd.to_numeric(df['sales_value'].str.replace(",",''))
df['day'] = pd.to_datetime(df['day'])
df = df.sort_values(['store_id','day'])

计算 pct_change对于每个组,然后 unstack
out = (df.assign(pct=df.groupby("store_id")['sales_value'].pct_change()
.mul(100).round()).set_index(["day", "store_id"])
.unstack(level=1).fillna(0).sort_index(level=1,axis=1))

out.columns = out.columns.map('{0[1]} {0[0]}'.format)
print(out)



1 个
1 个销售值(value)
6%
6 销售值(value)


2020-12-22
0.0
54141.0
0.0
25802.0

2020-12-23
46.0
78921.0
-11.0
22991.0

2020-12-24
0.0
0.0
-74.0
5894.0

关于python - 是否可以为数据框的每一列创建一个额外的 pct_change 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65497013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com