【问题标题】:Pandas Dataframe increased or decreased in a certain amount of timePandas Dataframe 在一定时间内增加或减少
【发布时间】:2023-02-02 13:26:23
【问题描述】:

我有一个具有以下结构的 DataFrame:

# Import pandas library
import pandas as pd


# initialize list of lists
data = [['R.04T', 1, 2013, 23456, 22, 1 ], ['R.04T', 15, 2014, 
23456, 22, 1], ['F.04T', 9, 2010, 75920, 00, 3], ['F.04T', 4, 
2012,  75920, 00, 3], ['R.04T', 7,  2013, 20054, 13, 1], 
['R.04T',12,  2014, 20058,13, 1]]


# Create the pandas DataFrame
df = pd.DataFrame(data, columns=['product_code', 'sold', 'year', 'city_number', 
'district_number', 'number_of_the_department'])
print(df)

我想知道这些地点 ('city_number' + 'district_number' + 'number_of_the_department') 是否增加或减少了每篇文章每年的销售额。我考虑过将列连接到一个位置列,如下所示:

# join the locations
df['location'] = df['city_number'].astype(str) + ','+ 
df['district_number'].astype(str) + ','+ df['number_of_the_department'].astype(str)

但我不确定如何分组? df 得到我的问题的答案。

我想知道销售额是否增加或减少(每年和项目)每年一定百分比(p.ex. 2013 到 2014 x% 减少)。

也许有人可以帮忙? :)

【问题讨论】:

  • 我不太确定您希望输出如何......但是如果您这样做df2 = df.groupby['product_code','year,'location']).max(),那么可以很容易地将所有文章一起可视化并查看哪一年的销量最好。
  • 谢谢你。我想获得一个新的数据框,在其中我可以看到某个位置的一种产品在“已售出”类别中增加大约(比如说 40%)的年份。也许我可以尝试更好地形象化。

标签: python pandas dataframe numpy multiple-columns


【解决方案1】:

尝试这个:

df = df.assign(
    pct_change_sold=df.sort_values(by="year")
    .groupby(by=["city_number", "district_number", "number_of_the_department"])["sold"]
    .pct_change()
    .fillna(0)
)

  product_code  sold  year  city_number  district_number  number_of_the_department  pct_change_sold
0        R.04T     1  2013        23456               22                         1         0.000000
1        R.04T    15  2014        23456               22                         1        14.000000
2        F.04T     9  2010        75920                0                         3         0.000000
3        F.04T     4  2012        75920                0                         3        -0.555556
4        R.04T     7  2006        75920               22                         1         0.000000
5        U.90G    12  2005        75021               34                         3         0.000000

【讨论】:

  • 它看起来非常完美!但有一件事我不明白:F.04T 产品没有百分比变化,即使“已售出”部分发生变化。当我查看索引 4 时:R.04T - -0.55 是从哪里来的?从 7 到 1 减少了 85.71%,从 7 到 15 增加了 114.28%。我哪里错了?
  • 调查它
  • 固定的,编辑过的帖子。
  • 很抱歉打扰你,但它现在不工作......
  • 你能告诉我什么不起作用吗?关于 pct_change 计算,我看到的输出看起来符合预期,即第一组提高 140% (14.0),下一组下降 55%,最后两组只有一个观察值,pct change 将返回空值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 2012-05-30
相关资源
最近更新 更多