一 、加法贡献度计算

import pandas as pd
import numpy as np
df = pd.read_csv("C:/Users/supaur/Desktop/test.csv")
df
date a b c d target
0 2022/10/21 40 141 241 50 472
1 2022/10/22 40 120 241 50 451
2 2022/10/23 39 142 239 50 470
3 2022/10/24 40 141 241 50 472
4 2022/10/25 41 60 230 51 382
5 2022/10/26 42 141 241 52 476
6 2022/10/27 43 141 241 53 478
7 2022/10/28 44 141 239 58 482
8 2022/10/29 45 141 238 55 479
9 2022/10/30 46 142 239 56 483
10 2022/10/31 47 143 240 57 487
11 2022/11/1 48 144 241 58 491
12 2022/11/2 49 145 242 59 495
13 2022/11/3 50 146 243 60 499
14 2022/11/4 51 147 244 61 503
15 2022/11/5 52 148 245 62 507
16 2022/11/6 53 149 246 63 511
17 2022/11/7 54 150 247 64 515
# 对df的数值列错位相减
df_diff = df.loc[:,"a":"target"].diff()
df_diff
a b c d target
0 NaN NaN NaN NaN NaN
1 0.0 -21.0 0.0 0.0 -21.0
2 -1.0 22.0 -2.0 0.0 19.0
3 1.0 -1.0 2.0 0.0 2.0
4 1.0 -81.0 -11.0 1.0 -90.0
5 1.0 81.0 11.0 1.0 94.0
6 1.0 0.0 0.0 1.0 2.0
7 1.0 0.0 -2.0 5.0 4.0
8 1.0 0.0 -1.0 -3.0 -3.0
9 1.0 1.0 1.0 1.0 4.0
10 1.0 1.0 1.0 1.0 4.0
11 1.0 1.0 1.0 1.0 4.0
12 1.0 1.0 1.0 1.0 4.0
13 1.0 1.0 1.0 1.0 4.0
14 1.0 1.0 1.0 1.0 4.0
15 1.0 1.0 1.0 1.0 4.0
16 1.0 1.0 1.0 1.0 4.0
17 1.0 1.0 1.0 1.0 4.0
# 套用公式
df["a_contribution"] = df_diff["a"]/df_diff["target"]*100
df["b_contribution"] = df_diff["b"]/df_diff["target"]*100
df["c_contribution"] = df_diff["c"]/df_diff["target"]*100
df["d_contribution"] = df_diff["d"]/df_diff["target"]*100
df
date a b c d target a_contribution b_contribution c_contribution d_contribution
0 2022/10/21 40 141 241 50 472 NaN NaN NaN NaN
1 2022/10/22 40 120 241 50 451 -0.000000 100.000000 -0.000000 -0.000000
2 2022/10/23 39 142 239 50 470 -5.263158 115.789474 -10.526316 0.000000
3 2022/10/24 40 141 241 50 472 50.000000 -50.000000 100.000000 0.000000
4 2022/10/25 41 60 230 51 382 -1.111111 90.000000 12.222222 -1.111111
5 2022/10/26 42 141 241 52 476 1.063830 86.170213 11.702128 1.063830
6 2022/10/27 43 141 241 53 478 50.000000 0.000000 0.000000 50.000000
7 2022/10/28 44 141 239 58 482 25.000000 0.000000 -50.000000 125.000000
8 2022/10/29 45 141 238 55 479 -33.333333 -0.000000 33.333333 100.000000
9 2022/10/30 46 142 239 56 483 25.000000 25.000000 25.000000 25.000000
10 2022/10/31 47 143 240 57 487 25.000000 25.000000 25.000000 25.000000
11 2022/11/1 48 144 241 58 491 25.000000 25.000000 25.000000 25.000000
12 2022/11/2 49 145 242 59 495 25.000000 25.000000 25.000000 25.000000
13 2022/11/3 50 146 243 60 499 25.000000 25.000000 25.000000 25.000000
14 2022/11/4 51 147 244 61 503 25.000000 25.000000 25.000000 25.000000
15 2022/11/5 52 148 245 62 507 25.000000 25.000000 25.000000 25.000000
16 2022/11/6 53 149 246 63 511 25.000000 25.000000 25.000000 25.000000
17 2022/11/7 54 150 247 64 515 25.000000 25.000000 25.000000 25.000000

二 、乘法贡献度计算

df2 = pd.read_excel("C:/Users/supaur/Desktop/乘法.xlsx")
df2
date a b target
0 2022-10-21 0.283688 0.207469 0.058856
1 2022-10-22 0.333333 0.207469 0.069156
2 2022-10-23 0.274648 0.209205 0.057458
3 2022-10-24 0.283688 0.207469 0.058856
4 2022-10-25 0.683333 0.221739 0.151522
5 2022-10-26 0.297872 0.215768 0.064271
6 2022-10-27 0.304965 0.219917 0.067067
7 2022-10-28 0.312057 0.242678 0.075729
8 2022-10-29 0.319149 0.231092 0.073753
9 2022-10-30 0.323944 0.234310 0.075903
10 2022-10-31 0.328671 0.237500 0.078059
11 2022-11-01 0.333333 0.240664 0.080221
12 2022-11-02 0.337931 0.243802 0.082388
13 2022-11-03 0.342466 0.246914 0.084559
14 2022-11-04 0.346939 0.250000 0.086735
15 2022-11-05 0.351351 0.253061 0.088913
16 2022-11-06 0.355705 0.256098 0.091095
17 2022-11-07 0.360000 0.259109 0.093279
# 位置移动,整体上移一行
df2_shift = df2.shift(-1)
df2_shift
date a b target
0 2022-10-22 0.333333 0.207469 0.069156
1 2022-10-23 0.274648 0.209205 0.057458
2 2022-10-24 0.283688 0.207469 0.058856
3 2022-10-25 0.683333 0.221739 0.151522
4 2022-10-26 0.297872 0.215768 0.064271
5 2022-10-27 0.304965 0.219917 0.067067
6 2022-10-28 0.312057 0.242678 0.075729
7 2022-10-29 0.319149 0.231092 0.073753
8 2022-10-30 0.323944 0.234310 0.075903
9 2022-10-31 0.328671 0.237500 0.078059
10 2022-11-01 0.333333 0.240664 0.080221
11 2022-11-02 0.337931 0.243802 0.082388
12 2022-11-03 0.342466 0.246914 0.084559
13 2022-11-04 0.346939 0.250000 0.086735
14 2022-11-05 0.351351 0.253061 0.088913
15 2022-11-06 0.355705 0.256098 0.091095
16 2022-11-07 0.360000 0.259109 0.093279
17 NaT NaN NaN NaN
# 对应相除得到a/b
df2_move = df2_shift.iloc[:,1:3].div(df2.iloc[:,1:3],axis=0)
df2_move
a b
0 1.175000 1.000000
1 0.823944 1.008368
2 1.032915 0.991701
3 2.408750 1.068783
4 0.435911 0.973070
5 1.023810 1.019231
6 1.023256 1.103497
7 1.022727 0.952260
8 1.015023 1.013922
9 1.014594 1.013616
10 1.014184 1.013322
11 1.013793 1.013038
12 1.013419 1.012764
13 1.013061 1.012500
14 1.012719 1.012245
15 1.012390 1.011998
16 1.012075 1.011760
17 NaN NaN
# 整体下移一行
df2_move.shift(1)
a b
0 NaN NaN
1 1.175000 1.000000
2 0.823944 1.008368
3 1.032915 0.991701
4 2.408750 1.068783
5 0.435911 0.973070
6 1.023810 1.019231
7 1.023256 1.103497
8 1.022727 0.952260
9 1.015023 1.013922
10 1.014594 1.013616
11 1.014184 1.013322
12 1.013793 1.013038
13 1.013419 1.012764
14 1.013061 1.012500
15 1.012719 1.012245
16 1.012390 1.011998
17 1.012075 1.011760
# 索引连接
df_merge=pd.merge(df2,df2_move.shift(1),left_index=True,right_index=True,suffixes=("","_move"))
df_merge
date a b target a_move b_move
0 2022-10-21 0.283688 0.207469 0.058856 NaN NaN
1 2022-10-22 0.333333 0.207469 0.069156 1.175000 1.000000
2 2022-10-23 0.274648 0.209205 0.057458 0.823944 1.008368
3 2022-10-24 0.283688 0.207469 0.058856 1.032915 0.991701
4 2022-10-25 0.683333 0.221739 0.151522 2.408750 1.068783
5 2022-10-26 0.297872 0.215768 0.064271 0.435911 0.973070
6 2022-10-27 0.304965 0.219917 0.067067 1.023810 1.019231
7 2022-10-28 0.312057 0.242678 0.075729 1.023256 1.103497
8 2022-10-29 0.319149 0.231092 0.073753 1.022727 0.952260
9 2022-10-30 0.323944 0.234310 0.075903 1.015023 1.013922
10 2022-10-31 0.328671 0.237500 0.078059 1.014594 1.013616
11 2022-11-01 0.333333 0.240664 0.080221 1.014184 1.013322
12 2022-11-02 0.337931 0.243802 0.082388 1.013793 1.013038
13 2022-11-03 0.342466 0.246914 0.084559 1.013419 1.012764
14 2022-11-04 0.346939 0.250000 0.086735 1.013061 1.012500
15 2022-11-05 0.351351 0.253061 0.088913 1.012719 1.012245
16 2022-11-06 0.355705 0.256098 0.091095 1.012390 1.011998
17 2022-11-07 0.360000 0.259109 0.093279 1.012075 1.011760
df_merge["con_a"]= 1-df_merge.loc[:,"a_move"]
df_merge["con_b"]= 1-df_merge.loc[:,"b_move"]
df_merge
date a b target a_move b_move con_a con_b
0 2022-10-21 0.283688 0.207469 0.058856 NaN NaN NaN NaN
1 2022-10-22 0.333333 0.207469 0.069156 1.175000 1.000000 -0.175000 0.000000
2 2022-10-23 0.274648 0.209205 0.057458 0.823944 1.008368 0.176056 -0.008368
3 2022-10-24 0.283688 0.207469 0.058856 1.032915 0.991701 -0.032915 0.008299
4 2022-10-25 0.683333 0.221739 0.151522 2.408750 1.068783 -1.408750 -0.068783
5 2022-10-26 0.297872 0.215768 0.064271 0.435911 0.973070 0.564089 0.026930
6 2022-10-27 0.304965 0.219917 0.067067 1.023810 1.019231 -0.023810 -0.019231
7 2022-10-28 0.312057 0.242678 0.075729 1.023256 1.103497 -0.023256 -0.103497
8 2022-10-29 0.319149 0.231092 0.073753 1.022727 0.952260 -0.022727 0.047740
9 2022-10-30 0.323944 0.234310 0.075903 1.015023 1.013922 -0.015023 -0.013922
10 2022-10-31 0.328671 0.237500 0.078059 1.014594 1.013616 -0.014594 -0.013616
11 2022-11-01 0.333333 0.240664 0.080221 1.014184 1.013322 -0.014184 -0.013322
12 2022-11-02 0.337931 0.243802 0.082388 1.013793 1.013038 -0.013793 -0.013038
13 2022-11-03 0.342466 0.246914 0.084559 1.013419 1.012764 -0.013419 -0.012764
14 2022-11-04 0.346939 0.250000 0.086735 1.013061 1.012500 -0.013061 -0.012500
15 2022-11-05 0.351351 0.253061 0.088913 1.012719 1.012245 -0.012719 -0.012245
16 2022-11-06 0.355705 0.256098 0.091095 1.012390 1.011998 -0.012390 -0.011998
17 2022-11-07 0.360000 0.259109 0.093279 1.012075 1.011760 -0.012075 -0.011760
# 套用公式
df_merge["a_contribution"]=df_merge.loc[:,"con_a"]/(df_merge.loc[:,"con_a"]+df_merge.loc[:,"con_b"])*100
df_merge["b_contribution"]=df_merge.loc[:,"con_b"]/(df_merge.loc[:,"con_a"]+df_merge.loc[:,"con_b"])*100
df_merge
date a b target a_move b_move con_a con_b a_contribution b_contribution
0 2022-10-21 0.283688 0.207469 0.058856 NaN NaN NaN NaN NaN NaN
1 2022-10-22 0.333333 0.207469 0.069156 1.175000 1.000000 -0.175000 0.000000 100.000000 -0.000000
2 2022-10-23 0.274648 0.209205 0.057458 0.823944 1.008368 0.176056 -0.008368 104.990336 -4.990336
3 2022-10-24 0.283688 0.207469 0.058856 1.032915 0.991701 -0.032915 0.008299 133.712411 -33.712411
4 2022-10-25 0.683333 0.221739 0.151522 2.408750 1.068783 -1.408750 -0.068783 95.344765 4.655235
5 2022-10-26 0.297872 0.215768 0.064271 0.435911 0.973070 0.564089 0.026930 95.443421 4.556579
6 2022-10-27 0.304965 0.219917 0.067067 1.023810 1.019231 -0.023810 -0.019231 55.319149 44.680851
7 2022-10-28 0.312057 0.242678 0.075729 1.023256 1.103497 -0.023256 -0.103497 18.347335 81.652665
8 2022-10-29 0.319149 0.231092 0.073753 1.022727 0.952260 -0.022727 0.047740 -90.863612 190.863612
9 2022-10-30 0.323944 0.234310 0.075903 1.015023 1.013922 -0.015023 -0.013922 51.903311 48.096689
10 2022-10-31 0.328671 0.237500 0.078059 1.014594 1.013616 -0.014594 -0.013616 51.733471 48.266529
11 2022-11-01 0.333333 0.240664 0.080221 1.014184 1.013322 -0.014184 -0.013322 51.568219 48.431781
12 2022-11-02 0.337931 0.243802 0.082388 1.013793 1.013038 -0.013793 -0.013038 51.407329 48.592671
13 2022-11-03 0.342466 0.246914 0.084559 1.013419 1.012764 -0.013419 -0.012764 51.250589 48.749411
14 2022-11-04 0.346939 0.250000 0.086735 1.013061 1.012500 -0.013061 -0.012500 51.097804 48.902196
15 2022-11-05 0.351351 0.253061 0.088913 1.012719 1.012245 -0.012719 -0.012245 50.948791 49.051209
16 2022-11-06 0.355705 0.256098 0.091095 1.012390 1.011998 -0.012390 -0.011998 50.803379 49.196621
17 2022-11-07 0.360000 0.259109 0.093279 1.012075 1.011760 -0.012075 -0.011760 50.661409 49.338591

三 、除法贡献度计算

df3 = pd.read_excel("C:/Users/supaur/Desktop/除法.xlsx")
df3
date a1 a2 b1 b2 c1 c2 d1 d2 target
0 2022-10-21 684 775 714 975 758 815 654 908 0.809099
1 2022-10-22 794 997 134 653 417 651 804 929 0.665325
2 2022-10-23 388 557 309 743 294 912 714 804 0.565318
3 2022-10-24 413 740 119 674 658 895 657 809 0.592367
4 2022-10-25 644 810 798 867 169 558 816 999 0.750464
5 2022-10-26 326 597 408 869 753 830 481 664 0.664865
6 2022-10-27 171 930 667 881 567 744 249 601 0.524081
7 2022-10-28 149 659 403 773 110 317 569 598 0.524499
8 2022-10-29 455 938 668 963 646 879 497 608 0.668831
9 2022-10-30 348 998 698 965 105 716 125 238 0.437436
10 2022-10-31 484 560 220 968 348 615 266 536 0.491975
11 2022-11-01 438 750 589 843 762 942 715 807 0.749252
12 2022-11-02 641 714 296 436 230 633 755 939 0.706098
13 2022-11-03 543 746 746 951 132 703 323 661 0.569748
14 2022-11-04 378 414 228 926 399 808 611 898 0.530532
15 2022-11-05 611 624 304 641 675 909 325 577 0.696111
16 2022-11-06 675 687 405 639 798 836 388 463 0.863238
17 2022-11-07 189 465 417 542 203 293 348 720 0.572772
# 对各维度数据求和  添加两列 sum_1,sum_2  其中target=sum_1/sum_2
df3["sum_1"] = df3.loc[:,"a1"]+df3.loc[:,"b1"]+df3.loc[:,"c1"]+df3.loc[:,"d1"]
df3["sum_2"] = df3.loc[:,"a2"]+df3.loc[:,"b2"]+df3.loc[:,"c2"]+df3.loc[:,"d2"]
df3
date a1 a2 b1 b2 c1 c2 d1 d2 target sum_1 sum_2
0 2022-10-21 684 775 714 975 758 815 654 908 0.809099 2810 3473
1 2022-10-22 794 997 134 653 417 651 804 929 0.665325 2149 3230
2 2022-10-23 388 557 309 743 294 912 714 804 0.565318 1705 3016
3 2022-10-24 413 740 119 674 658 895 657 809 0.592367 1847 3118
4 2022-10-25 644 810 798 867 169 558 816 999 0.750464 2427 3234
5 2022-10-26 326 597 408 869 753 830 481 664 0.664865 1968 2960
6 2022-10-27 171 930 667 881 567 744 249 601 0.524081 1654 3156
7 2022-10-28 149 659 403 773 110 317 569 598 0.524499 1231 2347
8 2022-10-29 455 938 668 963 646 879 497 608 0.668831 2266 3388
9 2022-10-30 348 998 698 965 105 716 125 238 0.437436 1276 2917
10 2022-10-31 484 560 220 968 348 615 266 536 0.491975 1318 2679
11 2022-11-01 438 750 589 843 762 942 715 807 0.749252 2504 3342
12 2022-11-02 641 714 296 436 230 633 755 939 0.706098 1922 2722
13 2022-11-03 543 746 746 951 132 703 323 661 0.569748 1744 3061
14 2022-11-04 378 414 228 926 399 808 611 898 0.530532 1616 3046
15 2022-11-05 611 624 304 641 675 909 325 577 0.696111 1915 2751
16 2022-11-06 675 687 405 639 798 836 388 463 0.863238 2266 2625
17 2022-11-07 189 465 417 542 203 293 348 720 0.572772 1157 2020
#各列数据错位相减
df3_move = df3.loc[:,"a1":"d2"].diff()
df3_move = df3_move.shift(-1)
df3_move
a1 a2 b1 b2 c1 c2 d1 d2
0 110.0 222.0 -580.0 -322.0 -341.0 -164.0 150.0 21.0
1 -406.0 -440.0 175.0 90.0 -123.0 261.0 -90.0 -125.0
2 25.0 183.0 -190.0 -69.0 364.0 -17.0 -57.0 5.0
3 231.0 70.0 679.0 193.0 -489.0 -337.0 159.0 190.0
4 -318.0 -213.0 -390.0 2.0 584.0 272.0 -335.0 -335.0
5 -155.0 333.0 259.0 12.0 -186.0 -86.0 -232.0 -63.0
6 -22.0 -271.0 -264.0 -108.0 -457.0 -427.0 320.0 -3.0
7 306.0 279.0 265.0 190.0 536.0 562.0 -72.0 10.0
8 -107.0 60.0 30.0 2.0 -541.0 -163.0 -372.0 -370.0
9 136.0 -438.0 -478.0 3.0 243.0 -101.0 141.0 298.0
10 -46.0 190.0 369.0 -125.0 414.0 327.0 449.0 271.0
11 203.0 -36.0 -293.0 -407.0 -532.0 -309.0 40.0 132.0
12 -98.0 32.0 450.0 515.0 -98.0 70.0 -432.0 -278.0
13 -165.0 -332.0 -518.0 -25.0 267.0 105.0 288.0 237.0
14 233.0 210.0 76.0 -285.0 276.0 101.0 -286.0 -321.0
15 64.0 63.0 101.0 -2.0 123.0 -73.0 63.0 -114.0
16 -486.0 -222.0 12.0 -97.0 -595.0 -543.0 -40.0 257.0
17 NaN NaN NaN NaN NaN NaN NaN NaN
# 利用公式
df3["a_contribution"]=(df3.loc[:,"sum_1"]+df3_move.loc[:,"a1"])/(df3.loc[:,"sum_2"]+df3_move.loc[:,"a2"])-df3.loc[:,"target"]
df3["b_contribution"]=(df3.loc[:,"sum_1"]+df3_move.loc[:,"b1"])/(df3.loc[:,"sum_2"]+df3_move.loc[:,"b2"])-df3.loc[:,"target"]
df3["c_contribution"]=(df3.loc[:,"sum_1"]+df3_move.loc[:,"c1"])/(df3.loc[:,"sum_2"]+df3_move.loc[:,"c2"])-df3.loc[:,"target"]
df3["d_contribution"]=(df3.loc[:,"sum_1"]+df3_move.loc[:,"d1"])/(df3.loc[:,"sum_2"]+df3_move.loc[:,"d2"])-df3.loc[:,"target"]
df3
date a1 a2 b1 b2 c1 c2 d1 d2 target sum_1 sum_2 a_contribution b_contribution c_contribution d_contribution
0 2022-10-21 684 775 714 975 758 815 654 908 0.809099 2810 3473 -0.018842 -0.101387 -0.062952 0.038068
1 2022-10-22 794 997 134 653 417 651 804 929 0.665325 2149 3230 -0.040594 0.034675 -0.084976 -0.002201
2 2022-10-23 388 557 309 743 294 912 714 804 0.565318 1705 3016 -0.024524 -0.051236 0.124578 -0.019804
3 2022-10-24 413 740 119 674 658 895 657 809 0.592367 1847 3118 0.059452 0.170545 -0.104053 0.014042
4 2022-10-25 644 810 798 867 169 558 816 999 0.750464 2427 3234 -0.052351 -0.120983 0.108350 -0.028836
5 2022-10-26 326 597 408 869 753 830 481 664 0.664865 1968 2960 -0.114303 0.084462 -0.044823 -0.065624
6 2022-10-27 171 930 667 881 567 744 249 601 0.524081 1654 3156 0.041603 -0.068044 -0.085459 0.101989
7 2022-10-28 149 659 403 773 110 317 569 598 0.524499 1231 2347 0.060801 0.065173 0.082926 -0.032773
8 2022-10-29 455 938 668 963 646 879 497 608 0.668831 2266 3388 -0.042671 0.008455 -0.133947 -0.041263
9 2022-10-30 348 998 698 965 105 716 125 238 0.437436 1276 2917 0.132149 -0.164148 0.101982 0.003311
10 2022-10-31 484 560 220 968 348 615 266 536 0.491975 1318 2679 -0.048615 0.168558 0.084206 0.107008
11 2022-11-01 438 750 589 843 762 942 715 807 0.749252 2504 3342 0.069562 0.004070 -0.099071 -0.016955
12 2022-11-02 641 714 296 436 230 633 755 939 0.706098 1922 2722 -0.043789 0.026679 -0.052803 -0.096442
13 2022-11-03 543 746 746 951 132 703 323 661 0.569748 1744 3061 0.008852 -0.165928 0.065438 0.046383
14 2022-11-04 378 414 228 926 399 808 611 898 0.530532 1616 3046 0.037343 0.082290 0.070676 -0.042458
15 2022-11-05 611 624 304 641 675 909 325 577 0.696111 1915 2751 0.007159 0.037247 0.064905 0.053984
16 2022-11-06 675 687 405 639 798 836 388 463 0.863238 2266 2625 -0.122497 0.037869 -0.060644 -0.090858
17 2022-11-07 189 465 417 542 203 293 348 720 0.572772 1157 2020 NaN NaN NaN NaN
df3_shift = df3.loc[:,"a_contribution":"d_contribution"].shift(1)
df3_shift
a_contribution b_contribution c_contribution d_contribution
0 NaN NaN NaN NaN
1 -0.018842 -0.101387 -0.062952 0.038068
2 -0.040594 0.034675 -0.084976 -0.002201
3 -0.024524 -0.051236 0.124578 -0.019804
4 0.059452 0.170545 -0.104053 0.014042
5 -0.052351 -0.120983 0.108350 -0.028836
6 -0.114303 0.084462 -0.044823 -0.065624
7 0.041603 -0.068044 -0.085459 0.101989
8 0.060801 0.065173 0.082926 -0.032773
9 -0.042671 0.008455 -0.133947 -0.041263
10 0.132149 -0.164148 0.101982 0.003311
11 -0.048615 0.168558 0.084206 0.107008
12 0.069562 0.004070 -0.099071 -0.016955
13 -0.043789 0.026679 -0.052803 -0.096442
14 0.008852 -0.165928 0.065438 0.046383
15 0.037343 0.082290 0.070676 -0.042458
16 0.007159 0.037247 0.064905 0.053984
17 -0.122497 0.037869 -0.060644 -0.090858
df3_merge = pd.merge(df3.iloc[:,1:12],df3_shift,left_index=True,right_index=True)
df3_merge
a1 a2 b1 b2 c1 c2 d1 d2 target sum_1 sum_2 a_contribution b_contribution c_contribution d_contribution
0 684 775 714 975 758 815 654 908 0.809099 2810 3473 NaN NaN NaN NaN
1 794 997 134 653 417 651 804 929 0.665325 2149 3230 -0.018842 -0.101387 -0.062952 0.038068
2 388 557 309 743 294 912 714 804 0.565318 1705 3016 -0.040594 0.034675 -0.084976 -0.002201
3 413 740 119 674 658 895 657 809 0.592367 1847 3118 -0.024524 -0.051236 0.124578 -0.019804
4 644 810 798 867 169 558 816 999 0.750464 2427 3234 0.059452 0.170545 -0.104053 0.014042
5 326 597 408 869 753 830 481 664 0.664865 1968 2960 -0.052351 -0.120983 0.108350 -0.028836
6 171 930 667 881 567 744 249 601 0.524081 1654 3156 -0.114303 0.084462 -0.044823 -0.065624
7 149 659 403 773 110 317 569 598 0.524499 1231 2347 0.041603 -0.068044 -0.085459 0.101989
8 455 938 668 963 646 879 497 608 0.668831 2266 3388 0.060801 0.065173 0.082926 -0.032773
9 348 998 698 965 105 716 125 238 0.437436 1276 2917 -0.042671 0.008455 -0.133947 -0.041263
10 484 560 220 968 348 615 266 536 0.491975 1318 2679 0.132149 -0.164148 0.101982 0.003311
11 438 750 589 843 762 942 715 807 0.749252 2504 3342 -0.048615 0.168558 0.084206 0.107008
12 641 714 296 436 230 633 755 939 0.706098 1922 2722 0.069562 0.004070 -0.099071 -0.016955
13 543 746 746 951 132 703 323 661 0.569748 1744 3061 -0.043789 0.026679 -0.052803 -0.096442
14 378 414 228 926 399 808 611 898 0.530532 1616 3046 0.008852 -0.165928 0.065438 0.046383
15 611 624 304 641 675 909 325 577 0.696111 1915 2751 0.037343 0.082290 0.070676 -0.042458
16 675 687 405 639 798 836 388 463 0.863238 2266 2625 0.007159 0.037247 0.064905 0.053984
17 189 465 417 542 203 293 348 720 0.572772 1157 2020 -0.122497 0.037869 -0.060644 -0.090858
# 各维度贡献度求和
df3_merge["sum_contribution"] = df3_merge.loc[:,"a_contribution"]+df3_merge.loc[:,"b_contribution"]+df3_merge.loc[:,"c_contribution"]+df3_merge.loc[:,"d_contribution"]
# 各维度贡献度归一化
df3_merge["a_nor_con"] = df3_merge.loc[:,"a_contribution"]/df3_merge["sum_contribution"]*100
df3_merge["b_nor_con"] = df3_merge.loc[:,"b_contribution"]/df3_merge["sum_contribution"]*100
df3_merge["c_nor_con"] = df3_merge.loc[:,"c_contribution"]/df3_merge["sum_contribution"]*100
df3_merge["d_nor_con"] = df3_merge.loc[:,"d_contribution"]/df3_merge["sum_contribution"]*100
#得到各维度归一化后的贡献度
df3_merge
a1 a2 b1 b2 c1 c2 d1 d2 target sum_1 sum_2 a_contribution b_contribution c_contribution d_contribution sum_contribution a_nor_con b_nor_con c_nor_con d_nor_con
0 684 775 714 975 758 815 654 908 0.809099 2810 3473 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 794 997 134 653 417 651 804 929 0.665325 2149 3230 -0.018842 -0.101387 -0.062952 0.038068 -0.145113 12.984158 69.867731 43.381390 -26.233279
2 388 557 309 743 294 912 714 804 0.565318 1705 3016 -0.040594 0.034675 -0.084976 -0.002201 -0.093096 43.604496 -37.246550 91.277729 2.364325
3 413 740 119 674 658 895 657 809 0.592367 1847 3118 -0.024524 -0.051236 0.124578 -0.019804 0.029014 -84.524979 -176.589615 429.369192 -68.254598
4 644 810 798 867 169 558 816 999 0.750464 2427 3234 0.059452 0.170545 -0.104053 0.014042 0.139985 42.470418 121.830207 -74.331525 10.030900
5 326 597 408 869 753 830 481 664 0.664865 1968 2960 -0.052351 -0.120983 0.108350 -0.028836 -0.093820 55.799213 128.952739 -115.487176 30.735225
6 171 930 667 881 567 744 249 601 0.524081 1654 3156 -0.114303 0.084462 -0.044823 -0.065624 -0.140288 81.477285 -60.206169 31.950721 46.778163
7 149 659 403 773 110 317 569 598 0.524499 1231 2347 0.041603 -0.068044 -0.085459 0.101989 -0.009911 -419.790657 686.586903 862.304523 -1029.100768
8 455 938 668 963 646 879 497 608 0.668831 2266 3388 0.060801 0.065173 0.082926 -0.032773 0.176128 34.521140 37.003425 47.082666 -18.607232
9 348 998 698 965 105 716 125 238 0.437436 1276 2917 -0.042671 0.008455 -0.133947 -0.041263 -0.209427 20.375175 -4.037194 63.959077 19.702943
10 484 560 220 968 348 615 266 536 0.491975 1318 2679 0.132149 -0.164148 0.101982 0.003311 0.073293 180.301053 -223.960180 139.141968 4.517158
11 438 750 589 843 762 942 715 807 0.749252 2504 3342 -0.048615 0.168558 0.084206 0.107008 0.311158 -15.623749 54.171136 27.062240 34.390373
12 641 714 296 436 230 633 755 939 0.706098 1922 2722 0.069562 0.004070 -0.099071 -0.016955 -0.042393 -164.088714 -9.600687 233.694988 39.994413
13 543 746 746 951 132 703 323 661 0.569748 1744 3061 -0.043789 0.026679 -0.052803 -0.096442 -0.166356 26.322555 -16.037199 31.741207 57.973437
14 378 414 228 926 399 808 611 898 0.530532 1616 3046 0.008852 -0.165928 0.065438 0.046383 -0.045255 -19.559587 366.647041 -144.596862 -102.490592
15 611 624 304 641 675 909 325 577 0.696111 1915 2751 0.037343 0.082290 0.070676 -0.042458 0.147850 25.257313 55.657621 47.802382 -28.717316
16 675 687 405 639 798 836 388 463 0.863238 2266 2625 0.007159 0.037247 0.064905 0.053984 0.163295 4.383994 22.809629 39.747091 33.059286
17 189 465 417 542 203 293 348 720 0.572772 1157 2020 -0.122497 0.037869 -0.060644 -0.090858 -0.236130 51.877062 -16.037558 25.682637 38.477859

加法、乘法、除法贡献度计算实现相关推荐

  1. C语言用代码实现 简易计算器求 加法乘法除法平方根幂

    简易计算器 首先简易计算器一般都有哪些功能 以及如果用代码实现 较简单 加法:定义三个变量 输入两个变量 c=a+b 输出c即可 减法:定义三个变量 输入两个变量 c=a-b 输出c即可 乘法:定义三 ...

  2. PT_基本概率公式(减法/加法/乘法/除法(条件概率)/全概率/贝叶斯)@条件概率链式法则@乘法法则

    文章目录 ref 概率公理 条件概率和样本空间 五大公式

  3. 计算机底层加法/乘法实现

    计算机底层加法/乘法实现 存储方式 原理 加法 乘法 除法 代码实现 加法 乘法 存储方式 计算机底层中存放数字使用二进制形式,负数使用补码(反码+1)来存放. 原理 加法 两个二进制的相加结果是用一 ...

  4. java BigDecimal加法/减法/乘法/除法 保留两位小数

    1.BigDecimal类概述及其构造方法 由于在运算的时候,float类型和double类型很容易丢失进度,所以,为了能够精确的表示.计算浮点数,java提供了BigDecimal类   BigDe ...

  5. 计算机用加法乘法实现除法运算的数学原理

    数学原理:迭代序列 本篇只讨论加法乘法实现除法的数学原理,并不涉及数据结构. 设已知  c > 0 ,任取     数学归纳法我们有       0 < <1  ,  0 <  ...

  6. java中小数的乘法_javascript的小数点乘法除法实例

    javascript的小数点乘法除法实例 导语:想要学好Java语言,必不可少的就是它的四则运算,特别是乘除法.下面的是百分网小编为大家搜集的javascript的小数点乘法除法实例,希望可以帮到你. ...

  7. 计算机数值中的乘法除法原理

    乘法:被分解为左移累加. 除法:被分解为右移累减去,减法可以转换为加法. 浮点数的运算: S x 2(^F) x M 浮点数是原码表示法,S符号位,F阶码 + 127, M尾数舍弃前面的1(如果F&l ...

  8. 大数求乘法逆元c语言,乘法逆元(编程计算)+两道版题

    前言 看到这里的小盆友们千万不要以为这个东西很难,其实就是个1+1->1(1个定义+1个定理->1坨乘法逆元).Let's begin.web 有关乘法逆元定义 这个咱们就不要玩笑了,来, ...

  9. or1200乘法除法指令解释

    以下摘录<步骤吓得核心--软-core处理器的室内设计与分析>一本书 OR1200中乘法除法类指令共同拥有9条,表8.3给出了全部的乘法除法类指令的作用及说明. 说明:表8.3是ORBIS ...

最新文章

  1. excel操作----主要用于数据库入库
  2. Shell批量SSH免交互登录认证
  3. CSS简介及常用标签及属性
  4. RunJs使用评测(IE9)
  5. 半年之殇:困扰半年的MSP430的I2C总线问题在今天解决,发文总结
  6. 如何在cocoapods中使用更新版本的pod
  7. 5.PSR-7: HTTP message interfaces
  8. Java经典设计模式(1):五大创建型模式(附实例和详解)
  9. tibco linux安装手册,TIBCO Admin 5.11.1 安装及Domain建立 (Linux)
  10. flutter 仿照智行app 首页
  11. 电脑能正常上网百度,但是网络显示无Internet
  12. 明解C语言入门篇_第8章_动手编写各种程序吧
  13. 企业落地级jmeter性能测试,结果分析以及报告(4-3)
  14. c语言输入算术运算符,运算符算术运算符 - C语言教程
  15. 中国社会追踪调查数据CGSS区县码
  16. max-width min-width max-height min-height
  17. SCAPE: shape completion and animation of people
  18. 基于51单片机的智能停车场车位收费系统原理图PCB
  19. TigerGraph图数据库创建一个图Schema
  20. Android程序员必会!Android面试必刷的200道真题,附答案

热门文章

  1. android字体中间横线,Android TextView(EditView)文字底部或者中间 加横线
  2. XML的优势及应用领域
  3. SQL SERVER Mail
  4. Windows桌面右键新建未出现word/excel/ppt解决方法
  5. RStudio入门教程(二)RStudio数据处理
  6. LMDB数据生成与解析
  7. mini2440 linux驱动程序,mini2440的led的Linux驱动程序
  8. paypal IPN and PDT 2
  9. 个人英雄主义黄昏将至,6 大现状聊透开源这一年
  10. 对于pytorch中nn.CrossEntropyLoss()与nn.BCELoss()的理解和使用