Python数据可视化-Pandas

文章目录

  • 一. Pandas数据可视化简介
  • 二. Pandas 单变量可视化
    • 1. 柱状图
    • 2. 折线图
    • 3. 面积图
    • 4. 直方图
    • 5. 饼图
  • 三. Pandas 双变量可视化
    • 1. 散点图
    • 2. 蜂巢图
    • 3. 堆叠图
    • 4. 折线图

一. Pandas数据可视化简介

pandas库是Python数据分析的核心库
它不仅可以加载和转换数据,还可以做更多的事情:它还可以可视化
pandas绘图API简单易用,是pandas流行的重要原因之一

可视化小技巧:

  • 如果是类别型
    • 柱状
    • 饼图 (类别相对较少 5-6个 或者更少), 所有的类别加起来是1个整体
  • 如果是数值型
    • 看变化趋势 折线 plot.line()
    • 看分布直方plot.hist()
      • 绘制直方图的时候,需要注意, 如果数据分布不均匀(倾斜的数据, 有取值数量较少的极大, 极小值) 这个时候如果不做数据的处理, 直接绘制直方图, 不能反映出数据的分布来, 只能得到一个柱子
      • 可以把极值单独取出来讨论
      • 把去掉极值的部分再绘制直方图

二. Pandas 单变量可视化

  • 单变量可视化, 包括条形图、折线图、直方图、饼图等
  • 数据使用葡萄酒评论数据集,来自葡萄酒爱好者杂志,包含10个字段,150929行,每一行代表一款葡萄酒
    在这里插入图片描述
  • 加载数据
import pandas as pd
reviews = pd.read_csv('data/winemag-data_first150k.csv',index_col=0)
reviews.head()

在这里插入图片描述

1. 柱状图

条形图是最简单最常用的可视化图表
在下面的案例中,将所有的葡萄酒品牌按照产区分类,看看哪个产区的葡萄酒品种多:

kwargs = dict(figsize=(16, 8),fontsize=20,color = ['r', 'g', 'b', 'y', 'm'])
reviews['province'] .value_counts().head().plot.bar(**kwargs)

在这里插入图片描述
上面的图表说明加利福尼亚生产的葡萄酒比其他省都多
也可以折算成比例, 观察加利福尼亚葡萄酒占总数的百分比

(reviews['province'] .value_counts().head()/len(reviews)).plot.bar(**kwargs)

在这里插入图片描述
在《葡萄酒杂志》(Wine Magazine)评述的葡萄酒中,加利福尼亚生产了近三分之一!

条形图(柱状图)非常灵活:

  • 高度可以代表任何东西,只要它是数字即可
  • 每个条形可以代表任何东西,只要它是一个类别即可。

也可以用来展示《葡萄酒杂志》(Wine Magazine)给出的评分数量的分布情况:

reviews['points'] .value_counts().sort_index().plot.bar(**kwargs)

在这里插入图片描述

2. 折线图

如果要绘制的数据不是类别值,而是连续值比较适合使用折线图

reviews['points'] .value_counts().sort_index().plot.line(**kwargs)

柱状图和折线图区别
柱状图:

  • 简单直观,很容易根据柱子的长短看出值的大小,易于比较各组数据之间的差别

折线图:

  • 易于比较各组数据之间的差别
  • 能比较多组数据在同一个维度上的趋势
  • 每张图上不适合展示太多折线
    在这里插入图片描述

3. 面积图

面积图就是在折线图的基础上,把折线下面的面积填充颜色

reviews['points'] .value_counts().sort_index().plot.area(**kwargs)

当只有一个变量需要制图时,面积图和折线图之间差异不大,在这种情况下,折线图和面积图可以互相替换
在这里插入图片描述

4. 直方图

  • 直方图看起来很像条形图,
  • 直方图是一种特殊的条形图,它可以将数据分成均匀的间隔,并用条形图显示每个间隔中有多少行,
  • 直方图柱子的宽度代表了分组的间距,柱状图柱子宽度没有意义
  • 直方图缺点:将数据分成均匀的间隔区间,所以它们对歪斜的数据的处理不是很好:
  • 没有对价格做任何处理,由于有个别品种的酒价格极高,导致直方图的价格分布发生变化

    reviews['price'].plot.hist()
    

    在这里插入图片描述

  • 数据倾斜:
    当数据在某个维度上分布不均匀,称为数据倾斜
    一共15万条数据,价格高于1500的只有三条
    价格高于500的只有73条数据,说明在价格这个维度上,数据的分布是不均匀的
    直方图适合用来展示没有数据倾斜的数据分布情况,不适合展示数据倾斜的数据

    #查看价格较高的葡萄酒情况
    reviews[reviews['price'] >500]
    #查看数据shape
    reviews.shape # (150930, 10)
    reviews[reviews['price'] >500].shape # (73, 10)
    
  • 评估数据,调整数据

reviews['price'].quantile(0.95)
80.0
reviews[reviews['price']<80]['price'].plot.hist()

在这里插入图片描述

-对葡萄酒的评分不存在数据倾斜的情况,评分数据的分布情况比较适合用直方图展示

reviews['points'].plot.hist()

在这里插入图片描述

5. 饼图

饼图也是一种常见的可视化形式

reviews['province'].value_counts().head(10).plot.pie()

在这里插入图片描述

饼图的缺陷:饼图只适合展示少量分类在整体的占比
如果分类比较多,必然每个分类的面积会比较小,这个时候很难比较两个类别
如果两个类别在饼图中彼此不相邻,很难进行比较
可以使用柱状图图来替换饼图

三. Pandas 双变量可视化

1. 散点图

最简单的两个变量可视化图形是散点图,散点图中的一个点,可以表示两个变量

reviews.plot().scatter(x='price',y='points')

在这里插入图片描述

reviews[reviews['price'] < 100].plot.scatter(x='price', y='points')

在这里插入图片描述
在这里插入图片描述

reviews[reviews['price'] < 100].sample(100).plot.scatter(x='price', y='points')

在这里插入图片描述

调整图形大小,字体大小,由于pandas的绘图功能是对Matplotlib绘图功能的封装,所以很多参数pandas 和 matplotlib都一样

reviews[reviews['price'] < 100].sample(100).plot.scatter(x='price', y='points',figsize=(14,8),fontsize = 16)

在这里插入图片描述
低版本需要,修改x轴 y轴标签字体
在这里插入图片描述

2. 蜂巢图

hexplot将数据点聚合为六边形,然后根据其内的值为这些六边形上色:

reviews[reviews['price'] < 100].plot.hexbin(x='price', y='points', gridsize=15,figsize=(14,8))

在这里插入图片描述

如果x轴坐标缺失,属于bug,可以通过调用matplotlib的api添加x坐标

fig, axes = plt.subplots(ncols=1, figsize = (12,8))
reviews[reviews['price'] < 100].plot.hexbin(x='price', y='points', gridsize=15,ax = axes)
axes.set_xticks([0,20,40,60,80,100])

结论
该图中的数据可以和散点图中的数据进行比较,但是hexplot能展示的信息更多
从hexplot中,可以看到《葡萄酒杂志》(Wine Magazine)评论的葡萄酒瓶大多数是87.5分,价格20美元
Hexplot和散点图可以应用于区间变量和/或有序分类变量的组合。

3. 堆叠图

展示两个变量,除了使用散点图,也可以使用堆叠图
堆叠图是将一个变量绘制在另一个变量顶部的图表
接下来通过堆叠图来展示最常见的五种葡萄酒

  • 将葡萄酒种类分组,找到最常见的五种葡萄酒
reviews.groupby(['variety'])['country'].count().sort_values(ascending = False)

在这里插入图片描述

从结果中看出,最受欢迎的葡萄酒是,Chardonnay(霞多丽白葡萄酒),Pinot Noir(黑皮诺),Cabernet Sauvignon(赤霞珠),Red Blend(混酿红葡萄酒) ,Bordeaux-style Red Blend (波尔多风格混合红酒)

  • 从数据中取出最常见的五种葡萄酒
top_5_wine = reviews[reviews.variety.isin([‘Chardonnay’,‘Pinot Noir’,‘Cabernet Sauvignon’,‘Red Blend’,‘Bordeaux-style Red Blend'])]
top_5_index = reviews.groupby(['variety'])['country'].count().sort_values(ascending = False).head().index.to_list()
top_5_index

在这里插入图片描述

top_5_wine = reviews[reviews['variety'].isin(top_5_index)]
top_5_wine

在这里插入图片描述

  • 通过透视表找到每种葡萄酒中,不同评分的数量
#透视表计数
wine_counts = top_5_wine.pivot_table(index = ['points'],columns =['variety'],values='country',aggfunc='count')
wine_counts
#修改列名
wine_counts.columns = ['Bordeaux-style Red Blend','Cabernet Sauvignon','Chardonnay','Pinot Noir','Red Blend']
wine_counts

在这里插入图片描述
从上面的数据中看出,行列分别表示一个类别变量(评分,葡萄酒类别),行列交叉点表示计数,这类数据很适合用堆叠图展示

wine_counts.plot.bar()

在这里插入图片描述

wine_counts.plot.bar(stacked=True)

在这里插入图片描述

上图为堆积柱状图,适合展示少量类别的分类数据
面积堆积图:

wine_counts.plot.area()

在这里插入图片描述

面积堆积图的使用限制:
① 种类较多的数据不适合用堆积图,图中显示的数据有五个种类,比较合适,一般不要超过8个种类
② 堆积图的可解释性(读图)较差

4. 折线图

折线图在双变量可视化时,仍然非常有效

wine_counts.plot.line()

在这里插入图片描述
从上图看出,折线图的读图更容易,更容易对不同类别做对比
例如,在87分的酒中,哪个类别更多?从图中很容易看出,绿色的霞多丽比红色的黑比诺略多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/952098.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【NLP 18、新词发现和TF·IDF】

目录 一、新词发现 1.新词发现的衡量标准 ① 内部稳固 ② 外部多变 2.示例 ① 初始化类 NewWordDetect ② 加载语料信息&#xff0c;并进行统计 ③ 统计指定长度的词频及其左右邻居字符词频 ④ 计算熵 ⑤ 计算左右熵 ​编辑 ⑥ 统计词长总数 ⑦ 计算互信息 ⑧ 计算每个词…

【Elasticsearch】配置分片分配到指定节点

配置分片分配到指定节点 参考文章&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-allocation-filtering.html 两种方式&#xff1a;根据节点属性分配和根据节点名称分配。 测试环境 tar xvf elasticsearch-7.17.25-linux-x86_64.tar.gz…

1. Doris分布式环境搭建

一. 环境准备 本次测试集群采用3台机器hadoop1、hadoop2、hadoop3, Frontend和Backend部署在同一台机器上&#xff0c;Frontend部署3台组成高可用&#xff0c;Backend部署3个节点&#xff0c;组成3副本存储。 主机IP操作系统FrontendBackendhadoop1192.168.47.128Centos7Foll…

计算机毕业设计Python机器学习农作物健康识别系统 人工智能 图像识别 机器学习 大数据毕业设计 算法

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

gesp(C++四级)(11)洛谷:B4005:[GESP202406 四级] 黑白方块

gesp(C四级)&#xff08;11&#xff09;洛谷&#xff1a;B4005&#xff1a;[GESP202406 四级] 黑白方块 题目描述 小杨有一个 n n n 行 m m m 列的网格图&#xff0c;其中每个格子要么是白色&#xff0c;要么是黑色。对于网格图中的一个子矩形&#xff0c;小杨认为它是平衡的…

在Mac上使用 Docker 构建一个 noVNC 环境并运行 MyCobot

本文展示了Mycobot 280 M5 上的 Mycobot 280 M5 moveit2 模拟环境&#xff0c;以及详细介绍了使用 Docker 在 macOS&#xff08;arm64&#xff09;上构建 moveit2 环境的步骤。 一、引言 这篇文章主要内容是关于如何在 Ros2 环境中构建在 Mac 上模拟 Mycobot 280 M5 的环境。 …

c语言提供后端,提供页面显示跳转服务

后端代码: #define SERVER_IP_ADDR "0.0.0.0" // 服务器IP地址 #define SERVER_PORT 8080 // 服务器端口号 #define BACKLOG 10 #define BUF_SIZE 8192 #define OK 1 #define ERROR 0#include <stdio.h> #include <stdlib.h> #include <st…

AnaConda下载PyTorch慢的解决办法

使用Conda下载比较慢&#xff0c;改为pip下载 复制下载链接到迅雷下载 激活虚拟环境&#xff0c;安装whl&#xff0c;即可安装成功 pip install D:\openai.wiki\ChatGLM2-6B\torch-2.4.1cu121-cp38-cp38-win_amd64.whl

Sentinel服务保护 + Seata分布式事务

服务保护 【雪崩问题】微服务调用链路中某个服务&#xff0c;引起整个链路中所有微服务都不可用。 【原因】&#xff1a; 微服务相互调用&#xff0c;服务提供者出现故障。服务调用这没有做好异常处理&#xff0c;导致自身故障。调用链中所有服务级联失败&#xff0c;导致整个…

六、Angular 发送请求/ HttpClient 模块

一、应用 HttpClient 模块 angular/common/http 中的 HttpClient 类基于浏览器提供的 XMLHttpRequest 接口。要想使用 HtpClient 模块&#xff0c;就要先导入 Anqular 的 HttpClientModule。大多数 Web 应用程序都会在根模块 AppModule 中导入它。 编辑 src/app/app.module.ts…

CompletableFuture // todo

相比较所有代码都在主线程执行&#xff0c;使用Future的好处&#xff1a;利用服务器多核、并发的优势。 不足&#xff1a; 开启没有返回值的异步线程&#xff1a; 1、runAsync 使用lambda表达式&#xff1a; 开启有返回值的异步线程&#xff1a; 1、supplyAsync 异步任务中的…

css面试常考布局(圣杯布局、双飞翼布局、三栏布局、两栏布局、三角形)

两栏布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> &…

arcgisPro加载天地图(CGCS2000)影像

1、注册天地图账号&#xff1b; 2、申请key&#xff1b; 3、添加WMTS服务器。 这里已经办好了前两步&#xff0c;下面详细介绍最后一步。 添加WMTS服务器。 在天地图网站&#xff0c;找到如下页面&#xff0c; 复制网址&#xff0c;如&#xff1a;http://t0.tianditu.gov.cn…

继承(7)

大家好&#xff0c;今天我们继续来学习一下继承的知识&#xff0c;这方面需要大家勤动脑才能理解&#xff0c;那么我们来看。 1.9 protected关键字 在类和对象章节中&#xff0c;为了实现封装特性,java中引入访向限定符,主要限定:类或者类中成员能否在类外和其他包中被访问. …

ModuleNotFoundError: No module named ‘podm.metrics‘报错等解决方法

ModuleNotFoundError: No module named podm.metrics’报错等解决方法 podm.metrics 在运行时报错&#xff1a; ModuleNotFoundError: No module named ‘podm.metrics’ 安装了podm后还是报错 解决方法&#xff1a; 查看安装位置 查看podm的安装位置&#xff0c;并打开到该…

HDFS异构存储和存储策略

一、HDFS异构存储类型 1.1 冷、热、温、冻数据 通常&#xff0c;公司或者组织总是有相当多的历史数据占用昂贵的存储空间。典型的数据使用模式是新传入的数据被应用程序大量使用&#xff0c;从而该数据被标记为"热"数据。随着时间的推移&#xff0c;存储的数据每周…

sklearn-逻辑回归-制作评分卡

目录 数据集处理 分箱 分多少个箱子合适 分箱要达成什么样的效果 对一个特征进行分箱的步骤 分箱的实现 封装计算 WOE 值和 IV值函数 画IV曲线&#xff0c;判断最佳分箱数量 结论 pd.qcut 执行报错 功能函数封装 判断分箱个数 在银行借贷场景中&#xff0c;评分卡是…

中学综合素质笔记3

第一章职业理念 第三节 教师观 考情提示&#xff1a; 单选题材料分析题 学习要求&#xff1a; 理解、 识记、 运用 &#xff08;一&#xff09;教师职业角色的转变&#xff08;单选材料分析&#xff09; 从教师与学生的关系看——对学生 新课程要求教师应该是学生学习的引…

【Linux】设备驱动中的ioctl详解

在Linux设备驱动开发中&#xff0c;ioctl&#xff08;输入输出控制&#xff09;是一个非常重要的接口&#xff0c;用于用户空间应用程序与内核空间设备驱动之间进行通信。通过ioctl&#xff0c;应用程序可以发送命令给设备驱动&#xff0c;控制设备的行为或获取设备的状态信息。…

linux上使用cmake编译的方法

一、hello 例程仅基于一个cpp文件 C文件或工程进行编译时可以使用g指令&#xff08;需要对每一个程序和源文件分别使用g指令编译&#xff09;&#xff0c;当程序变大时&#xff0c;一个工程文件往往会包含很文件夹和源文件&#xff0c;这时我们需要的编译指令将越来越长&#…