python实现城市气候与海洋的关系研究
城市气候与海洋的关系研究
关注公众号“轻松学编程”了解更多。
以下命令都是在浏览器中输入。
cmd命令窗口输入:jupyter notebook
后打开浏览器输入网址http://localhost:8888/
1、导入包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import os
from pandas import Series,DataFrame
%matplotlib inline
2、导入数据各个海滨城市数据
#获取文件目录
dirs=os.listdir('./data/')[:-1]
citys_df=[]
for d in dirs:
#读取文件
citys_df.append(pd.read_csv('./data/%s'%d))
len(citys_df)
输出:
30
一共有30个文件
3、查看列的数据类型
citys_df[0].dtypes
4、去除没用的列
#删除没用的列
for city in citys_df:
city.drop(['Unnamed: 0'],axis=1,inplace=True)
citys_df[0].head()
5、显示最高温度于离海远近的关系(观察多个城市)
citys=[]
#每个城市都有3个表格,把3个表格合并成一个
for i in range(0,len(citys_df),3):
#合并
c=pd.concat([citys_df[i],citys_df[i+1],citys_df[i+2]])
citys.append(c)
len(citys)
输出:
10
说明一共有10个城市
citys_temp_humidity=DataFrame(columns=['dist','max_temp',
'min_temp','avg_temp','max_humidity',
'min_humidity','avg_humidity'])
for city in citys:
#最高温度,最低温度,平均温度
city_temp = city.groupby(by='city')['temp']
max_temp = city_temp.max().values[0]
min_temp = city_temp.min().values[0]
avg_temp = city_temp.mean().values[0]
#取两位小数
avg_temp=round(avg_temp,2)
#最高湿度,最低湿度,平均湿度
city_humidity = city.groupby(by='city')['humidity']
max_humidity = city_humidity.max().values[0]
min_humidity = city_humidity.min().values[0]
avg_humidity = city_humidity.mean().values[0]
avg_humidity = round(avg_humidity,2)
city_name = city.loc[0,'city'].values[0]
#print(city_name)
citys_temp_humidity.loc[city_name]=[city.loc[0,'dist'].values[0],
max_temp,min_temp,avg_temp,
max_humidity,min_humidity,avg_humidity]
citys_temp_humidity
6、观察发现,离海近的可以形成一条直线,离海远的也能形成一条直线。
- 分别以100公里和50公里为分界点,划分为离海近和离海远的两组数据(近海:小于100 远海:大于50)
#最高温度与海洋距离的关系
plt.scatter(citys_temp_humidity['dist'],
citys_temp_humidity['max_temp'])
使用算法模型
#导包
from sklearn.linear_model import LinearRegression
#1、创建算法模型
#远海
linear_far=LinearRegression()
#近海
linear_near=LinearRegression()
获取远海的城市信息
#远海:大于50公里
dist_far=citys_temp_humidity.loc[citys_temp_humidity['dist']>50]
dist_far
获取近海的城市信息
#近海:小于100公里
dist_near=citys_temp_humidity.loc[citys_temp_humidity['dist']<100]
dist_near
#2、将散点(样本)数据代入到算法模型中,
# 让算法模型去根据数据的特性进行线性的回归(计算)
# fit函数的参数:X,y
# X:表示样本数据中的特征数据(features)
# y:表示样本数据中的目标数据(target)
#针对当前项目来讲,散点图中的一个点表示的数据即为一个样本数据
#样本集:多个样本数据组成一个样本集
#特征数据的改变会影响目标的改变
#在当前项目中:距离就是特征数据,温度就是目标数据
#特征数据必须是一个二维数据
linear_far.fit(dist_far['dist'].reshape(-1,1),
dist_far['max_temp'])
#3、将回归曲线画出(足够多的点形成一条线)
#生成300个散点
#设置300个散点的x轴坐标
xmin=dist_far['dist'].min()-20
xmax=dist_far['dist'].max()+20
x=np.linspace(xmin,xmax,300)
#把x转化成二维数据
y=linear_far.predict(x.reshape(-1,1))
plt.scatter(dist_far['dist'],dist_far['max_temp'],c='y',s=100)
plt.scatter(x,y,s=10)
把近海和远海的线性回归曲线画到一起:
linear_near.fit(dist_near['dist'].reshape(-1,1),
dist_near['max_temp'])
_xmin=dist_near['dist'].min()-20
_xmax=dist_near['dist'].max()+20
_x=np.linspace(_xmin,_xmax,300)
_y=linear_near.predict(_x.reshape(-1,1))
plt.scatter(dist_far['dist'],dist_far['max_temp'],c='y',s=50)
plt.scatter(x,y,s=10)
plt.scatter(dist_near['dist'],dist_near['max_temp'],c='y',s=50)
plt.scatter(_x,_y,s=10)
7、查看最低温度与海洋距离的关系
#最低温度与海洋距离的关系
#远海
linear_far.fit(dist_far['dist'].reshape(-1,1),
dist_far['min_temp'])
xmin=dist_far['dist'].min()-20
xmax=dist_far['dist'].max()+20
x=np.linspace(xmin,xmax,300)
y=linear_far.predict(x.reshape(-1,1))
plt.scatter(dist_far['dist'],dist_far['min_temp'],c='y',s=100)
plt.scatter(x,y,s=10)
#近海
linear_near.fit(dist_near['dist'].reshape(-1,1),
dist_near['min_temp'])
_xmin=dist_near['dist'].min()-20
_xmax=dist_near['dist'].max()+20
_x=np.linspace(_xmin,_xmax,300)
_y=linear_near.predict(_x.reshape(-1,1))
plt.scatter(dist_near['dist'],dist_near['min_temp'],c='y',s=100)
plt.scatter(_x,_y,s=10)
8、最低湿度与海洋距离的关系
#最低湿度与海洋距离的关系
#远海
linear_far.fit(dist_far['dist'].reshape(-1,1),
dist_far['min_humidity'])
xmin=dist_far['dist'].min()-20
xmax=dist_far['dist'].max()+20
x=np.linspace(xmin,xmax,300)
y=linear_far.predict(x.reshape(-1,1))
plt.scatter(dist_far['dist'],dist_far['min_humidity'],
c='y',s=100)
plt.scatter(x,y,s=10)
#近海
linear_near.fit(dist_near['dist'].reshape(-1,1),
dist_near['min_humidity'])
_xmin=dist_near['dist'].min()-20
_xmax=dist_near['dist'].max()+20
_x=np.linspace(_xmin,_xmax,300)
_y=linear_near.predict(_x.reshape(-1,1))
plt.scatter(dist_near['dist'],dist_near['min_humidity'],
c='y',s=100)
plt.scatter(_x,_y,s=10)
9、最高湿度与海洋距离的关系
#最高湿度与海洋距离的关系
#远海
linear_far.fit(dist_more_50['dist'].reshape(-1,1),
dist_more_50['max_humidity'])
xmin=dist_more_50['dist'].min()-20
xmax=dist_more_50['dist'].max()+20
x=np.linspace(xmin,xmax,300)
y=linear_far.predict(x.reshape(-1,1))
plt.scatter(dist_more_50['dist'],dist_more_50['max_humidity'],
c='y',s=100)
plt.scatter(x,y,s=10)
#近海
linear_near.fit(dist_less_100['dist'].reshape(-1,1),
dist_less_100['max_humidity'])
_xmin=dist_less_100['dist'].min()-20
_xmax=dist_less_100['dist'].max()+20
_x=np.linspace(_xmin,_xmax,300)
_y=linear_near.predict(_x.reshape(-1,1))
plt.scatter(dist_less_100['dist'],dist_less_100['max_humidity'],
c='y',s=100)
plt.scatter(_x,_y,s=10)
10、平均湿度与海洋距离的关系
#平均湿度与海洋距离的关系
#远海
linear_far.fit(dist_more_50['dist'].reshape(-1,1),
dist_more_50['avg_humidity'])
xmin=dist_more_50['dist'].min()-20
xmax=dist_more_50['dist'].max()+20
x=np.linspace(xmin,xmax,300)
y=linear_far.predict(x.reshape(-1,1))
plt.scatter(dist_more_50['dist'],dist_more_50['avg_humidity'],
c='y',s=100)
plt.scatter(x,y,s=10)
#近海
linear_near.fit(dist_less_100['dist'].reshape(-1,1),
dist_less_100['avg_humidity'])
_xmin=dist_less_100['dist'].min()-20
_xmax=dist_less_100['dist'].max()+20
_x=np.linspace(_xmin,_xmax,300)
_y=linear_near.predict(_x.reshape(-1,1))
plt.scatter(dist_less_100['dist'],
dist_less_100['avg_humidity'],c='y',s=100)
plt.scatter(_x,_y,s=10)
后记
【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。
也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!
公众号
关注我,我们一起成长~~
python实现城市气候与海洋的关系研究的更多相关文章
- matplolib实例之 城市气候与海洋的关系研究
- Python 入门 之 类的三大关系(依赖 / 组合/ 继承关系)
Python 入门 之 类的三大关系(依赖 / 组合/ 继承关系) 在面向对象的中,类与类之间存在三种关系:依赖关系.组合关系.继承关系. 1.依赖关系:将一个类的类名或对象当做参数传递给另一个函数被 ...
- 关于python写GUI桌面应用的一些研究结果
研究了一下python开发GUI桌面应用的解决方案,研究结果记录如下: EasyGui:控件极为简单,连个基本的grid.list组件都没有,不适合商用,甚至是普通的应用都不行,放弃! Tkinter ...
- NLTK学习笔记(八):文法--词关系研究的工具
[TOC] 对于一门语言来说,一句话有无限可能.问题是我们只能通过有限的程序来分析结构和含义.尝试将"语言"理解为:仅仅是所有合乎文法的句子的大集合.在这个思路的基础上,类似于 w ...
- python下申明式的对象关系DB映射器--Pony
之前看到了Sails.js的waterline提供了声明式的关系型对象与DB的映射器,惊为天人,可以说是极大地提升了效率. 利用waterline的对象关系模型,用户可以直接使用javascript语 ...
- python测试开发django-36.一对一(OneToOneField)关系查询
前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示.本篇继续学习一对一(OneToOneField)关系的查询. 上一篇list_d ...
- 【Python量化投资】基于技术分析研究股票市场
一 金融专业人士以及对金融感兴趣的业余人士感兴趣的一类就是历史价格进行的技术分析.维基百科中定义如下,金融学中,技术分析是通过对过去市场数据(主要是价格和成交量)的研究预测价格方向的证券分析方法. 下 ...
- Python面试题之Python中type和object的关系
知乎上看到的提问: 两个是互为实例的关系,但不是互为子类的关系,只有type是object的子类,反之则不成立. 大牛说两者是蛋生鸡鸡生蛋的关系,但我还是不明白,有懂的麻烦解释一下, 希望不要给出外文 ...
- Python(数据库之约束表的关系)
一.约束 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: RIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY ...
随机推荐
- 简单两步使用css控制div下导航栏ul居中显示
第一步:父层设置文本居中属性 ul{ text-align:center; } 第二步:li设置内联样式 li{ display:inline; } PS 只需以上两步就可以实现导航栏居中显示了,但为 ...
- ES 入门 - 基于词项的查询
准备 首先先声明下,我这里使用的 ES 版本 5.2.0. 为了便于理解,这里以如下 index 为格式,该格式是通过 PMACCT 抓取的 netflow 流量信息, 文中所涉及的到的例子,全基于此 ...
- 题目:写出一条SQL语句,查询工资高于10000,且与他所在部门的经理年龄相同的职工姓名。
create table Emp( eid char(20) primary key, ename char(20), age integer check (age > 0), did char ...
- 061 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 08 一维数组总结
061 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 08 一维数组总结 本文知识点:一维数组总结 总结 注意点
- 如何查找一个为NULL的MYSQL字段
前言:在做这个题目 https://www.cnblogs.com/pipihao/p/13786304.html 因为之前 我好像没有接触过什么 为NULL字段的查询,细节不小 WHERE 字段 I ...
- Java NIO:通道
最近打算把Java网络编程相关的知识深入一下(IO.NIO.Socket编程.Netty) Java NIO主要需要理解缓冲区.通道.选择器三个核心概念,作为对Java I/O的补充, 以提升大批量数 ...
- 优质分享 | Spring Boot 入门到放弃!!!
持续原创输出,点击上方蓝字关注我 目录 前言 视频目录 如何获取? 总结 前言 最近不知不觉写Spring Boot专栏已经写了九篇文章了,从最底层的项目搭建到源码解析以及高级整合的部分,作者一直在精 ...
- Flink实例(五十): Operators(十)多流转换算子(五)coGroup 与union
参考链接:https://mp.weixin.qq.com/s/BOCFavYgvNPSXSRpBMQzBw 需求场景分析 需求场景 需求诱诱诱来了...数据产品妹妹想要统计单个短视频粒度的「点赞,播 ...
- 如何彻底杀掉Oracle相关用户的会话
在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源 ...
- vue去掉地址栏#号
mode:'history' 将这代码放入router.js里面