wangxishi

2020-11-25   阅读量: 5743

Python大数据

PYTHON计算

想把每列按照月份自动计算均值,比如计算3个月均值,就是1,2,3月出一个均值,2,3,4月出一个均值,依次往下,要计算3个月均值和6个月均值,X1,X2,X3,X4每列变量都自动求出3个月均值和6个均值

image.png

计算问题1125.xlsx


添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
49.7595 1 15 关注作者 收藏

评论(15)

ermutuxia
2020-11-27
import pandas as pd
import numpy as np
data=pd.read_excel("D:\\360安全浏览器下载\\平方.xlsx")
colname=data.columns
for i in colname:
    print(i)
    data[str(i)+"_平方"]=data.loc[:,i].map(lambda x :x**2)

image.png

0.0000 0 0 回复
ermutuxia
2020-11-27

你的平方.xlsx数据如下:

image.png

0.0000 0 0 回复
wangxishi
2020-11-27

想计算每列的平方值,如何计算

文件已上传

平方.xlsx


0.0000 0 0 回复
wangxishi
2020-11-26

明白了!谢谢!

0.0000 0 0 回复
ermutuxia
2020-11-26

你看下能不能明白呀

import pandas as pd

import numpy as np


#导入数据

data=pd.read_excel("D:\\360安全浏览器下载\\1606269162_843604.xlsx")

#我这里以x1为例讲解shift和滞后呀,

#比如shift(6)表示滞后6期

data["X1_滞后6期"]=data["X1"].shift(6)

data.loc[:10,["月份","X1","X1_滞后6期"]]


image.png

0.0000 0 0 回复
wangxishi
2020-11-26

这个shift(6)是原始数据整个向下移动6行吗,那这样的话,不就相当于自己减去6期之前的自己吗

image.png

0.0000 0 0 回复
wangxishi
2020-11-25

对的

0.0000 0 0 回复
ermutuxia
2020-11-25

你看下是想要这样的结果吗

import pandas as pd

import numpy as np


#导入数据

data=pd.read_excel("D:\\360安全浏览器下载\\1606269162_843604.xlsx")


#计算简单的移动平均数

#在series下面有rolling方法可以对这个series进行滚动的移动平均计算


#只以X1为例进行说明

data["X1_3期移动平均"]=data["X1"].rolling(3).mean()

data["同比6期增长率"]=(data["X1_3期移动平均"]-data["X1_3期移动平均"].shift(6))/(data["X1_3期移动平均"].shift(6))

data["同比12期增长率"]=(data["X1_3期移动平均"]-data["X1_3期移动平均"].shift(12))/(data["X1_3期移动平均"].shift(12))

data["同比24期增长率"]=(data["X1_3期移动平均"]-data["X1_3期移动平均"].shift(24))/(data["X1_3期移动平均"].shift(24))

image.png

0.0000 0 0 回复
wangxishi
2020-11-25

比如2012年10,11,12月的均值 跟6个月前的均值同比,就是2012年10,11,12月三个月的均值,跟2012年4月5月6月三个月的均值同比,同比公式(2012年10,11,12月的均值-2012年4月5月6月均值)/2012年4月5月6月均值,这是6个月同比,同理,如果是12个月同比,就是2012年10,11,12月的均值往前推12个月的三个月均值进行比较,24个月同比就是往前推24个月的均值同比

0.0000 0 0 回复
ermutuxia
2020-11-25

你可以在excel上算下结果,把你想要的结果贴出来。excel上算的话应该比较容易。然后我再给你写python代码呀

0.0000 0 0 回复
ermutuxia
2020-11-25

不太明白呀,你要生成的三列数据的名字叫什么,看你的描述不是只增加三列数据呀

0.0000 0 0 回复
wangxishi
2020-11-25

可以再加上三列,分别是3个月均值环比6个月,12个月,24个月的增减幅吗

0.0000 0 0 回复
ermutuxia
2020-11-25
python的pandas库计算移动平均值





import pandas as pd
import numpy as np
#导入数据
data=pd.read_excel("D:\\360安全浏览器下载\\1606269162_843604.xlsx")
#计算简单的移动平均数
#在series下面有rolling方法可以对这个series进行滚动的移动平均计算
xlist=["X1","X2","X3"]
for x in xlist:
    for n in [3,6]:        
        data[x+"_"+str(n)+"期移动平均值"]=data[x].rolling(n).mean()

image.png

0.0000 0 0 回复
wangxishi
2020-11-25

对,还有6个月均值

0.0000 0 0 回复
ermutuxia
2020-11-25

是这个意思吗?image.png

0.0000 0 0 回复

推荐课程