目录(黄总布置的小任务(●'◡'●)):
一、所有数据可视化
1、csv文件
2、数据处理
二、判断传感器数据是否准确
三、预测明年同一时间数据的变化
四、总结
五、代码分享及成果展示
一、所有数据可视化
1、csv文件:(部分数据展示) 需要的数据:年-月-日、temp_2(昨天最高气温)、temp_1(金今天最高气温)、average(历年同日最高气温平均值)、actual(今天真实的最高气温)
2、数据处理:
可以查看我的上一条博客,这边我就不多说啦:python pyecharts 绘图 数据可视化_xiaojiayia的博客-CSDN博客python pyecharts 绘图,数据可视化,可视化中遇到的只显示横纵坐标,数据为null的问题解决方法https://blog.csdn.net/xiaojiayia/article/details/122707331?spm=1001.2014.3001.5502
二、判断传感器数据是否准确
我选择的方法十分简单粗暴,直接判断temp_1(当天数据)和actual(真实数据)是否相等,当相等的时候,直接输出一个exact=30 值,当不等时 exact=0.这样的话,可以在折线图中直观的看出传感器数据的大致准确率。我本来想在折线图的旁边标注上传感器数据的准确率,但是黄总说不好表,除非我会前端(我只是个麻瓜,哪会儿哦,嘿嘿),所以就没标。相关代码放下面啦
temp_2=int(df_list[4]) #csv文件第五列 昨天数据
temp_1=int(df_list[5])#csv文件第六页
average=float(df_list[6])#往年同一时间平均气温
actual=int(df_list[7])#真实数据
if temp_1==actual:
exact=30
else:
exact=0
三、预测明年数据变化
这个预测就更简单粗暴啦,直接是(历年数据+今日数据)/2=明年的数据走向啦
四、总结
这个小任务,让我至少说更加熟练的用pyecharts。前面几次小任务的铺垫(数据处理啊、简单折线图的绘制啊)让这个任务没有那么难搞(因为我是个麻瓜!所以有时候就很笨蛋!)
五、代码分享集成果展示
成果展示:
这个模板我感觉很炫酷!可以放大缩小(模板分享在上一篇文章里面)
代码分享(是在上个小任务基础上做的,所以有些不用的就注释掉啦)
###可视化
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Line
file=open("C:/Users/大佳怡/Desktop/大佳怡的python之旅/temps.csv")
df=pd.read_csv(file)
length_df=len(df)
data=[]
all_data=[]
counter=0
for index in range(0,length_df):
df_list=list(df.iloc[index])
#只需要年月日
time=df_list[0:3]
#list转字符串
time_str="-".join('%s'%id for id in time)
temp_2=int(df_list[4]) #csv文件第五列 昨天数据
temp_1=int(df_list[5])#csv文件第六页
average=float(df_list[6])#往年同一时间平均气温
actual=int(df_list[7])#真实数据
if temp_1==actual:
exact=30
counter+=1
else:
exact=0
future=float((actual+average)/2)
#放入列表
data.append(time_str)
data.append(temp_2)
data.append(temp_1)
data.append(average)
data.append(actual)
data.append(exact)
data.append(future)
all_data.append(data)
data=[]
#print(all_data)# temp1今天temp2昨天 average历史上每一年今天平均最高温度,actual当天真实的最高温度, 任务:所有数据可视化,判断采集到的数据准不准,预测明年同时数据会怎么变化
(
Line(init_opts=opts.InitOpts(width="1680px", height="800px"))
.add_xaxis(xaxis_data=[item[0] for item in all_data])
.add_yaxis(
series_name="昨天最高气温",
y_axis=[item[1] for item in all_data],
yaxis_index=0,
is_smooth=True,
is_symbol_show=False,
color='#FF0000',
)
.add_yaxis(
series_name="今日最高气温",
y_axis=[item[2] for item in all_data],
yaxis_index=0,
is_smooth=True,
is_symbol_show=False,
color='blue',
)
.add_yaxis(
series_name="历年同时最高气温",
y_axis=[item[3] for item in all_data],
yaxis_index=0,
is_smooth=True,
is_symbol_show=False,
color='#FF6600',
)
.add_yaxis(
series_name="真实气温",
y_axis=[item[4] for item in all_data],
yaxis_index=0,
is_smooth=True,
is_symbol_show=False,
color='#FF00FF',
)
.add_yaxis(
series_name="峰值代表传感器数据准确",
y_axis=[item[5] for item in all_data],
yaxis_index=0,
is_smooth=True,
is_symbol_show=False,
color='red',
)
.add_yaxis(
series_name="预测明年",
y_axis=[item[6] for item in all_data],
yaxis_index=0,
is_smooth=True,
is_symbol_show=False,
color='#808000',
)
.set_global_opts(
title_opts=opts.TitleOpts(title="temp_2 data"),
tooltip_opts=opts.TooltipOpts(trigger="axis"),
datazoom_opts=[
opts.DataZoomOpts(yaxis_index=0),
opts.DataZoomOpts(type_="inside", yaxis_index=0),
],
# visualmap_opts=opts.VisualMapOpts(
# pos_top="10",
# pos_right="10",
# is_piecewise=True,
# pieces=[
# {"gt": 30, "lte":40 , "color": "#096"},
# {"gt": 40, "lte": 50, "color": "#ffde33"},
# {"gt": 50, "lte": 60, "color": "#ff9933"},
# {"gt": 60, "lte": 70, "color": "#cc0033"},
# {"gt": 70, "lte": 80, "color": "#660099"},
# ],
# out_of_range={"color": "#999"},
# ),
xaxis_opts=opts.AxisOpts(type_="category"),
yaxis_opts=opts.AxisOpts(
type_="value",
name_location="start",
min_=0,
max_=100,
is_scale=True,
axistick_opts=opts.AxisTickOpts(is_inside=False),
),
)
.set_series_opts(
markline_opts=opts.MarkLineOpts(
data=[
{"yAxis": 30},
{"yAxis": 40},
{"yAxis": 50},
{"yAxis": 60},
{"yAxis": 70},
{"yAxis": 80},
{"yAxis": 90},
{"yAxis": 100},
],
label_opts=opts.LabelOpts(position="end"),
)
)
.render("temp.html")
)