Python怎样实现线性拟合和地理编码码
Admin 2022-11-01 群英技术资讯 263 次浏览
实现代码:
import pandas as pd from pylab import mpl from scipy import optimize import numpy as np import matplotlib.pyplot as plt def f_1(x, A, B): return A*x + B def draw_cure(file): data1=pd.read_excel(file) data1=pd.DataFrame(data1) hz=list(data1['患者密度(人/10万人)']) rk=list(data1['人口密度(人/平方千米)']) hz_gy=[] rk_gy=[] for i in hz: hz_gy.append((i-min(hz))/(max(hz)-min(hz))) for i in rk: rk_gy.append((i-min(rk))/(max(rk)-min(rk))) n=['玄武区','秦淮区','建邺区','鼓楼区','浦口区','栖霞区','雨花台区','江宁区','六合区','溧水区','高淳区', '锡山区','惠山区','滨湖区','梁溪区','新吴区','江阴市','宜兴市', '鼓楼区','云龙区','贾汪区','泉山区','铜山区','丰县','沛县','睢宁县','新沂市','邳州市', '天宁区','钟楼区','新北区','武进区','金坛区','溧阳市', '虎丘区','吴中区','相城区','姑苏区','吴江区','常熟市','张家港市','昆山市','太仓市', '崇川区','港闸区','通州区','如东县','启东市','如皋市','海门市','海安市', '连云区','海州区','赣榆区','东海县','灌云县','灌南县', '淮安区','淮阴区','清江浦区','洪泽区','涟水县','盱眙县','金湖县', '亭湖区','盐都区','大丰区','响水县','滨海县','阜宁县','射阳县','建湖县','东台市', '广陵区','邗江区','江都区','宝应县','仪征市','高邮市', '京口区','润州区','丹徒区','丹阳市','扬中市','句容市', '海陵区','高港区','姜堰区','兴化市','靖江市','泰兴市', '宿城区','宿豫区','沭阳县','泗阳县','泗洪县'] mpl.rcParams['font.sans-serif'] = ['FangSong'] plt.figure(figsize=(16,8),dpi=98) p1 = plt.subplot(121) p2 = plt.subplot(122) p1.scatter(rk_gy,hz_gy,c='r') p2.scatter(rk_gy,hz_gy,c='r') p1.axis([0.0,1.01,0.0,1.01]) p1.set_ylabel("患者密度(人/10万人)",fontsize=13) p1.set_xlabel("人口密度(人/平方千米)",fontsize=13) p1.set_title("人口密度—患者密度相关性",fontsize=13) for i,txt in enumerate(n): p1.annotate(txt,(rk_gy[i],hz_gy[i])) A1, B1 = optimize.curve_fit(f_1, rk_gy, hz_gy)[0] x1 = np.arange(0, 1, 0.01) y1 = A1*x1 + B1 p1.plot(x1, y1, "blue",label='一次拟合直线') x2 = np.arange(0, 1, 0.01) y2 = x2 p1.plot(x2, y2,'g--',label='y=x') p1.legend(loc='upper left',fontsize=13) # # plot the box tx0 = 0;tx1 = 0.1;ty0 = 0;ty1 = 0.2 sx = [tx0,tx1,tx1,tx0,tx0] sy = [ty0,ty0,ty1,ty1,ty0] p1.plot(sx,sy,"purple") p2.axis([0,0.1,0,0.2]) p2.set_ylabel("患者密度(人/10万人)",fontsize=13) p2.set_xlabel("人口密度(人/平方千米)",fontsize=13) p2.set_title("人口密度—患者密度相关性",fontsize=13) for i,txt in enumerate(n): p2.annotate(txt,(rk_gy[i],hz_gy[i])) p2.plot(x1, y1, "blue",label='一次拟合直线') p2.plot(x2, y2,'g--',label='y=x') p2.legend(loc='upper left',fontsize=13) plt.show() if __name__ == '__main__': draw_cure("F:\医学大数据课题\论文终稿修改\scientific report\返修\市区县相关分析 _2231.xls")
实现效果:
实现代码:
import json from urllib.request import urlopen,quote import xlrd def readXLS(XLS_FILE,sheet0): rb= xlrd.open_workbook(XLS_FILE) rs= rb.sheets()[sheet0] return rs def getlnglat(adress): url = 'http://api.map.baidu.com/geocoding/v3/?address=' output = 'json' ak = 'fdi11GHN3GYVQdzVnUPuLSScYBVxYDFK' add = quote(adress)#使用quote进行编码 为了防止中文乱码 # add=adress url2 = url + add + '&output=' + output + '&ak=' + ak req = urlopen(url2) res = req.read().decode() temp = json.loads(res) return temp def getlatlon(sd_rs): nrows_sd_rs=sd_rs.nrows for i in range(4,nrows_sd_rs): # for i in range(4, 7): row=sd_rs.row_values(i) print(i,i/nrows_sd_rs) b = (row[11]+row[12]+row[9]).replace('#','号') # 第三列的地址 print(b) try: lng = getlnglat(b)['result']['location']['lng'] # 获取经度并写入 lat = getlnglat(b)['result']['location']['lat'] #获取纬度并写入 except KeyError as e: lng='' lat='' f_err=open('f_err.txt','a') f_err.write(str(i)+'\t') f_err.close() print(e) print(lng,lat) f_latlon = open('f_latlon.txt', 'a') f_latlon.write(row[0]+'\t'+b+'\t'+str(lng)+'\t'+str(lat)+'\n') f_latlon.close() if __name__=='__main__': # sle_xls_file = 'F:\医学大数据课题\江苏省SLE数据库(两次随访合并).xlsx' sle_xls_file = "F:\医学大数据课题\数据副本\江苏省SLE数据库(两次随访合并) - 副本.xlsx" sle_data_rs = readXLS(sle_xls_file, 1) getlatlon(sle_data_rs)
结果展示:
赞免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
python脚本执行的3种方法:方法一:交互模式直接执行语句方法二:通过脚本输出方法三:脚本中指定 python 路径,修改文件为可执行文件
人脸磨皮是最基础的人脸美颜效果。本文介绍了OpenCV-Python实现人脸磨皮算法,主要包括图像滤波,图像融合和图像锐化,感兴趣的可以了解一下
本章节主要向各位介绍python第一步学什么,我们以一个初步的斐波纳契数列作为例子展示Python3编程第一步。
这篇文章主要介绍了Pytest allure 命令行参数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要为大家详细介绍了如何利用Python和C语言分别实现哈夫曼编码,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008