城市气候与海洋的关系研究
关注公众号“轻松学编程”了解更多。
以下命令都是在浏览器中输入。
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】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!
公众号
关注我,我们一起成长~~