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


Posted in Python onJune 25, 2022

一、单因素分析线性拟合

  • 功能:线性拟合,单因素分析,对散点图进行线性拟合,并放大散点图的局部位置
  • 输入:某个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")

实现效果:

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

二、实现地理编码

  • 输入:中文地址信息,例如安徽为县天城镇都督村冲里18号
  • 输出:经纬度坐标,例如107.34799754989581 30.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)

结果展示:

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

到此这篇关于python数据分析之单因素分析线性拟合及地理编码的文章就介绍到这了,更多相关python数据分析内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python装饰器原理与简单用法实例分析
Apr 29 Python
python根据list重命名文件夹里的所有文件实例
Oct 25 Python
python树的同构学习笔记
Sep 14 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
使用python代码进行身份证号校验的实现示例
Nov 21 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
如何在python中执行另一个py文件
Apr 30 Python
Python StringIO及BytesIO包使用方法解析
Jun 15 Python
Python如何实现线程间通信
Jul 30 Python
Python字典dict常用方法函数实例
Nov 09 Python
python 如何上传包到pypi
Dec 24 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
利用Python实时获取steam特惠游戏数据
You might like
php操作SVN版本服务器类代码
2011/11/27 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
获取当前点击按钮的id用this.id实现
2014/03/17 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
jQuery中$.extend()用法实例
2015/06/24 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
Angularjs Promise实例详解
2018/03/15 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
python缩进区别分析
2014/02/15 Python
Python之父谈Python的未来形式
2016/07/01 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
python GUI实例学习
2017/11/21 Python
解读python logging模块的使用方法
2018/04/17 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
2014年五四青年节演讲稿范文
2014/04/22 职场文书
教师自查自纠材料
2014/10/14 职场文书
依法行政工作汇报材料
2014/10/28 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
体育教师个人总结
2015/02/09 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书