Hallo,各位小伙伴大家好啊!这个专栏是用来分享数据处理以及数据可视化的一些常见操作,以及自己的一些学习笔记,希望能给大家带来帮助呀!感兴趣的小伙伴也欢迎私信或者评论区交流呀!
以下可视化的数据分别来源为地区所在名对应的的文件,以北京为例。对应文件名为:"air_beijing_2021",它有五列,分别是日期、质量等级、AQI指数、AQI排名,PM2.5。基于这个数据表,进行数据处理和可视化操作。
日历图,是指按照日历的布局,用颜色展现每一天的数据,从而比较直观地看到全年的数据情况。
代码如下:
import pandas as pd
import datetime
from pyecharts import options as opts
from pyecharts.charts import Calendar
begin = datetime.date(2021, 1, 1)
end = datetime.date(2021, 12, 31)
beijing = pd.read_excel("D:/桌面/大作业/air_beijing_2021.xlsx")
chongqing = pd.read_excel("D:/桌面/大作业/air_chongqing_2021.xlsx")
guangzhou = pd.read_excel("D:/桌面/大作业/air_guangzhou_2021.xlsx")
shanghai = pd.read_excel("D:/桌面/大作业/air_shanghai_2021.xlsx")
tianjin = pd.read_excel("D:/桌面/大作业/air_tianjin_2021.xlsx")
def func(df,name):
values = df.iloc[::, 4:5:].to_numpy()
data = df.iloc[::, 0:1:].to_numpy()
data_1 = [str(i)[2:12:] for i in data]
count = 0
fin_data =[]
for i in range(0, len(values)):
fin_data.append([data_1[i], int(values[i][0])])
count += 1
c = (
Calendar()
.add(
"",
fin_data,
calendar_opts=opts.CalendarOpts(
range_="2021",
daylabel_opts=opts.CalendarDayLabelOpts(name_map="cn"),
monthlabel_opts=opts.CalendarMonthLabelOpts(name_map="cn"),
),
)
.set_global_opts(
title_opts=opts.TitleOpts(title=f"{name}2021年PM2.5情况日历图"),
visualmap_opts=opts.VisualMapOpts(
max_=0,
min_=250,
orient="horizontal",
is_piecewise=True, # 这里是True 表示可以选择是否出现。
pos_top="230px",
pos_left="100px",
),
)
)
c.render(f"{name}.html")
func(beijing,"北京")
func(chongqing,"重庆")
func(guangzhou,"广州")
func(shanghai,"上海")
func(tianjin,"天津")
效果如下:
饼图英文学名为Sector Graph,又名Pie Graph。常用于统计学模块。2D饼图为圆形,手画时,常用圆规作图。仅排列在工作表的一列或一行中的数据可以绘制到饼图中。饼图显示一个数据系列 (数据系列:在图表中绘制的相关数据点,这些数据源自数据表的行或列。图表中的每个数据系列具有唯一的颜色或图案并且在图表的图例中表示。可以在图表中绘制一个或多个数据系列。饼图只有一个数据系列。)中各项的大小与各项总和的比例。饼图中的数据点 (数据点:在图表中绘制的单个值,这些值由条形、柱形、折线、饼图或圆环图的扇面、圆点和其他被称为数据标记的图形表示。相同颜色的数据标记组成一个数据系列。)显示为整个饼图的百分比。
代码如下:
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
beijing = pd.read_excel("D:/桌面/大作业/air_beijing_2021.xlsx")
chongqing = pd.read_excel("D:/桌面/大作业/air_chongqing_2021.xlsx")
guangzhou = pd.read_excel("D:/桌面/大作业/air_guangzhou_2021.xlsx")
shanghai = pd.read_excel("D:/桌面/大作业/air_shanghai_2021.xlsx")
tianjin = pd.read_excel("D:/桌面/大作业/air_tianjin_2021.xlsx")
beijing_AQI = beijing["AQI指数"]
chongqing_AQI = chongqing["AQI指数"]
guangzhou_AQI = guangzhou["AQI指数"]
shanghai_AQI = shanghai["AQI指数"]
tianjin_AQI = tianjin["AQI指数"]
def average(A):
return round(sum(A)/len(A),2)
area_list = ["北京","重庆","广州","上海","天津"]
average_list = [average(beijing_AQI),average(chongqing_AQI),average(guangzhou_AQI),average(shanghai_AQI),average(tianjin_AQI)]
fin_dic = {}
for i in range(0,len(average_list)):
fin_dic[area_list[i]] = average_list[i]
print(fin_dic)
Num = sum(list(fin_dic.values()))
data = list(fin_dic.values())
labels = list(fin_dic.keys())
colors = ['red', 'orange', 'yellow', 'green', 'purple', 'blue', 'black']
sizes = [data[0] / Num * 100, data[1] / Num * 100, data[2] / Num * 100, data[3] / Num * 100, data[4] / Num * 100]
expodes = (0, 0, 0.1, 0,0)
plt.pie(sizes, explode=expodes, autopct='%1.1f%%',labels=labels, shadow=True, colors=colors)
plt.title("五地2021年全年的空气质量情况进行对比",fontsize=20)
plt.axis('equal')
# 保存并显示
plt.savefig('饼状图.png')
plt.show()
结果如下:
(1)日历图总结
(2)饼图总结