【问题标题】:How to compare changes of monthly values in different years in a dataframe, Pandas/Python如何比较数据框中不同年份的月度值变化,Pandas/Python
【发布时间】:2019-01-04 23:39:56
【问题描述】:

我有一个数据框,其中列是

'Jan-2001' 'Feb-2001' ... 'Dec-2001'... 'Jan-2002' ... 'Dec-2002' ... 'Jan-2018' ... 'Dec-2018'.

  200        190.4          55.23         12.3            130.2        30                42 

  ...

这些列的值是浮点数。我需要找到不同年份同一月份的值变化。例如,我需要检查 2018 年 3 月的值与上一年、2017 年 3 月等其他月份/年份相比有多少变化。我需要标记所有与上一年相比变化 30% 的值。例如,如果 2018 年 4 月的值与 2017 年 4 月的值相比变化了 30%,我需要标记它。如何在数据框中按相同月份但不同年份搜索值是我最大的问题。

我所做的是转置数据框,所以现在我有日期而不是行中的列(日期现在是数据框索引),我已将新列“月”和“日期”分配给数据框,但不确定如何接近这个,如果这是要走的路。我想用聚合分组不是一个选项,因为如果我以 sum/mean 为例,我的值将会改变,而我无法改变它们。

更新:

转置的数据框:

Jan-1990    200     1.2    .... 45
Feb-2001    190.4   287.5  ...  2.1
 ... 

【问题讨论】:

  • 建议提供文本格式的样本数据集
  • 正如@Yuca 所说,您应该看看mcve
  • 一切都解释清楚了,不知道还能补充什么。为方便起见,添加了一行数据。
  • 这不是解释,而是提供样本数据集,以便我们可以测试和确认所需的输出。添加示例数据使人们更容易为您提供答案,但如果您不想听我们的建议,那没关系,我们只是想提供帮助

标签: python pandas


【解决方案1】:

您可能想使用built-in python date format。 首先,您应该将字符串解析为这种日期格式,最有可能使用strptime

然后您可以定义 1 年的时间增量,并将其添加或减去当前日期。 这将允许您在 pandas 数据框中搜索相同的日期(pandas 本身支持对日期时间或日期期间进行索引。 除了手动使用 timedelta,您还可以使用pandas.date_range,期限为 1 年。

【讨论】:

  • 我不明白这如何让我知道 2005 年 2 月的值在 2006 年 2 月发生了一定的变化?日期不同 - 月份相同,但年份不同。
  • 它应该允许您轻松选择所有年份 2 月发生的所有数据点(通过使用良好的范围)。然后,在数据框的这个子集上,您可以应用差异来获得该月的年度增长。然后只需过滤您确定的阈值即可。除非我误解了你想要达到的目标?
  • 不,我认为您理解正确,只是对 date_range 有点困惑,但会尝试一下。
  • 你有代码示例吗?我不确定如何进行。我是否将我的数据框保留为原始格式或转置格式?我更新了我的问题。
猜你喜欢
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多