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

时间:2023-03-09 15:17:06
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

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

4、去除没用的列

#删除没用的列
for city in citys_df:
city.drop(['Unnamed: 0'],axis=1,inplace=True)
citys_df[0].head()

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

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

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

6、观察发现,离海近的可以形成一条直线,离海远的也能形成一条直线。

  • 分别以100公里和50公里为分界点,划分为离海近和离海远的两组数据(近海:小于100 远海:大于50)
#最高温度与海洋距离的关系
plt.scatter(citys_temp_humidity['dist'],
citys_temp_humidity['max_temp'])

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

使用算法模型

#导包
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

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

获取近海的城市信息

#近海:小于100公里
dist_near=citys_temp_humidity.loc[citys_temp_humidity['dist']<100]
dist_near

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

#2、将散点(样本)数据代入到算法模型中,
# 让算法模型去根据数据的特性进行线性的回归(计算)
# fit函数的参数:X,y
# X:表示样本数据中的特征数据(features)
# y:表示样本数据中的目标数据(target) #针对当前项目来讲,散点图中的一个点表示的数据即为一个样本数据
#样本集:多个样本数据组成一个样本集 #特征数据的改变会影响目标的改变
#在当前项目中:距离就是特征数据,温度就是目标数据
#特征数据必须是一个二维数据
linear_far.fit(dist_far['dist'].reshape(-1,1),
dist_far['max_temp'])

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

#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)

python实现城市气候与海洋的关系研究
把近海和远海的线性回归曲线画到一起:

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)

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

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)

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

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)

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

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)

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

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)

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

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

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

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

关注我,我们一起成长~~