【问题标题】:exponential moving average using pandas使用熊猫的指数移动平均线
【发布时间】:2019-07-17 13:42:45
【问题描述】:

我有这个数据框

                   2000  2001  2002  2003  2005  2006
Country Location                                    
US      Hawai       20    40   120   260    60   100
IT      Torino      40   450   140   540    54   200
FR      Paris       60   660   660   640    64   300
ISR     JER         80   880   380   830   830   400  

我想计算每个国家/地区的指数移动平均线 (EMA7)(不包括 2000 年至 2005 年 - 2006 年)
我天真地尝试了这种方法。它是否正确?

ema7=df1.ewm(span=7,adjust=False).mean()   

给了

                   2000       2001      2002     2003       2005      2006
Country Location                                                            
US      Hawai     20.0000   40.00000  120.0000  260.000   60.00000  100.0000
IT      Torino    25.0000  142.50000  125.0000  330.000   58.50000  125.0000
FR      Paris     33.7500  271.87500  258.7500  407.500   59.87500  168.7500
ISR     JER       45.3125  423.90625  289.0625  513.125  252.40625  226.5625  

应该排除 2006 年这一事实的一部分,我无法判断我得到的值是否正确。有什么帮助吗?

【问题讨论】:

    标签: pandas dataframe moving-average


    【解决方案1】:

    用途:

    ema7=df1.drop(2006, axis=1).ewm(span=7,adjust=False).mean() 
    print (ema7)
                         2000       2001      2002     2003       2005
    Country Location                                                  
    US      Hawai     20.0000   40.00000  120.0000  260.000   60.00000
    IT      Torino    25.0000  142.50000  125.0000  330.000   58.50000
    FR      Paris     33.7500  271.87500  258.7500  407.500   59.87500
    ISR     JER       45.3125  423.90625  289.0625  513.125  252.40625
    
    ema7=(df1.set_index(2006, append=True)
            .ewm(span=7,adjust=False)
            .mean()
            .reset_index(level=2)
            .sort_index(axis=1))
    print (ema7)
                         2000       2001      2002     2003       2005  2006
    Country Location                                                        
    US      Hawai     20.0000   40.00000  120.0000  260.000   60.00000   100
    IT      Torino    25.0000  142.50000  125.0000  330.000   58.50000   200
    FR      Paris     33.7500  271.87500  258.7500  407.500   59.87500   300
    ISR     JER       45.3125  423.90625  289.0625  513.125  252.40625   400
    

    【讨论】:

    • 所以您确认 span=7 和 adjust=False 是正确使用的值?
    • @Crovish - 很难的问题,我不知道需要什么。只需检查ewm,但统计数据对我来说很难:(
    • 公平点。如果我想更新 ema7(没有 2006)并将其所有值除以 2006 列值,实现此目的的最佳方法是什么?
    • @Crovish - 最后需要删除 2006 年的专栏吗?
    • @Crovish - 你能检查一下df = df1.div(df1.pop(2006), axis=0) 吗?
    猜你喜欢
    • 2021-08-26
    • 2021-10-23
    • 1970-01-01
    • 2018-10-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多