入门pandas—行列转换,环比与同比

pandas中的行列转换

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

pandas中的环比

环比:(本期 - 上一期)/ 上一期

原数据

    城市  月份  金额
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()的作用:
入门pandas—行列转换,环比与同比_第1张图片
按城市分组
保证每个城市内的数据是按月份排序

原数据

    城市  月份  金额
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

pandas中的同比

同比 = (本期 - 同期)/ 同期

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

你可能感兴趣的:(python)