Pandas数据分析:快速图表可视化各类操作详解+实例代码(三)

简介: Pandas数据分析:快速图表可视化各类操作详解+实例代码(三)

前言


一般我们做数据挖掘或者是数据分析,再或者是大数据开发提取数据库里面的数据时候,难免只能拿着表格数据左看右看,内心总是希望能够根据自己所想立马生成一张数据可视化的图表来更直观的呈现数据。而当我们想要进行数据可视化的时候,往往需要调用很多的库与函数,还需要数据转换以及大量的代码处理编写。这都是十分繁琐的工作,确实只为了数据可视化我们不需要实现数据可视化的工程编程,这都是数据分析师以及拥有专业的报表工具来做的事情,日常分析的话我们根据自己的需求直接进行快速出图即可,而Pandas正好就带有这个功能,当然还是依赖matplotlib库的,只不过将代码压缩更容易实现。下面就让我们来了解一下如何快速出图。

b40820f8c20448d996c7e8a392c60e34.png


Pandas数据分析:快速图表可视化各类操作详解+实例代码(一)


Pandas数据分析:快速图表可视化各类操作详解+实例代码(二)


Pandas数据分析系列专栏已经更新了很久了,基本覆盖到使用pandas处理日常业务以及常规的数据分析方方面面的问题。从基础的数据结构逐步入门到处理各类数据以及专业的pandas常用函数讲解都花费了大量时间和心思创作,如果大家有需要从事数据分析或者大数据开发的朋友推荐订阅专栏,将在第一时间学习到Pandas数据分析最实用常用的知识。此篇博客篇幅较长,涉及到数据可视化等各类操作,值得细读实践一番,我会将Pandas的精华部分挑出细讲实践。博主会长期维护博文,有错误或者疑惑可以在评论区指出,感谢大家的支持。


一、六边形箱图


可以通过DataFrame.plot.hexbin()来创建一个六边形箱图。如果数据过于密集,无法单独绘制每个点,则Hexbin图可以作为散点图的有用替代方案。

这里我们不用上一个数据集,换用一个数据集,就用这次2022国赛E题的数据来展示:


20123a041b6f4d4faca0e3817ffc32cc.png

df_example[['出现频次','需求总数']].plot.hexbin(x='出现频次',y='需求总数',gridsize=25)

162d6f5d13604c9496e7d4d47a4d127f.png


效果不是很好,因为上限和下限都差的很多,用集中的数据集更好展现效果。


df = pd.DataFrame(np.random.randn(1000, 2), columns=["a", "b"])
df["b"] = df["b"] + np.arange(1000)
df.plot.hexbin(x="a", y="b", gridsize=25);

8941be34ab1848c387d19bb4350f73fc.png

关键字参数gridsize:它控制x方向六边形的数量,默认值为100。网格越大,箱子越小。


df.plot.hexbin(x="a", y="b", gridsize=10);



b789baa408ba4b1b8a479c7c37a33790.png

默认情况下,计算每个(x,y)点周围计数的直方图。您可以通过向C和reduce_C_function参数传递值来指定替代聚合。C指定每个(x,y)点的值,reduce_C_function是一个参数的函数,它将bin中的所有值聚合为一个数字(例如mean、max、sum、std)。在本例中,位置由a列和b列给出,而值由z列给出。这些箱子通过NumPy的max函数进行聚合。


df = pd.DataFrame(np.random.randn(1000, 2), columns=["a", "b"])
df["b"] = df["b"] + np.arange(1000)
df["z"] = np.random.uniform(0, 3, 1000)
df.plot.hexbin(x="a", y="b", C="z", reduce_C_function=np.max, gridsize=25);

5782e14f98e245c5bea44191d5ea883c.png

二、饼图


使用DataFrame.plot.pie()或者是Series.plot.pie()可以创建饼图。如果数据包含任何NaN,则它们将自动填充为0。如果数据中有任何负值,则会引发ValueError。


series = pd.Series(3 * np.random.rand(4), index=["a", "b", "c", "d"], name="series")
series.plot.pie(figsize=(6, 6));



272c17126d7945fca331669c298c6838.png


对于饼图,最好使用正方形图形,即图形纵横比1。可以创建宽度和高度相等的图形,或者在绘图后通过调用ax强制使纵横比相等。返回的axes对象上的ax.set_aspect('equal')。


带有DataFrame的饼图需要通过y参数或subplots=True指定目标列。当指定y时,将绘制所选列的饼图。如果指定subplots=True,则每个列的饼图都将绘制为subplots。默认情况下,将在每个饼图中绘制图例;指定legend=False将其隐藏。


cc896046e1284b38a3c713c44b04497d.png


q1_1_result['最终得分'].plot.pie(labels=q1_1_result['物料编码'].values,figsize=(6, 6),autopct="%.2f")




dbfbb182e9fb4cb0b3e68972ca87c169.png

df_flow_mark[['湿度','体感温度']].plot.pie(subplots=True, figsize=(8, 4));

42cf63a85f534f76a354e59301d5c514.png


可以使用标签和颜色关键字指定每个按钮的标签和颜色。


大多数Pandas图都使用标签和颜色参数(注意这些参数上没有“s”)。与matplotlib.pyplot一致。pie()必须使用标签和颜色。


如果要隐藏楔体标签,指定labels=None。如果指定了fontsize,则该值将应用于楔形标签。此外,matplotlib.pyplot支持的其他关键字,可以使用pie()。

series.plot.pie(
    labels=["AA", "BB", "CC", "DD"],
    colors=["r", "g", "b", "c"],
    autopct="%.2f",
    fontsize=20,
    figsize=(6, 6),
);

5957dd97b6c546aba59058082a608a27.png


如果传递的值的总和小于1.0,则会重新缩放这些值,使其总和为1。


1. series = pd.Series([0.1] * 4, index=["a", "b", "c", "d"], name="series2")
2. series.plot.pie(figsize=(6, 6));


99e16f7f6688436ba2b13dbe5f489d62.png



三、缺失数据绘制处理


Pandas在绘制包含缺失数据的DataFrame或Series时尽可能完全填充。根据打印类型,删除、省略或填充缺少的值。


ad90bcbb9a024601a5283aaa7f1822fd.png

如果这些默认值中有任何一个不是您想要的,或者如果您想明确说明如何处理缺少的值,请考虑在绘制之前使用fillna()或dropna()。


那么到目前为止所有常用的绘图形式都讲完了。接下来会对plot的多样性组合表和特殊形式表进行补充,以及一些其他类数据的绘图进行总结:



12c44ea6bfa54c298610dc69edba22a7.png


72ac773ac0a24a118f943dbb7eedc7be.png


265b4b03dfca4207ba91ae5c89145678.png


26c7b895a4804a5d83966bb8c245cd68.png


目录
相关文章
|
6月前
|
自然语言处理 数据挖掘 数据处理
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
本文将介绍 10 个在数据处理中至关重要的 Pandas 技术模式。这些模式能够显著减少调试时间,提升代码的可维护性,并构建更加清晰的数据处理流水线。
229 3
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
|
10月前
|
SQL 人工智能 算法
TDengine 发布时序数据分析 AI 智能体 TDgpt,核心代码开源
2025 年 3 月 26 日,涛思数据通过线上直播形式正式发布了其新一代时序数据分析 AI 智能体——TDgpt,并同步开源其核心代码(GitHub 地址:https://github.com/taosdata/TDengine)。这一创新功能作为 TDengine 3.3.6.0 的重要组成部分,标志着时序数据库在原生集成 AI 能力方面迈出了关键一步。
633 0
|
5月前
|
机器学习/深度学习 算法 数据挖掘
【数据分析】基于matlab私家车充电模型(含私家车日行驶距离概率密度及累加函数,电动汽车出发时间(或者称开始充电的时间)概率)(Matlab代码实现)
【数据分析】基于matlab私家车充电模型(含私家车日行驶距离概率密度及累加函数,电动汽车出发时间(或者称开始充电的时间)概率)(Matlab代码实现)
131 0
|
10月前
|
人工智能 数据可视化 前端开发
Probly:开源 AI Excel表格工具,交互式生成数据分析结果与可视化图表
Probly 是一款结合电子表格功能与 Python 数据分析能力的 AI 工具,支持在浏览器中运行 Python 代码,提供交互式电子表格、数据可视化和智能分析建议,适合需要强大数据分析功能又希望操作简便的用户。
1316 2
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
311 2
|
数据采集 数据可视化 数据挖掘
Python数据分析:Pandas库实战指南
Python数据分析:Pandas库实战指南
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
3月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
317 0
|
3月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
485 0