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装饰器 免去调用父类构造函数的麻烦
May 18 Python
使用python编写批量卸载手机中安装的android应用脚本
Jul 21 Python
Python实现包含min函数的栈
Apr 29 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
在Pycharm中将pyinstaller加入External Tools的方法
Jan 16 Python
详解Python打包分发工具setuptools
Aug 05 Python
django-filter和普通查询的例子
Aug 12 Python
pytorch masked_fill报错的解决
Feb 18 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
Python matplotlib模块及柱状图用法解析
Aug 10 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
利用Python实时获取steam特惠游戏数据
You might like
PHP编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
Python抽象类的新写法
2015/06/18 Python
python操作mysql代码总结
2018/06/01 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
如何使用Pytorch搭建模型
2020/10/26 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
毕业生自荐信
2013/12/14 职场文书
成考报名单位证明范本
2014/01/16 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
村官个人总结范文
2015/03/03 职场文书
专家推荐信范文
2015/03/26 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
Python操作CSV格式文件的方法大全
2021/07/15 Python
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript