Python 天气情况数据分析及可视化

简介: Python 天气情况数据分析及可视化

Python 天气情况数据分析及可视化

环境配置

Pycharm开发环境 
python 版本 python3.7
Anconda 集成开发环境

第三方库导入

## pip install 模块 清华大学镜像源
import requests 
from bs4 import  BeautifulSoup
import io
import sys
import pandas
from matplotlib import pyplot as plt

步骤

1.爬虫requests 获取数据
2.pandas 处理数据
3.matplotlib 绘制图形
4.其他 保存数据进入csv格式,简单处理,例如雷达图

小案例

雷达图

#-*- codeing = utf-8 -*-
#@Time : 2020/6/2 20:07
#@Author : dele
#@File : demo.py
#@Software: PyCharm


# 雷达图
import pygal
# pip install pygal 安装模块

rader_chart = pygal.Radar()


rader_chart.title = '成绩分析'
rader_chart.x_labels = ["数学","英语","文综","理综","体育"]
rader_chart.add('StdudetA',[139,122,80,250,10])
rader_chart.add('StdudetB',[129,100,80,250,40])
rader_chart.add('StdudetC',[150,100,80,150,60])
rader_chart.add('StdudetD',[99,140,80,150,90])
rader_chart.render_to_file('radar_chart.svg')

效果

在这里插入图片描述

天气案例

爬取天气网站地址http://www.tianqihoubao.com/lishi/

在这里插入图片描述

然后一直选择找到你需要的数据地址

例如:如图
在这里插入图片描述

进行网页分析 F12检查网页分析源代码

Python 爬虫代码分析

Pandas matplotlib 模块

Pandas

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

基本功能
1. 数据文件读取/文本数据读取
2. 索引、选取和数据过滤
3. 算法运算和数据对齐
4. 函数的应用和映射
5. 重置索引
6. 数学统计方法

在这里插入图片描述

matplotlib

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 。
通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。

Matplotlib基础知识

1.Matplotlib中的基本图表包括的元素
x轴和y轴
水平和垂直的轴线
x轴和y轴刻度
刻度标示坐标轴的分隔,包括最小刻度和最大刻度
x轴和y轴刻度标签
表示特定坐标轴的值
绘图区域
实际绘图的区域
2.hold属性
hold属性默认为True,允许在一幅图中绘制多个曲线;将hold属性修改为False,每一个plot都会覆盖前面的plot。
但是不推荐去动hold这个属性,这种做法(会有警告)。因此使用默认设置即可。
3.网格线
grid方法
使用grid方法为图添加网格线
设置grid参数(参数与plot函数相同)
.lw代表linewidth,线的粗细
.alpha表示线的明暗程度
4.axis方法
如果axis方法没有任何参数,则返回当前坐标轴的上下限
5.xlim方法和ylim方法
除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴范围
6.legend方法

在这里插入图片描述

#-*- codeing = utf-8 -*-
#@Time : 2020/6/2 20:26
#@Author : dele
#@File : weather.py
#@Software: PyCharm


import requests
from bs4 import  BeautifulSoup
import io
import sys
import pandas


sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
def get_data(weather_url):
    rseponse = requests.get(weather_url)

    html = rseponse.content.decode('gbk')
    soup = BeautifulSoup(html,'html.parser')

    tr_lsit = soup.find_all('tr')

    print(tr_lsit)
    dates,conditions,temp = [],[],[]
    for data in tr_lsit[1:]:
        sub_data = data.text.split()
        dates.append(sub_data[0])
        conditions.append(''.join(sub_data[1:3]))
        temp.append(''.join(sub_data[3:6]))

    # 数据保存
    _data = pandas.DataFrame()
    _data['日期'] = dates
    _data['天气情况'] = conditions
    _data['气温'] = temp

    return _data
    # print(_data)
    # _data.to_csv('anqing.csv',index=False,encoding='gbk')
    # 获取数据并保存csv格式,进行下面的数据分析

# 定义成函数形式进行封装
data_month_3 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202003.html')
data_month_4 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202004.html')
data_month_5 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202005.html')

data = pandas.concat([data_month_3,data_month_4,data_month_5]).reset_index(drop=True)
data.to_csv('anqing.csv',index=False,encoding='gbk')

数据可视化

from matplotlib import pyplot as plt

# 画图
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

datalsit = pandas.read_csv('G:/Python_Web/weather/anqing.csv',encoding='gbk')

# 数据处理
datalsit['最高气温'] = datalsit['气温'].str.split('/',expand=True)[0]
datalsit['最低气温'] = datalsit['气温'].str.split('/',expand=True)[1]

datalsit['最高气温'] = datalsit['最高气温'].map(lambda x:int(x.replace('℃','')))
datalsit['最低气温'] = datalsit['最低气温'].map(lambda x:int(x.replace('℃','')))

dates = datalsit['日期']
highs = datalsit['最高气温']
lows =  datalsit['最低气温']

# 画图

fig = plt.figure(dpi=128,figsize=(10,6))

plt.plot(dates,highs,c='red',alpha=0.5)
plt.plot(dates,lows,c='blue',alpha=0.5)

plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.2)
# 图表格式
# 设置图标的图形格式
plt.title('2020安庆市3-5月天气情况',fontsize=24)
plt.xlabel('',fontsize=6)
fig.autofmt_xdate()
plt.ylabel('气温',fontsize=12)
plt.tick_params(axis='both',which='major',labelsize=10)
# 修改刻度
plt.xticks(dates[::20])
# 显示
plt.show()

效果

在这里插入图片描述

完整代码

#-*- codeing = utf-8 -*-
#@Time : 2020/6/2 20:26
#@Author : dele
#@File : weather.py
#@Software: PyCharm


import requests
from bs4 import  BeautifulSoup
import io
import sys
import pandas
from matplotlib import pyplot as plt

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
def get_data(weather_url):
    rseponse = requests.get(weather_url)

    html = rseponse.content.decode('gbk')
    soup = BeautifulSoup(html,'html.parser')

    tr_lsit = soup.find_all('tr')

    print(tr_lsit)
    dates,conditions,temp = [],[],[]
    for data in tr_lsit[1:]:
        sub_data = data.text.split()
        dates.append(sub_data[0])
        conditions.append(''.join(sub_data[1:3]))
        temp.append(''.join(sub_data[3:6]))

    # 数据保存
    _data = pandas.DataFrame()
    _data['日期'] = dates
    _data['天气情况'] = conditions
    _data['气温'] = temp

    return _data
    # print(_data)
    # _data.to_csv('anqing.csv',index=False,encoding='gbk')

# data_month_3 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202003.html')
# data_month_4 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202004.html')
# data_month_5 =get_data('http://www.tianqihoubao.com/lishi/anqing/month/202005.html')
#
# data = pandas.concat([data_month_3,data_month_4,data_month_5]).reset_index(drop=True)
# data.to_csv('anqing.csv',index=False,encoding='gbk')



plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

datalsit = pandas.read_csv('G:/Python_Web/weather/anqing.csv',encoding='gbk')

# 数据处理
datalsit['最高气温'] = datalsit['气温'].str.split('/',expand=True)[0]
datalsit['最低气温'] = datalsit['气温'].str.split('/',expand=True)[1]

datalsit['最高气温'] = datalsit['最高气温'].map(lambda x:int(x.replace('℃','')))
datalsit['最低气温'] = datalsit['最低气温'].map(lambda x:int(x.replace('℃','')))

dates = datalsit['日期']
highs = datalsit['最高气温']
lows =  datalsit['最低气温']

# 画图

fig = plt.figure(dpi=128,figsize=(10,6))

plt.plot(dates,highs,c='red',alpha=0.5)
plt.plot(dates,lows,c='blue',alpha=0.5)

plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.2)
# 图表格式
# 设置图标的图形格式
plt.title('2020安庆市3-5月天气情况',fontsize=24)
plt.xlabel('',fontsize=6)
fig.autofmt_xdate()
plt.ylabel('气温',fontsize=12)
plt.tick_params(axis='both',which='major',labelsize=10)
# 修改刻度
plt.xticks(dates[::20])
# 显示
plt.show()
目录
相关文章
|
3天前
|
数据采集 算法 数据挖掘
10余位大佬+10余年经验的结晶:Python数据分析与挖掘实战
LinkedIn 对全球超过3.3亿用户的工作经历和技能进行分析后得出,目前最炙手可热的25 项技能中,数据挖掘排名第一。那么数据挖掘是什么? 数据挖掘是从大量数据(包括文本)中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程。数据挖掘有助于企业发现业务的趋势,揭示已知的事实,预测未知的结果,因此“数据挖掘”已成为企业保持竞争力的必要方法。 今天给小伙伴们分享的Python数据分析与数据挖掘手册是10余位数据挖掘领域资深专家和科研人员,10余年大数据挖掘咨询与实施经验结晶。从数据挖掘的应用出发,以电力、
10余位大佬+10余年经验的结晶:Python数据分析与挖掘实战
|
2天前
|
数据采集 算法 数据挖掘
10余位大佬+10余年经验的结晶:Python数据分析与挖掘实战
LinkedIn 对全球超过3.3亿用户的工作经历和技能进行分析后得出,目前最炙手可热的25 项技能中,数据挖掘排名第一。那么数据挖掘是什么? 数据挖掘是从大量数据(包括文本)中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程。数据挖掘有助于企业发现业务的趋势,揭示已知的事实,预测未知的结果,因此“数据挖掘”已成为企业保持竞争力的必要方法。 今天给小伙伴们分享的Python数据分析与数据挖掘手册是10余位数据挖掘领域资深专家和科研人员,10余年大数据挖掘咨询与实施经验结晶。从数据挖掘的应用出发,以电力、
|
4天前
|
数据采集 数据可视化 算法
GitHub星标68K!Python数据分析入门手册带你从数据获取到可视化
Python作为一门优秀的编程语言,近年来受到很多编程爱好者的青睐。一是因为Python本身具有简捷优美、易学易用的特点;二是由于互联网的飞速发展,我们正迎来大数据的时代,而Python 无论是在数据的采集与处理方面,还是在数据分析与可视化方面都有独特的优势。我们可以利用 Python 便捷地开展与数据相关的项目,以很低的学习成本快速完成项目的研究。
|
5天前
|
数据采集 数据可视化 算法
GitHub星标68K!Python数据分析入门手册带你从数据获取到可视化
Python作为一门优秀的编程语言,近年来受到很多编程爱好者的青睐。一是因为Python本身具有简捷优美、易学易用的特点;二是由于互联网的飞速发展,我们正迎来大数据的时代,而Python 无论是在数据的采集与处理方面,还是在数据分析与可视化方面都有独特的优势。我们可以利用 Python 便捷地开展与数据相关的项目,以很低的学习成本快速完成项目的研究。 今天给小伙伴们分享的这份Python数据分析入门手册本着实用性的目的,着眼于整个数据分析的流程,介绍了从数据采集到可视化的大致流程。
|
5天前
|
存储 数据可视化 数据挖掘
Python 3 中使用 pandas 和 Jupyter Notebook 进行数据分析和可视化
Python 3 中使用 pandas 和 Jupyter Notebook 进行数据分析和可视化
13 0
|
7天前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
23 2
|
12天前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
|
12天前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
27 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
13天前
|
供应链 数据可视化 数据挖掘
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
本文详细介绍了第十一届泰迪杯数据挖掘挑战赛B题的解决方案,涵盖了对产品订单数据的深入分析、多种因素对需求量影响的探讨,并建立了数学模型进行未来需求量的预测,同时提供了Python代码实现和结果可视化的方法。
29 3
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
|
13天前
|
机器学习/深度学习 数据采集 数据挖掘
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题二
本文提供了第十一届泰迪杯数据挖掘挑战赛B题问题二的详细解题步骤,包括时间序列预测模型的建立、多元输入时间预测问题的分析、时间序列预测的建模步骤、改进模型的方法,以及使用Python进行SARIMA模型拟合和预测的具体实现过程。
24 1

热门文章

最新文章