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 ...
随机推荐
- Tomcat 8.5集群配置
示例 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions= ...
- 在Python中使用OpenCV(CV2)对图像进行边缘检测
转载:https://blog.csdn.net/cumtb2002/article/details/107798767 Modules used: 使用的模块: For this, we will ...
- uint16_t
转自:https://blog.csdn.net/kiddy19850221/article/details/6655066 uint8_t / uint16_t / uint32_t /uint64 ...
- Go 接口类型
接口作用 Go语言中的接口是一种类型,类似于Python中的抽象基类. Go语言中使用接口来体现多态,是duck-type的一种体现. 如,只要一个东西会叫,会走,那么我们就可以将它定义为一个动物的接 ...
- node-macaddress
下载 node-macaddressnode-macaddress 检索Linux.OS X和Windows中的MAC地址. 关于MAC地址的一个常见误解是,每个主机只有一个MAC地址, 虽然一个主机 ...
- cocos creator屏幕适配的一些知识点
一. cocos creator 提供的几种适配策略 EXACT_FIT: 整个应用程序在指定区域可见,无需尝试保留原始纵横比.可能会出现失真,应用程序会被拉伸或压缩.也就是说设计分辨率的长和宽不会等 ...
- OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice &q ...
- Celery---一个懂得异步任务,延时任务,周期任务的芹菜
Celery是什么? celey是芹菜 celery是基于Python实现的模块,用于执行异步延时周期任务的 其结构组成是由 1.用户任务 app 2.管道任务broker用于存储任务 官方推荐red ...
- 扫描仪扫描文件处理-imagemagick常用参数
-resize 宽x高(缩放,不变形) -extent 宽x高(放大,不变形)之前设置:-gravity center(重心居中) -brightness-contrast 亮度x对比度(设置亮度对比 ...
- Vue.js 学习笔记之五:编译 vue 组件
正如上一篇笔记中所说,直接使用 ES6 标准提供的模块规范来编写 Vue 组件在很多情况下可能并不是最佳实践.主要原因有两个,首先是市面上还有许多并没有对 ES6 标准提供完全支持的 Web 浏览器, ...