【问题标题】:Calculate seasonality and trend of time series data for each cluster计算每个集群的时间序列数据的季节性和趋势
【发布时间】:2019-01-08 08:03:54
【问题描述】:

我有这个时间序列数据,现在我想使用“modal_price”计算每个 APMC 和商品集群的趋势季节性类型(乘法或加法)。数据集有大约 60,000 行这样的行,其中 APMC 和 Cluster 相同,但日期在变化。数据集如下:

             APMC |   Commodity  | qtl _weight| min_price | max_price | modal_price | district_name | Year | Month
date
2014-12-01  Akole   bajri            40              1375        1750      1563          Ahmadnagar  2014   12
2014-12-01  Akole   paddy-unhusked   346             1400        1800      1625          Ahmadnagar  2014   12
2014-12-01  Akole   wheat            55              1500        1900       1675         Ahmadnagar  2014   12
2014-12-01  Akole   bhagar/vari      59              2000        2600       2400         Ahmadnagar  2014   12
2014-12-01  Akole   gram              9              3200        3300       3235         Ahmadnagar  2014   12
2014-12-01  Jamkhed cotton           44199           3950        4033       3991         Ahmadnagar  2014   12
2014-12-01  Jamkhed bajri            846             1300        1488       1394         Ahmadnagar  2014   12
2014-12-01  Jamkhed wheat(husked)    155             1879        2231       2055         Ahmadnagar  2014   12
2014-12-01  Kopar   gram             421             1983        2698       2463         Ahmadnagar  2014   12
2014-12-01  Kopar   greengram         18             6734        7259       6759         Ahmadnagar  2014   12
2014-12-01  Kopar   soybean          1507            2945        3247       3199         Ahmadnagar  2014   12
2016-11-01  Sanga   wheat(husked)    222             1730        2173       1994         Ahmadnagar  2016   11

现在我尝试使用(APMC,商品和日期作为索引)为此使用数据透视表,但这无助于计算每个集群(APMC,商品)的平均值(计算趋势)。我只需要知道如何使用“modal_price”计算每个集群(APMC、Commodity)的平均值并将其添加为数据框/数据透视表中的 COLUMN。

【问题讨论】:

    标签: python pandas group-by time-series pivot-table


    【解决方案1】:

    也许 groupby 会为您提供趋势所需的内容,然后 transform 将使您能够将其投影回相同的索引? 比如:

    # group by your cluster
    g = df.groupby(["Year", "APMC", "Commodity"])
    # determine the trend per cluster but finalise back into original diimensions
    trend = g.modal_price.transform(lambda x: x.mean())
    df["trend"] = trend
    

    【讨论】:

    • 如果我必须计算每个季节相同的滚动平均值怎么办?
    • 在上面进行了修改,在 groupby 中包含“Year”。
    • 不应该包括月份吗?由于趋势以月为基础。还有滚动平均值()怎么样。我该怎么做。有的商品只有3-4个月,这种情况如何设置window_size
    • 趋势是基于您想要的任何基础,但是,您的问题要求“每年每个集群(APMC,商品)的平均值(计算趋势)”。如果您想要滚动平均值,请修改您的问题或提出新问题。
    • 附带说明,如果您想按日期属性(年、月、日)进行分组,则无需为其投影列,您可以执行类似 df.groupby(df .column.dt.year)。为您节省一列或 3
    猜你喜欢
    • 2019-08-07
    • 2022-08-19
    • 2022-01-02
    • 2023-03-03
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2017-06-13
    相关资源
    最近更新 更多