前言
在进行描述性数据分析时会遇到需要进行分类统计的数据,例如性别,所在地区等等。本篇文章用数据中的性别信息为例并通过Pyecharts和Matplotlib对其进行可视化。
1.导入数据
import pandas as pd
import numpy as np
data_path = '../data/air_data.csv'
data = pd.read_csv(data_path)
data
2.提取性别列数据
sex_data = data.iloc[:,3]
sex_data
3.对性别列数据进行计数
sex_count = sex_data.value_counts()
sex_count
4.生成性别数据的DataFrame
man_count = sex_count.values[0]
woman_count = sex_count.values[1]
all_count1 = [man_count,woman_count]
dic1 = {'sex1':['男','女'],'sex_count1':all_count1}
df1 = pd.DataFrame(dic1)
df1
5.通过Pyecharts对性别信息进行可视化
#导入工作包
from pyecharts.charts import Pie
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
from pyecharts import options as opts
#提取数据列表
x_data = df1["sex1"].tolist()
y_data = df1["sex_count1"].tolist()
#进行绘图
c = (
Pie()
.add("", [list(z) for z in zip(x_data, y_data)]) # zip函数两个部分组合在一起list(zip(x,y))-----> [(x,y)]
.set_global_opts(title_opts=opts.TitleOpts(title="男女比例占比")) # 标题
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%")) # 数据标签设置
.set_colors(["blue", "orange"])
)
c.load_javascript()
注:为避免运行为空白,建议将上下两段代码分开运行。
c.render_notebook()
6.通过Matplotlib对性别信息进行可视化
#对男女比例进行计算
man_scale = man_count/(man_count+woman_count)
woman_scale = woman_count/(man_count+woman_count)
#生成男女比例的DataFrame
all_count2 = [man_scale,woman_scale]
dic2 = {'sex2':['男','女'],'sex_count2':all_count}
df2 = pd.DataFrame(dic2)
df2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(7,7))
mw = df2.set_index('sex2')
result = mw[['sex_count2']]
plt.pie(result['sex_count2'], labels=result.index, autopct='%3.1f%%',textprops={'fontsize': 18})
plt.title('男女比例占比',fontsize=18)
plt.show()