Python案例实战:天气数据集爬取 + 多组可视化图表分析

导语

前几天出门去练车,刚好下午14:00,真真的是”锄禾日当午,汗滴禾下土“。

那要不是我意志力坚定,肯定弃车🚗而跑了,难道只有长沙这么高的温度。

我不服,我要看看其他地方的温度怎么样?咱们比上一比~~~

今天小编就带大家爬取部分地区的温度并可视化,来,上数据!!

正文

环境安装部分:

Python版本:3.6.4;PIL模块;requests模块;pyecharts模块;以及一些Python自带的模块。

模块安装: pip install +模块名

编程实现主要思路:

爬取部分地区{随机爬取选择的}主要包括温度、湿度、气压等。

获取相关数据之后利用pyecharts模块和PIL模块对数据进行可视化分析。

(1)主要城市展示:

if __name__ == '__main__':
	city_names = ['上海', '北京', '南京', '杭州', '天津', '武汉']
	# city_names = ['上海', '北京', '南京', '杭州', '天津', '武汉', '苏州', '哈尔滨', '长春', '深圳', '西安', '南宁', '包头', '合肥', '成都', '乌鲁木齐', '西宁']
	# city_names = ['北京', '天津', '上海', '重庆',
	# 			  '石家庄', '太原', '沈阳', '长春',
	# 			  '哈尔滨', '南京', '杭州', '合肥',
	# 			  '福州', '南昌', '济南', '郑州',
	# 			  '武汉', '长沙', '广州', '成都']
	draw_weather_pic('济南')
	# DrawBar(city_names)
	# DrawGeo(city_names)
	# DrawLine(city_names)
	# DrawLiquid('北京')
	# DrawMap(city_names)
	# DrawPie(city_names)
	# DrawRadar('南京')

(2)要画什么图把对应的函数调用注释去掉就好啦:

1.全国部分城市空气质量:点击这个链接更方便观看效果哦~

​​​​2.部分城市气温柱状图:点击这个链接有惊喜哦~

​​

3.部分城市气温折线图:点击这个链接更方便~

​​

4.部分城市相对气压饼图:点击这个链接撒~

​​

5.部分城市气温分布图:点击这个蓝色字体哦~

​​6.北京城市湿度:点击这里是动图哦~

​​

7.南京天气信息雷达图:点击这里观看啦~

​​

主程序:

from Get_Weather import Query
from PIL import Image, ImageDraw, ImageFont
from pyecharts import Bar
from pyecharts import Geo
from pyecharts import Line
from pyecharts import Liquid
from pyecharts import Map
from pyecharts import Pie
from pyecharts import Radar
qr = Query()


# 天气预报图
def draw_weather_pic(city_name):
	data = qr.get_data(city_name)
	weather = data['weather']
	temperature = data['Ltemperature'] + '~' + data['Htemperature'] + '℃'
	img = Image.open('./mask.jpg')
	draw = ImageDraw.Draw(img)
	font = ImageFont.truetype(u'./font/simkai.ttf', size=50)
	draw.text((img.size[0]/6, img.size[1]/5), temperature, font=font, fill=(0, 177, 106))
	draw.text((img.size[0]/3, img.size[1]/5+150), weather, font=font, fill=(0, 128, 131))
	img.save('weather.jpg','jpeg')
	print('[INFO]:draw_weather_pic done...')


# 柱状图
def DrawBar(city_names):
	bar = Bar("城市气温柱状图")
	attrs1 = []
	attrs2 = []
	values1 = []
	values2 = []
	for cn in city_names:
		data = qr.get_data(cn)
		attrs1.append(cn)
		attrs2.append(cn)
		values1.append(data['Htemperature'])
		values2.append(data['Ltemperature'])
	bar.add("最高气温", attrs1, values1, mark_point=["average"])
	bar.add("最低气温", attrs2, values2, mark_point=["min", "max"])
	bar.render('weatherBar.html')


# 地理坐标系
def DrawGeo(city_names):
	data = []
	for cn in city_names:
		temp = qr.get_data(cn)
		data.append((cn, temp['pm25']))
	geo = Geo('全国部分城市空气质量', 'pm2.5', 
			  title_color='#fff', 
			  title_pos='center',
			  width=1200,
			  height=600,
			  background_color='#404a59')
	attr, value = geo.cast(data)
	geo.add('', attr, value, visual_range=[0, 200], visual_text_color='#fff', symbol_size=15, is_visualmap=True, type='effectScatter')
	geo.render('weatherGeo.html')


# 折线图
def DrawLine(city_names):
	line = Line('城市气温折线图')
	attrs1 = []
	attrs2 = []
	values1 = []
	values2 = []
	for cn in city_names:
		data = qr.get_data(cn)
		attrs1.append(cn)
		attrs2.append(cn)
		values1.append(data['Htemperature'])
		values2.append(data['Ltemperature'])
	line.add("最高气温", attrs1, values1, is_smooth=True, mark_point=["average"])
	line.add("最低气温", attrs2, values2, is_smooth=True, mark_point=["average", "max"])
	line.render('weatherLine.html')


# 水球图
def DrawLiquid(city_name):
	data = int(qr.get_data(city_name)['SD'].strip('%')) / 100
	liquid = Liquid('%s城市湿度' % city_name)
	liquid.add('湿度', [data])
	liquid.render('weatherLiquid.html')


# 地图
def DrawMap(city_names):
	# 假设省会城市最高温度代表该省最高温度
	attrs = ['北京', '天津', '上海', '重庆',
			 '河北', '山西', '辽宁', '吉林',
			 '黑龙江', '江苏', '浙江', '安徽',
			 '福建', '江西', '山东', '河南',
			 '湖北', '湖南', '广东', '四川']
	values = []
	for cn in city_names:
		data = qr.get_data(cn)
		values.append(data['Htemperature'])
	map_ = Map('气温分布图', width=1200, height=600)
	map_.add('', attrs, values, maptype='china', is_visualmap=True, visual_text_color='#000')
	map_.render('weatherMap.html')


# 饼图
def DrawPie(city_names):
	attrs = []
	values = []
	for cn in city_names:
		attrs.append(cn)
		data = qr.get_data(cn)
		values.append(data['QY'])
	pie = Pie('部分城市相对气压饼图')
	pie.add('', attrs, values, is_label_show=True)
	pie.render('weatherPie.html')


# 雷达图
def DrawRadar(city_name):
	schema = [('最高气温', 45), ('气压', 1500), ('湿度', 100), ('最低气温', 45), ('PM2.5', 200)]
	data = qr.get_data(city_name)
	values = [[int(data['Htemperature']), int(data['QY']), int(data['SD'].strip('%')), int(data['Ltemperature']), int(data['pm25'])]]
	radar = Radar()
	radar.config(schema)
	radar.add('%s天气信息' % city_name, values, is_splitline=True, is_axisline_show=True)
	radar.render('weatherRadar.html')




if __name__ == '__main__':
	city_names = ['上海', '北京', '南京', '杭州', '天津', '武汉']
	# city_names = ['上海', '北京', '南京', '杭州', '天津', '武汉', '苏州', '哈尔滨', '长春', '深圳', '西安', '南宁', '包头', '合肥', '成都', '乌鲁木齐', '西宁']
	# city_names = ['北京', '天津', '上海', '重庆',
	# 			  '石家庄', '太原', '沈阳', '长春',
	# 			  '哈尔滨', '南京', '杭州', '合肥',
	# 			  '福州', '南昌', '济南', '郑州',
	# 			  '武汉', '长沙', '广州', '成都']
	draw_weather_pic('济南')
	# DrawBar(city_names)
	# DrawGeo(city_names)
	# DrawLine(city_names)
	# DrawLiquid('北京')
	# DrawMap(city_names)
	# DrawPie(city_names)
	# DrawRadar('南京')点击并拖拽以移动

总结

啊这!结果出是出来了!害~果然我是住在“赤道”上面的~~233333

​🎊🎊源码基地:关注小编获取哦~💝记得三连吖

  • 15
    点赞
  • 217
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
数据实训是一门综合性实训课程,主要涉及到大数据爬取、存储、分析可视化。其中,Python是一种高级编程语言,被广泛应用于数据爬取、处理和分析的领域。 在课程中,我们会使用Python来编写爬虫程序,从股票相关的网站或API中获取股票数据。通过分析网站结构和数据接口,我们可以使用Python的各种库和框架来获取股票历史交易数据、实时行情数据等。 一旦我们成功获取了股票数据,我们可以使用Hive这个大数据存储和分析工具来存储和处理这些数据。Hive是基于Hadoop平台的数据仓库工具,可以将结构化和半结构化的数据存储在分布式文件系统中,并使用类SQL语言进行查询和分析。 通过Hive,我们可以对爬取到的股票数据进行各种数据处理和分析操作,例如计算股价涨跌幅、交易量统计、计算股票均线指标等。Hive的强大功能和灵活性使得我们可以根据自己的需求和兴趣来进行数据分析,并从中发现有价值的股票市场信息。 为了更好地展示和传达我们的数据分析结果,课程中还会涉及到可视化工具。可视化是将数据图表、图形等形式呈现出来,使得数据更具有直观性和易懂性。Python中有很多强大的可视化库和工具,例如Matplotlib、Seaborn和Plotly等,可以帮助我们将股票数据进行可视化展示。 总而言之,大数据实训课程中通过使用Python进行股票数据爬取、使用Hive进行数据分析和使用可视化工具展示结果,帮助我们掌握大数据处理和分析的技能,同时也使我们能够更好地理解和利用股票市场的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾木子吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值