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 相关文章推荐
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
进一步探究Python的装饰器的运用
May 05 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
Python分析学校四六级过关情况
Nov 22 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
Python 获取div标签中的文字实例
Dec 20 Python
python pcm音频添加头转成Wav格式文件的方法
Jan 09 Python
使用python3 实现插入数据到mysql
Mar 02 Python
聊聊python中的循环遍历
Sep 07 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
tensorboard 可视化之localhost:6006不显示的解决方案
May 22 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
利用Python实时获取steam特惠游戏数据
You might like
实用函数10
2007/11/08 PHP
php 破解防盗链图片函数
2008/12/09 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
Vue插件之滑动验证码
2019/09/21 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
python三引号如何输入
2020/07/06 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
留学顾问岗位职责
2014/04/14 职场文书
大学同学会活动方案
2014/08/20 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
教师教育教学随笔
2015/08/15 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
关于Python中进度条的六个实用技巧分享
2022/04/05 Python
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB