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获取当前时间对应unix时间戳的方法
May 15 Python
详解Python的Django框架中的中间件
Jul 24 Python
用Python的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
python操作 hbase 数据的方法
Dec 18 Python
深入理解Python中的内置常量
May 20 Python
TensorFlow实现创建分类器
Feb 06 Python
基于python实现KNN分类算法
Apr 23 Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 Python
tensorflow 初始化未初始化的变量实例
Feb 06 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
python跨文件使用全局变量的实现
Nov 17 Python
pycharm 实现调试窗口恢复
Feb 05 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
利用Python实时获取steam特惠游戏数据
You might like
php 时间计算问题小结
2009/01/04 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
php压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
深入理解Python中各种方法的运作原理
2015/06/15 Python
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
详解Python自建logging模块
2018/01/29 Python
python实现百度语音识别api
2018/04/10 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
pyx文件 生成pyd 文件用于 cython调用的实现
2021/03/04 Python
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
2014端午节活动策划方案
2014/01/27 职场文书
五年级音乐教学反思
2014/02/06 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
财产保全担保书
2015/01/20 职场文书
公司管理建议书
2015/09/14 职场文书