Python数据可视化

1.离散型变量的可视化

1.1 饼图
1.1.1 matplotlib模块

下面以"芝麻信用"失信用户数据为例(数据来源于财新网),分析近300万失信人群的学历分布

# 饼图的绘制
# 导入第三方模块
import matplotlib.pyplot as plt
# 构造数据
edu = [0.2515,0.3724,0.3336,0.0368,0.0057]
labels = ['中专','大专','本科','硕士','其他']
# 添加修饰的饼图 
explode = [0,0.1,0,0,0]  # 生成数据,用于突出显示大专学历人群
# 中文乱码和坐标轴负号的处理
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 将横、纵坐标轴标准化处理,确保饼图是一个正圆,否则为椭圆
plt.axes(aspect='equal')
# 设置图片风格
plt.style.use("ggplot")
# 设置画布大小
plt.figure(figsize=(6,6))
# 绘制饼图
plt.pie(x = edu, # 绘图数据
        explode=explode, # 突出显示大专人群
        labels=labels, # 添加教育水平标签
        autopct='%.1f%%', # 设置百分比的格式,这里保留一位小数
        pctdistance=0.8,  # 设置百分比标签与圆心的距离
        labeldistance = 1.1, # 设置教育水平标签与圆心的距离
        startangle = 180, # 设置饼图的初始角度
        radius = 1.2, # 设置饼图的半径
        counterclock = False, # 是否逆时针,这里设置为顺时针方向
        textprops = {
   'fontsize':12, 'color':'black'}, # 设置文本标签的属性值
        )

# 添加图标题
plt.title('失信用户的受教育水平分布')
# 保存图片
plt.savefig("./图片1")
# 显示图形
plt.show()

在这里插入图片描述

1.1.2 pandas模块
# 导入第三方模块
import pandas as pd
# 构建序列
data1 = pd.Series({
   '中专':0.2515,'大专':0.3724,'本科':0.3336,'硕士':0.0368,'其他':0.0057})
# 将序列的名称设置为空字符,否则绘制的饼图左边会出现None这样的字眼
data1.name = ''
# 控制饼图为正圆
plt.axes(aspect = 'equal')
# 设置画布大小
plt.figure(figsize=(6,6))
# plot方法对序列进行绘图
data1.plot(kind = 'pie', # 选择图形类型
           explode=[0,0,0.08,0,0],
           autopct='%.1f%%', # 饼图中添加数值标签
           radius = 1, # 设置饼图的半径
           startangle = 180, # 设置饼图的初始角度
           counterclock = False, # 将饼图的顺序设置为顺时针方向
           title = '失信用户的受教育水平分布', # 为饼图添加标题
           textprops = {
   'fontsize':12, 'color':'black'} # 设置文本标签的属性值
          )
# 保存图片
plt.savefig("./图片2")
# 显示图形
plt.show()

在这里插入图片描述

1.2 条形图
1.2.1 matplotlib模块

首先绘制单个离散变量的垂直或水平条形图,数据来源于互联网,反应的是2017年中国六大省份的GDP,代码如下:

# 条形图的绘制--垂直条形图
# 读入数据
GDP = pd.read_excel(r'./Province GDP 2017.xlsx')
GDP

在这里插入图片描述

# 设置绘图风格(不妨使用R语言中的ggplot2风格)
plt.style.use('ggplot')
plt.figure(figsize=(10,6))
# 绘制条形图
plt.bar(left = range(GDP.shape[0]), # 指定条形图x轴的刻度值
        height = GDP.GDP, # 指定条形图y轴的数值
        tick_label = GDP.Province, # 指定条形图x轴的刻度标签
        color = 'steelblue', # 指定条形图的填充色
       )
# 添加y轴的标签
plt.ylabel('GDP(万亿)')
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
# 添加条形图的标题
plt.title('2017年度6个省份GDP分布',fontsize=16)
# 为每个条形图添加数值标签
for x,y in enumerate(GDP.GDP):
    plt.text(x,y+0.1,'%s' %round(y,1),ha='center',fontsize=14)
plt.savefig("./图片3")
# 显示图形    
plt.show()

在这里插入图片描述
将条形图进行升序或降序处理,以水平条形图为例:

# 条形图的绘制--水平条形图
# 对读入的数据作升序排序
GDP.sort_values(by = 'GDP', inplace = True)
plt.figure(figsize=(10,6))
# 绘制条形图
plt.barh(bottom = range(GDP.shape[0]), # 指定条形图y轴的刻度值
        width = GDP.GDP, # 指定条形图x轴的数值
        tick_label = GDP.Province, # 指定条形图y轴的刻度标签
        color = 'steelblue', # 指定条形图的填充色
       )
# 添加x轴的标签
plt.xlabel('GDP(万亿)')
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
# 添加条形图的标题
plt.title('2017年度6个省份GDP分布')
# 为每个条形图添加数值标签
for y,x in enumerate(GDP.GDP):
    plt.text(x+0.1,y,x,va='center',fontsize=12)
plt.savefig("./图片4")
# 显示图形    
plt.show()

在这里插入图片描述
绘制堆叠条形图
这里以2017年四个季度的产业值为例(数据来源于中国统计局)

# 读入数据
Industry_GDP = pd.read_excel(r'./Industry_GDP.xlsx')
Industry_GDP

在这里插入图片描述

# 取出四个不同的季度标签,用作堆叠条形图x轴的刻度标签
Quarters = Industry_GDP.Quarter.unique()
plt.figure(figsize=(10,6))
# 取出第一产业的四季度值
Industry1 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第一产业']
# 重新设置行索引
Industry1.index = range(len(Quarters))
# 取出第二产业的四季度值
Industry2 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第二产业']
# 重新设置行索引
Industry2.index = range(len(Quarters))
# 取出第三产业的四季度值
Industry3 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第三产业']

# 绘制堆叠条形图
# 各季度下第一产业的条形图
plt.bar(left = range(len(Quarters)), height=Industry1, label = '第一产业', tick_label = Quarters,width=0.6)
# 各季度下第二产业的条形图
plt.bar(left = range(len(Quarters)), height=Industry2, bottom = Industry1, label = '第二产业',width=0.6)
# 各季度下第三产业的条形图
plt.bar(left = range(len(Quarters)), height
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 29
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值