资讯专栏INFORMATION COLUMN

python数据统计分析之单因素分析线性拟合及地理编码

89542767 / 485人阅读

  本文关键阐述了python数据统计分析之单因素分析线性拟合及地理编码,文章内容紧扣主题开展详尽的基本介绍,具有很强的实用价值,必须的朋友可以学习一下


  一、单因素分析线性拟合


  作用:线性拟合,单因素分析,对趋势线开展线性拟合,并变大趋势线的部分位子


  键入:某一xlsx文档,含有'病人相对密度(人/10数万人)'和'人口密度散布(人/平方公里)'二列


  导出:对此二列信息进行线性拟合,制作矩形图


  完成编码:


  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")

  

01.png

      二、完成地理编码


  键入:汉语地址信息,比如安徽省为县天城镇大都督村冲里18号


  导出:经纬度坐标,比如107.3479975498958130.50483335424108


  作用:依据汉语详细地址信息收集经纬度坐标


  完成编码:


  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)

  

02.png

       综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130251.html

相关文章

  • 一个简单的案例带你了解支持向量机算法(Python代码)

    摘要:什么是支持向量机支持向量机是一种有监督的机器学习算法,可用于分类任务或回归任务。支持向量机是一个最好地隔离两个类超平面或者说分类线的前沿算法。接下来,我们将讨论支持向量机如何工作。 showImg(https://segmentfault.com/img/remote/1460000019599694); 介绍 掌握机器学习算法并不是一个不可能完成的事情。大多数的初学者都是从学习回归开...

    Jrain 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<