【问题标题】:Why cumulative sum has a drop为什么累计和有下降
【发布时间】:2022-11-21 18:59:17
【问题描述】:

我的数据中有一个特定的特征,如下所示:

我尝试在DataFrame中引入此列的累计和如下(特征是int64类型):

df['Cumulative'] = df['feature'].cumsum()

但是由于未知原因,我在这个函数中有一个下降,这很奇怪,因为原始列中的最小数字是 0:

有人可以解释为什么会发生这种情况以及我该如何解决这个问题。因为我只想对出现的功能求和。

先感谢您。

【问题讨论】:

  • 看起来您需要在对 feature 构建累积和之前按日期对值进行排序,因为图中右侧的最后一个值接近左侧的起始值。
  • 您的绘图比例不清楚,是否有可能您的功能定义为 int16 并在 32768 值之后包装?该功能的 dtype 是什么?
  • @amirhm dtype 是 int64。两个地块的比例相同。我只想累积总和。这意味着时间戳值的增加。
  • @Rabinzel 但如果我在 'cumsum()' 之前 'sort_values()' 那么我仍然没有持续增加的价值
  • @Egorsky 我写了一个简短的答案。你试过这样吗?也许您没有将排序后的值重新分配给 df。我的观点是,cumsum 只是将值从上到下相加,而不管它们以何种顺序出现。如果之后按时间顺序绘制数据,则数据不一定会在所有时间点都增加。

标签: python pandas dataframe cumulative-sum


【解决方案1】:

就像在建议的 cmets 中一样,先排序然后构建累积和。 你试过这样吗:

df = df.sort_values(by='Date') #where "Date" is the column name of the values on the x-axis
df['cumulative'] = df['feature'].cumsum()

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2016-03-05
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多