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 自动安装 Rising 杀毒软件
Apr 24 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
插入排序_Python与PHP的实现版(推荐)
May 11 Python
python数据处理实战(必看篇)
Jun 11 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
Python读取MRI并显示为灰度图像实例代码
Jan 03 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
python动态进度条的实现代码
Jul 03 Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 Python
python装饰器代码深入讲解
Mar 01 Python
Django开发RESTful API实现增删改查(入门级)
May 10 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
利用Python实时获取steam特惠游戏数据
You might like
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
2017/10/17 Javascript
Vue中如何实现proxy代理
2018/04/20 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
Python常见的pandas用法demo示例
2019/03/16 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
在宿舍喝酒的检讨书
2014/09/28 职场文书
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python
Python移位密码、仿射变换解密实例代码
2021/06/27 Python