import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/转换.xlsx'
data = pd.read_excel(path)
data2 = pd.DataFrame(data.values.T,index=data.columns,columns=data.index)
print(data2)
0 1 2 3 4 5 6
姓名 丁智敏 李平平 卢海军 王松 王刚 张伊 张荣耀
性别 女 女 男 男 男 女 男
语文 50 73 76 54 78 60 64
数学 70 78 53 67 74 63 63
英语 53 53 80 67 60 55 61
环比:(本期 - 上一期)/ 上一期
原数据
城市 月份 金额
0 北京 1 21
1 北京 2 20
2 北京 3 23
3 北京 4 17
4 北京 5 30
5 北京 6 21
6 北京 7 19
7 北京 8 19
8 北京 9 24
9 北京 10 29
10 北京 11 29
11 北京 12 24
12 上海 1 22
13 上海 2 14
14 上海 3 20
15 上海 4 21
16 上海 5 30
17 上海 6 19
18 上海 7 19
19 上海 8 22
20 上海 9 22
21 上海 10 28
22 上海 11 22
23 上海 12 29
import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/环比.xlsx'
data = pd.read_excel(path)
上月 = data.金额.shift()
data['环比'] = (data.金额-上月)/(上月) #增加环比这一列
print(data)
城市 月份 金额 环比
0 北京 1 21 NaN
1 北京 2 20 -0.047619
2 北京 3 23 0.150000
3 北京 4 17 -0.260870
4 北京 5 30 0.764706
5 北京 6 21 -0.300000
6 北京 7 19 -0.095238
7 北京 8 19 0.000000
8 北京 9 24 0.263158
9 北京 10 29 0.208333
10 北京 11 29 0.000000
11 北京 12 24 -0.172414
12 上海 1 22 -0.083333
13 上海 2 14 -0.363636
14 上海 3 20 0.428571
15 上海 4 21 0.050000
16 上海 5 30 0.428571
17 上海 6 19 -0.366667
18 上海 7 19 0.000000
19 上海 8 22 0.157895
20 上海 9 22 0.000000
21 上海 10 28 0.272727
22 上海 11 22 -0.214286
23 上海 12 29 0.318182
shift()的作用:
按城市分组
保证每个城市内的数据是按月份排序
原数据
城市 月份 金额
0 北京 1 21
1 北京 2 20
2 北京 3 23
3 北京 4 17
4 北京 5 30
5 北京 6 21
6 北京 7 19
7 北京 8 19
8 北京 9 24
9 北京 10 29
10 北京 11 29
11 北京 12 24
12 上海 1 22
13 上海 2 14
14 上海 3 20
15 上海 4 21
16 上海 5 30
17 上海 6 19
18 上海 7 19
19 上海 8 22
20 上海 9 22
21 上海 10 28
22 上海 11 22
23 上海 12 29
import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/环比.xlsx'
data = pd.read_excel(path,'Sheet2')
def func(i): #i就相当于新的data
i['环比'] = (i.金额-i.金额.shift())/(i.金额.shift())
return i
data2 = data.sort_values(['城市','月份']).groupby('城市').apply(func) #先排序再分组
print(data2)
城市 月份 金额 环比
12 上海 1 22 NaN
13 上海 2 14 -0.363636
14 上海 3 20 0.428571
15 上海 4 21 0.050000
16 上海 5 30 0.428571
17 上海 6 19 -0.366667
18 上海 7 19 0.000000
19 上海 8 22 0.157895
20 上海 9 22 0.000000
21 上海 10 28 0.272727
22 上海 11 22 -0.214286
23 上海 12 29 0.318182
0 北京 1 21 NaN
1 北京 2 20 -0.047619
2 北京 3 23 0.150000
3 北京 4 17 -0.260870
4 北京 5 30 0.764706
5 北京 6 21 -0.300000
6 北京 7 19 -0.095238
7 北京 8 19 0.000000
8 北京 9 24 0.263158
9 北京 10 29 0.208333
10 北京 11 29 0.000000
11 北京 12 24 -0.172414
同比 = (本期 - 同期)/ 同期
import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/同比.xlsx'
data = pd.read_excel(path)
年 = data['日期'].dt.year
data2 = pd.pivot_table(data,index='店号',columns=年,values='金额',aggfunc=sum)
data2['环比'] = (data2[2019]-data2[2018])/(data2[2018])
print(data2)
日期 2018 2019 环比
店号
A001 7400 7293 -0.014459
B001 9086 9163 0.008475