城市气候与海洋的关系研究

关注公众号“轻松学编程”了解更多。

以下命令都是在浏览器中输入。

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实现城市气候与海洋的关系研究的更多相关文章

  1. matplolib实例之 城市气候与海洋的关系研究

  2. Python 入门 之 类的三大关系(依赖 / 组合/ 继承关系)

    Python 入门 之 类的三大关系(依赖 / 组合/ 继承关系) 在面向对象的中,类与类之间存在三种关系:依赖关系.组合关系.继承关系. 1.依赖关系:将一个类的类名或对象当做参数传递给另一个函数被 ...

  3. 关于python写GUI桌面应用的一些研究结果

    研究了一下python开发GUI桌面应用的解决方案,研究结果记录如下: EasyGui:控件极为简单,连个基本的grid.list组件都没有,不适合商用,甚至是普通的应用都不行,放弃! Tkinter ...

  4. NLTK学习笔记(八):文法--词关系研究的工具

    [TOC] 对于一门语言来说,一句话有无限可能.问题是我们只能通过有限的程序来分析结构和含义.尝试将"语言"理解为:仅仅是所有合乎文法的句子的大集合.在这个思路的基础上,类似于 w ...

  5. python下申明式的对象关系DB映射器--Pony

    之前看到了Sails.js的waterline提供了声明式的关系型对象与DB的映射器,惊为天人,可以说是极大地提升了效率. 利用waterline的对象关系模型,用户可以直接使用javascript语 ...

  6. python测试开发django-36.一对一(OneToOneField)关系查询

    前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示.本篇继续学习一对一(OneToOneField)关系的查询. 上一篇list_d ...

  7. 【Python量化投资】基于技术分析研究股票市场

    一 金融专业人士以及对金融感兴趣的业余人士感兴趣的一类就是历史价格进行的技术分析.维基百科中定义如下,金融学中,技术分析是通过对过去市场数据(主要是价格和成交量)的研究预测价格方向的证券分析方法. 下 ...

  8. Python面试题之Python中type和object的关系

    知乎上看到的提问: 两个是互为实例的关系,但不是互为子类的关系,只有type是object的子类,反之则不成立. 大牛说两者是蛋生鸡鸡生蛋的关系,但我还是不明白,有懂的麻烦解释一下, 希望不要给出外文 ...

  9. Python(数据库之约束表的关系)

    一.约束 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: RIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY ...

随机推荐

  1. 项目里出现两个配置类继承WebMvcConfigurationSupport时,为什么只有一个会生效(源码分析)

    为什么我们的项目里出现两个配置类继承WebMvcConfigurationSupport时,只有一个会生效.我在网上找了半天都是说结果的,没有人分析源码到底是为啥,博主准备讲解一下,希望可以帮到大家! ...

  2. C#方法Extra

    C#方法Extra 上次说的只是方法的一些基本东西,今天讲讲重载和 Lambda 表达式. 重载 方法的重载(overload)指的是同一个名字的方法,有着不一样的方法签名(method signat ...

  3. python_用户登录验证

    登录验证,三次机会,如何做? 1. 一个用户列表记录合法密码和用户名,一个小黑屋列表记录输错3次的用户, 一个中间列表记录所有用户输入,统计某个用户是否输错3次 2. 通过 in 判断一个元素是否在一 ...

  4. Power Designer建模之餐饮在线点评系统——需求模型实例

    总览 一级需求 二级需求 管理门户  会员门户 三级需求 系统管理  企业中心  会员中心  统计分析 四级需求

  5. Java知识系统回顾整理01基础04操作符03逻辑运算符

    一.长路与 和 短路与 无论长路与还是短路与 两边的运算单元都是布尔值 都为真时,才为真 任意为假,就为假 区别 长路与 两侧,都会被运算 短路与 只要第一个是false,第二个就不进行运算了 pub ...

  6. C/C++ 中 exit() 函数

    参考: https://blog.csdn.net/jjjcainiao/article/details/21935795 知乎上的问题]C/C++ 中 exit() 函数的参数到底有什么意义? C ...

  7. Vue自定义Popup弹窗组件|vue仿ios、微信弹窗|vue右键弹层

    基于vue.js构建的轻量级Vue移动端弹出框组件Vpopup vpopup 汇聚了有赞Vant.京东NutUI等Vue组件库的Msg消息框.Popup弹层.Dialog对话框.Toast弱提示.Ac ...

  8. DBA提交脚步规范

    工作中需要走脚步流程,申请修改数据库,总结一些常用的语句:)提交时注明为DDL/DML_需求号_日期(各公司标准不一样)//修改字段长度使用;alter table t_task modify tas ...

  9. vscode 插件保存记录

  10. MeteoInfoLab脚本示例:AMSR-E卫星数据投影

    AMSR-E(http://nsidc.org/data/amsre/index.html)数据中的Land3数据是HDF-EOS4格式,投影是Cylindrical_Equal_Area.这里示例读 ...