python数据分析之单因素分析线性拟合及地理编码
作者:不再依然07 发布时间:2021-02-09 06:46:20
标签:python,数据,分析,线性,拟合,地理,编码
一、单因素分析线性拟合
功能:线性拟合,单因素分析,对散点图进行线性拟合,并放大散点图的局部位置
输入:某个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")
实现效果:
二、实现地理编码
输入:中文地址信息,例如安徽为县天城镇都督村冲里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)
结果展示:
来源:https://blog.csdn.net/sinat_41858359/article/details/124531484
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 新闻系统,相册系统可以用用哦,简单实用,有兴趣的可以自己扩充!^_^相册截图:<?xml version="1.0"
- 1 简介本篇主要介绍使用pytorch实现基于CharRNN来进行文本分类与内容生成所需要的相关知识,并最终给出完整的实现代码。2 相关AP
- 让 PHP 支持 MySQLPHP 有专有的 MySQL 函数库以使用操作 MYSQL 数据库。在 PHP 5 及以后版本中不再
- 前言daemon 音标 : [‘di:mən] , 中文含义为守护神或精灵的意思 . 其实它还有个意思 : 守护进程 .Daemon程序是一
- 什么是性能分析?性能分析是衡量应用程序在代码级别的相对性能。性能分析将捕捉的事件包括:CPU的使用,内存的使用,函数的调用时长和次数,以及调
- 很实用的过滤重复数据的asp代码,函数如下:<%'**************************************
- 本文实例讲述了es6函数之严格模式用法。分享给大家供大家参考,具体如下:从es5开始,函数内部可以设定为严格模式。function doSo
- 本文实例讲述了Go语言转换所有字符串为大写或者小写的方法。分享给大家供大家参考。具体如下:Go语言的string模块包含了ToLower和T
- phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 危险等级:中 passthru() 功能描述:允许
- 【eval()函数】JavaScript有许多小窍门来使编程更加容易。其中之一就是eval()函数,这个函数可以把一个字符串当作一个Java
- 我其实是同一天看到Robert Treat几人整理的”Mysql 迁移到Oracle前需要了解的50件事“与Baron Schwartz的”
- 在进行浮动布局时,大多数人都深知,在必要的地方进行浮动清理:<div style="clear:both;">
- 我们生活在信息繁杂的社会,尤其是在互联网时代,人们开始通过网络开始接触越来越多的信息,那么,如何获取/传递有效而准确的信息将非常重要。在网页
- 1. 规范简介本规范主要规定ASP源程序在书写过程中所应遵循的规则及注意事项。编写该规范的目的是使项目开发人员的源代码书写习惯保持一致。这样
- 一、安装MySQL 目前web服务器已经很少有跑静态页面
- Python函数的设计规范1、Python函数设计时具备耦合性和聚合性1)、耦合性:(1).尽可能通过参数接受输入,以及通过return产生
- Mysql数据库常用命令:启动Mysql数据库C:》cd Mysql5.0 binC:Mysql5.0 bin》mysqld –instal
- [摘要]了解如何充分利用SQL Server 2000的全文搜索功能。本文包含有关实现最大吞吐量和最佳性能的几点提示和技
- 首先,来说一下对话框: 对话框在Windows应用程序中使用非常普遍,许多应用程序的设定,与用户交互需要通过对话框来进行,因此对话框是Win
- 今天有个哥们问我要是JavaScript函数重名了会有什么后果?开始我没有细想,就说可能会出错吧,可是等我实验完了发现页面没有任何脚本错误提