支持博主三连,点赞、留言、关注公众号 |
第一问就是个相关性分析。具体而言,就是计算2015年和2020年各个指标的相关性。例如:2015年和2020年的SR这个指标的相关性是多少,计算方式用皮尔森方法即可。
下面是代码
```python
# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt
# 原始数据的问题
file_path = r'G:\数学建模\题目及原数据\华数杯\2020\C\附件 C题数据.xlsx'
data = pd.read_excel(file_path)
variable_2015_lst = ['2015 SR', '2015 CY', '2015 HJ', '2015 WJ', '2015 SS', '2015 总分']
variable_2020_lst = ['2020 SR', '2020 CY', '2020 HJ', '2020 WJ', '2020 SS', '2020 总分']
year_lst = ['2015', '2020']
result_df = pd.DataFrame()
for variable2015, variable_2020 in zip(variable_2015_lst, variable_2020_lst):
score = data[variable2015].corr(data[variable_2020], method='pearson')
score = round(score, 4)
print('%s与%s的相关性:%s'%(variable2015, variable_2020, score))
运行结果:
```python
2015 SR与2020 SR的相关性:0.5342
2015 CY与2020 CY的相关性:0.6399
2015 HJ与2020 HJ的相关性:0.7372
2015 WJ与2020 WJ的相关性:0.6361
2015 SS与2020 SS的相关性:0.5945
2015 总分与2020 总分的相关性:0.7845
关于第二问中的哪一类帮扶单位绩效高,我们可以用2020年的指标值减去2015年的指标值,得到每一个指标的差,差值越大说明该类帮扶单位在对应的指标上绩效高。
# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt
# 原始数据的问题
file_path = r'G:\数学建模\题目及原数据\华数杯\2020\C\附件 C题数据.xlsx'
data = pd.read_excel(file_path)
variable_2015_lst = ['2015 SR', '2015 CY', '2015 HJ', '2015 WJ', '2015 SS', '2015 总分']
variable_2020_lst = ['2020 SR', '2020 CY', '2020 HJ', '2020 WJ', '2020 SS', '2020 总分']
year_lst = ['2015', '2020']
x = list(range(6))
for variable2015, variable_2020 in zip(variable_2015_lst, variable_2020_lst):
y = []
for i in range(6):
df = data[data['帮扶单位类型(0-5)'] == i]
df['分差'] = df[variable_2020] - df[variable2015]
mean = df['分差'].mean()
std = df['分差'].std()
y.append(mean)
label = variable2015.split(' ')[1]
plt.plot(x, y, label=label)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.legend()
plt.grid()
plt.xlabel('帮扶单位类型')
plt.ylabel('2020与2015的分数差')
plt.show()
关于第三问,我们对每个帮扶单位做一次线性拟合(共拟合150个方程)。X分布别为’SR’, ‘CY’, ‘HJ’, ‘WJ’, ‘SS’。每一个X都是2020年的减去2015年的。y是2020年的总分减去2015年的总分。拟合的方程的系数就表示该单位在每个指标的业绩。最后我们选取每个系数的top5就可以了。
代码关注公众号后可白漂,后台回复:2020华数杯C
结果如下
---SR top5---
company_id SR CY HJ WJ SS
0 98 0.719913 0.207926 0.154313 -0.033354 0.169009
0 100 0.666740 0.030185 0.186537 0.380318 0.484506
0 44 0.664338 0.174609 0.110663 0.217083 0.141089
0 99 0.642504 0.061675 0.185727 0.277872 0.341475
0 56 0.629422 0.069894 0.193090 0.179038 0.298516
---CY top5---
company_id SR CY HJ WJ SS
0 19 -0.911628 0.346364 -0.310959 -0.062712 -0.015163
0 54 -0.931109 0.316867 -0.039841 -0.084724 0.001344
0 28 0.369775 0.245542 0.174397 0.362478 0.250820
0 110 0.502340 0.234190 -0.079497 0.582755 0.091881
0 108 0.149571 0.217162 0.128917 0.048293 0.318738
---HJ top5---
company_id SR CY HJ WJ SS
0 95 -0.470812 -0.121055 0.452960 0.144485 0.054649
0 73 -0.350511 0.091855 0.423066 0.085825 0.277362
0 9 0.043641 0.112998 0.415478 0.213789 0.210940
0 86 -0.014097 0.079601 0.394897 -0.032613 0.166339
0 84 0.372993 0.071486 0.374325 0.214889 0.291991
---WJ top5---
company_id SR CY HJ WJ SS
0 53 -0.060308 -0.046240 0.208327 0.660682 0.012553
0 110 0.502340 0.234190 -0.079497 0.582755 0.091881
0 13 0.010862 0.100271 0.197389 0.548325 0.192313
0 107 -0.188752 0.039968 0.186232 0.503040 0.245607
0 15 -0.050643 0.025602 0.309147 0.467603 0.010930
---SS top5---
company_id SR CY HJ WJ SS
0 75 0.005986 -0.135991 0.070006 0.245015 0.741126
0 72 -0.818486 0.093141 0.107205 -0.387306 0.540927
0 46 -0.446123 -0.069064 -0.470235 0.077136 0.537767
0 35 -0.586572 0.143058 0.039410 0.209232 0.536060
0 100 0.666740 0.030185 0.186537 0.380318 0.484506
关于第四问
-
哪些因素对’脱贫先进村庄’称号有影响?
思路:把每个指标的标准标准差算出来,选择标准差大的若干个指标。标准差反应了数据离
均值的远近。标准差小,可以认为帮扶单位在这个指标上没有帮助村庄改善。如果我们认为
指标的重要性是SS、SR,那么就按SS排序,取若干,在按SR排序去若干。 -
10个村庄问题
思路:求出村庄所对应的帮扶单位及类型,对各个指标的均值,用均值作为缺失的评价分数。
是否能评上称号,和问题1一样的做法
以上仅作参考,思路并不完美,觉得不合适地方自行修改就即可。