时间序列数据可视化:Pyecharts日历图

简介: 时间序列数据可视化:Pyecharts日历图

以下可视化的数据分别来源为地区所在名对应的的文件,以北京为例。对应文件名为:"air_beijing_2021",它有五列,分别是日期质量等级AQI指数AQI排名PM2.5。基于这个数据表,进行数据处理和可视化操作。

一、日历图

日历图,是指按照日历的布局,用颜色展现每一天的数据,从而比较直观地看到全年的数据情况

代码如下:

1. import pandas as pd
2. import datetime
3. from pyecharts import options as opts
4. from pyecharts.charts import Calendar
5. 
6. begin = datetime.date(2021, 1, 1)
7. end = datetime.date(2021, 12, 31)
8. beijing = pd.read_excel("D:/桌面/大作业/air_beijing_2021.xlsx")
9. chongqing = pd.read_excel("D:/桌面/大作业/air_chongqing_2021.xlsx")
10. guangzhou = pd.read_excel("D:/桌面/大作业/air_guangzhou_2021.xlsx")
11. shanghai = pd.read_excel("D:/桌面/大作业/air_shanghai_2021.xlsx")
12. tianjin = pd.read_excel("D:/桌面/大作业/air_tianjin_2021.xlsx")
13. 
14. def func(df,name):
15.     values = df.iloc[::, 4:5:].to_numpy()
16.     data = df.iloc[::, 0:1:].to_numpy()
17.     data_1 = [str(i)[2:12:] for i in data]
18.     count = 0
19.     fin_data =[]
20. for i in range(0, len(values)):
21.         fin_data.append([data_1[i], int(values[i][0])])
22.         count += 1
23.     c = (
24.         Calendar()
25.         .add(
26. "",
27.             fin_data,
28.             calendar_opts=opts.CalendarOpts(
29.                 range_="2021",
30.                 daylabel_opts=opts.CalendarDayLabelOpts(name_map="cn"),
31.                 monthlabel_opts=opts.CalendarMonthLabelOpts(name_map="cn"),
32.             ),
33.         )
34.         .set_global_opts(
35.             title_opts=opts.TitleOpts(title=f"{name}2021年PM2.5情况日历图"),
36.             visualmap_opts=opts.VisualMapOpts(
37.                 max_=0,
38.                 min_=250,
39.                 orient="horizontal",
40.                 is_piecewise=True,  # 这里是True 表示可以选择是否出现。
41.                 pos_top="230px",
42.                 pos_left="100px",
43.             ),
44.         )
45. 
46.     )
47.     c.render(f"{name}.html")
48. 
49. func(beijing,"北京")
50. func(chongqing,"重庆")
51. func(guangzhou,"广州")
52. func(shanghai,"上海")
53. func(tianjin,"天津")

效果如下:

二、 甜麦圈图(饼图

饼图英文学名为Sector Graph,又名Pie Graph。常用于统计学模块。2D饼图为圆形,手画时,常用圆规作图。仅排列在工作表的一列或一行中的数据可以绘制到饼图中。饼图显示一个数据系列 (数据系列:在图表中绘制的相关数据点,这些数据源自数据表的行或列。图表中的每个数据系列具有唯一的颜色或图案并且在图表的图例中表示。可以在图表中绘制一个或多个数据系列。饼图只有一个数据系列。)中各项的大小与各项总和的比例。饼图中的数据点 (数据点:在图表中绘制的单个值,这些值由条形、柱形、折线、饼图或圆环图的扇面、圆点和其他被称为数据标记的图形表示。相同颜色的数据标记组成一个数据系列。)显示为整个饼图的百分比

代码如下:

1. import pandas as pd
2. import matplotlib.pyplot as plt
3. plt.rcParams['font.sans-serif']=['SimHei']
4. plt.rcParams['axes.unicode_minus']=False
5. 
6. beijing = pd.read_excel("D:/桌面/大作业/air_beijing_2021.xlsx")
7. chongqing = pd.read_excel("D:/桌面/大作业/air_chongqing_2021.xlsx")
8. guangzhou = pd.read_excel("D:/桌面/大作业/air_guangzhou_2021.xlsx")
9. shanghai = pd.read_excel("D:/桌面/大作业/air_shanghai_2021.xlsx")
10. tianjin = pd.read_excel("D:/桌面/大作业/air_tianjin_2021.xlsx")
11. beijing_AQI = beijing["AQI指数"]
12. chongqing_AQI = chongqing["AQI指数"]
13. guangzhou_AQI = guangzhou["AQI指数"]
14. shanghai_AQI = shanghai["AQI指数"]
15. tianjin_AQI = tianjin["AQI指数"]
16. def average(A):
17. return round(sum(A)/len(A),2)
18. 
19. area_list = ["北京","重庆","广州","上海","天津"]
20. average_list = [average(beijing_AQI),average(chongqing_AQI),average(guangzhou_AQI),average(shanghai_AQI),average(tianjin_AQI)]
21. fin_dic = {}
22. for i in range(0,len(average_list)):
23.     fin_dic[area_list[i]] = average_list[i]
24. print(fin_dic)
25. Num = sum(list(fin_dic.values()))
26. data = list(fin_dic.values())
27. labels = list(fin_dic.keys())
28. colors = ['red', 'orange', 'yellow', 'green', 'purple', 'blue', 'black']
29. sizes = [data[0] / Num * 100, data[1] / Num * 100, data[2] / Num * 100, data[3] / Num * 100, data[4] / Num * 100]
30. expodes = (0, 0, 0.1, 0,0)
31. plt.pie(sizes, explode=expodes, autopct='%1.1f%%',labels=labels, shadow=True, colors=colors)
32. plt.title("五地2021年全年的空气质量情况进行对比",fontsize=20)
33. plt.axis('equal')
34. # 保存并显示
35. plt.savefig('饼状图.png')
36. plt.show()

结果如下:

三、总结

(1)日历图总结

  1. 第一问要求绘制日历图,想到pyecharts.charts里面的 Calendar,求五个地区的日历图,只需求出一个地区的日历,将过程用函数封装,函数设置读取不同地区表格的形参,使得代码逻辑更加清晰。
  2. 读取文件,使用df.iloc[::, 4:5:].to_numpy()指定读取固定列,之后用列表生成式和字符串切片的方法,将日期转换成标准的字符串日期形式。对应的PM2.5值直接指定读取就可以。将这两列值,用for循环一行一行传入fin_list里面,方便最终使用。
  3. 接下来就用Calendar()进行日历图的绘制,注意到这里name_map = "cn" ,name_map="cn" 使用的是中文标签,最小值设置为0,最大值设置为250,图标的标题用函数传入的形参去命名。
  4. c.render(f"{name}.html")保存为name命名的html文件,在浏览器中打开就可以。最后传入不同实参,调用五次该函数就可以得到五个地区的日历图了。

(2)饼图总结

  1. 读取五地的AQI指数,求平均值作为该地的空气质量情况评判依据。以北京为例,beijing = pd.read_excel("D:/桌面/大作业/air_beijing_2021.xlsx")读取北京的文件,beijing_AQI = beijing["AQI指数"]读取北京的AQI,定义函数average,返回平均值。调用该函数,将北京AQI传染,则可以得到全年的平均AQI。
  2. 将地名和对应平均AQI作为值和键传入字典中,起到一一对应的作用,方便之后获取。先计算总数据,即将五个地区的平均API加在一起,labels即为地区名,colors即为每个饼图的颜色。Size即为占比,与前面地名一一对应,最后设置突出模块偏移值。


相关文章
|
2月前
|
数据可视化 Python
Pandas可视化指南:从零教你绘制数据图表
Pandas可视化指南:从零教你绘制数据图表
seaborn常用的10种数据分析图表
seaborn常用的10种数据分析图表
|
5月前
|
数据可视化 JavaScript 前端开发
【数据分析与可视化】pyecharts可视化图表讲解及实战(超详细 附源码)
【数据分析与可视化】pyecharts可视化图表讲解及实战(超详细 附源码)
364 0
|
数据可视化 Ubuntu 数据挖掘
Python绘制精美可视化数据分析图表(一)-Matplotlib
数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程.这一过程也是质量管理体系的支持过程.在实用中,数据分析可帮助人们作出判断,以便采取适当行动 在DT时代,数据分析是企业做出重要决策的基础,巧妇难为无米之炊,数据就是米,是数据分析基础中的基础,但是没有经过整理的数据,或许杂乱无章,没有任何意义,通过数据分析相关手段处理之后,让数据变得有意义,特别是整理后的数据经过可视化,更加直观,更容易,快速地找到问题所在,更有利于做出正确的决策,不至于在市场经营中处于被动局面.所以数据可视化也是我们数据分析中最重要的工具,也是最重要的一环
419 1
|
11月前
|
数据可视化 Python
python数据可视化-日期折线图画法
python数据可视化-日期折线图画法
|
数据可视化
数据可视化平台Datart-创建柱状图
数据可视化平台、Datart
502 0
|
数据可视化 数据挖掘 Python
14个Seaborn数据可视化图(上)
14个Seaborn数据可视化图
206 0
14个Seaborn数据可视化图(上)
|
数据可视化 数据挖掘
14个Seaborn数据可视化图(下)
14个Seaborn数据可视化图
106 0
14个Seaborn数据可视化图(下)
|
数据可视化 JavaScript 前端开发
Python 绘制精美可视化数据分析图表 (二)-pyecharts
画图表就是为了把复杂的事情表达清楚,画图表还可以弥补单用文字表达的缺欠,对有些事物解说更直接、更具体。就像我们平时会议所用的 PPT,能够更直观呈现讲述者所想表达的意思,且通俗易懂。总的来说,使用图表可以化复杂为简洁,化抽象为具体,使读者或听众更容易理解。 图表能跟直观表达和揭示数据的规律,人对图像更加敏感,对图文并茂的事物更容易接受,阅读更加简单高效,而且图表更显专业性,更具有说服力,更有利于沟通。 在上一篇文章《Python 绘制精美可视化数据分析图表 (一)-Matplotlib》中我们已经讲述过数据分析和绘制数据分析图表的好处,这里就不再赘述。直奔主题:pyecharts 是什么?
625 0