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

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

前言


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

13dcf31e0926412bbfdae6a43445c3b3.png


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


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


一、箱线图


数据依旧是上篇文章的数据:


25733f4635664bb8a7c163301047e27f.png


调用


  • Series.plot.box()
  • DataFrame.plot.box()
  • DataFrame.boxplot()

可以绘制箱线图可视化每个列中的值分布。


df_flow_mark[['风级','降水量']].plot.box()


72ab9ffa3c354a18ae2d181861896a2c.png

可以通过传递color关键字对Boxplot进行着色。你可以传递一个字典dict,key关键字为boxes、whiskers,medians,caps。如果dict中缺少一些键,则会为相应的使用默认颜色。此外,箱线图还有sym关键字来指定传单样式。


color = {
    "boxes": "DarkGreen",
    "whiskers": "DarkOrange",
    "medians": "DarkBlue",
    "caps": "Gray",
}
df_flow_mark[['风级','降水量']].plot.box(color=color, sym="r+")


dbbb859e66844e3b8e6019a70df6c2d0.png

创建一个数据集展示更加明显:

df = pd.DataFrame(np.random.rand(10, 5), columns=["A", "B", "C", "D", "E"])
color = {
    "boxes": "DarkGreen",
    "whiskers": "DarkOrange",
    "medians": "DarkBlue",
    "caps": "Gray",
}
df.plot.box(color=color, sym="r+")

fa030e81262a4dd49b56a091f687d597.png

此外,还可以传递matplotlib箱线图支持的其他关键字。例如,可以通过vert=False和positions关键字绘制水平和自定义定位箱线图。


df.plot.box(vert=False, positions=[1, 4, 5, 6, 8])

ac339f147d8949ab9956caf336a42680.png

现有接口仍然可以使用DataFrame.boxplot:


df.boxplot()


8707bb0ff8f94764a607dfdd8b4008f5.png

可以使用by关键字参数创建分层箱线图来创建分组。例如,


df = pd.DataFrame(np.random.rand(10, 2), columns=["Col1", "Col2"])
df["X"] = pd.Series(["A", "A", "A", "A", "A", "B", "B", "B", "B", "B"])
plt.figure();
bp = df.boxplot(by="X")


a83ab74716174e4eba67f85825735804.png

f9ca85cb269640c5b50c63ed0c4019f3.png

还可以传递要打印的列子集,以及按多个列分组:

df = pd.DataFrame(np.random.rand(10, 3), columns=["Col1", "Col2", "Col3"])
df["X"] = pd.Series(["A", "A", "A", "A", "A", "B", "B", "B", "B", "B"])
df["Y"] = pd.Series(["A", "B", "A", "B", "A", "B", "A", "B", "A", "B"])
plt.figure();
bp = df.boxplot(column=["Col1", "Col2"], by=["X", "Y"])


c62a2bacd71c486b839b3aa58d0086dc.png


用DataFrame.plot.box()也是一样的:


df = pd.DataFrame(np.random.rand(10, 3), columns=["Col1", "Col2", "Col3"])
df["X"] = pd.Series(["A", "A", "A", "A", "A", "B", "B", "B", "B", "B"])
plt.figure()
bp = df.plot.box(columns=["Col1", "Col2"], by="X")


在箱线图中,返回类型可以由return_type,关键字控制。有效选项是{“axes”、“dict”、“both”、“None}。镶嵌面,由DataFrame.boxplot创建by关键字的箱线图也会影响输出类型:

77f7bb8858aa4b1ca02b6cb3cbe6c7cb.png

np.random.seed(1234)
df_box = pd.DataFrame(np.random.randn(50, 2))
df_box["g"] = np.random.choice(["A", "B"], size=50)
df_box.loc[df_box["g"] == "B", 1] += 3
bp = df_box.boxplot(by="g")


8edd262b7a6b4615aa0b2f10f6a073e5.png


上面的子地块首先由数字列分割,然后由g列的值分割。下面的子地块首先由g值分割,然后由数字列分割。


bp = df_box.groupby("g").boxplot()


11a2b6ceef2d4927967b70bd0ae39b65.png

二、面积填充图



可以使用Series.plot.area()和DataFrame.plot.area()创建面积图。默认情况下,面积图是堆叠的。要生成堆叠面积图,每列必须全部为正值或全部为负值。


当输入数据包含NaN时,它将自动由0填充。如果要使用不同的值进行删除或填充,调用plot之前可以使用DataFrame.dropna()或DataFrame.fillna()。


代码如下(示例):

df = pd.DataFrame(np.random.rand(10, 4), columns=["a", "b", "c", "d"])
df.plot.area();

32b1ec0976c04c2eb9a63464c8b2b6c5.png

要生成未堆叠的绘图,请传递stacked=False。Alpha值设置为0.5。


df.plot.area(stacked=False);

a6272a5901ef4c38ad22b6f7b09b0822.png


三、散点图


可以使用DataFrame.plot.scatter()方法绘制散点图,散点图需要x轴和y轴的数字列。这些可以由x和y关键字指定。


df_flow_mark.plot.scatter(x='日期',y='客流量')

dff5fedec7fa4cb0b297a627c7c731bb.png要在单个轴上绘制多个列组,可以重复指定目标轴的打印方法。建议指定颜色(color)和标签(label)关键字以区分每个组。

df = pd.DataFrame(np.random.rand(50, 4), columns=["a", "b", "c", "d"])
df["species"] = pd.Categorical(
    ["setosa"] * 20 + ["versicolor"] * 20 + ["virginica"] * 10
)
ax = df.plot.scatter(x="a", y="b", color="DarkBlue", label="Group 1")
df.plot.scatter(x="c", y="d", color="DarkGreen", label="Group 2", ax=ax);


24591cdb566848e7bdbedfdc4f48a796.png


关键字c可以作为列的名称,为每个点提供颜色:


df.plot.scatter(x="a", y="b", c="c", s=50);


cc3f05fa268a4aefba127cbad1fe2130.png如果将分类列传递给c,则将生成一个离散的颜色条:


df.plot.scatter(x="a", y="b", c="species", cmap="viridis", s=50);


5cf8e3c0bd844aa4b0c83571fbcc4e44.png


可以传递matplotlib.scatter支持的其他关键字。下面的示例显示了一个气泡图,它使用DataFrame的一列作为气泡大小。


df_flow_mark.plot.scatter(x='日期',y='客流量',s=df_flow_mark['湿度']*200)

37909b6aea234ff3b2bd0b31ef0953b0.png

目录
相关文章
|
数据可视化 数据挖掘 索引
pandas数据分析之数据绘图
一图胜千言,将信息可视化(绘图)是数据分析中最重要的工作之一。它除了让人们对数据更加直观以外,还可以帮助我们找出异常值、必要的数据转换、得出有关模型的想法等等。pandas 在数据分析、数据可视化方面有着较为广泛的应用。本文将通过实例介绍pandas的数据绘图。
163 0
|
12月前
|
数据可视化 大数据 Python
Python基础综合案例-数据可视化(柱状图)
今天给大家带来的是Python综合实战开发的数据可视化操作 通过python实现对数据的分析、可视化
97 0
|
12月前
|
JSON 数据可视化 数据处理
Python基础综合案例-数据可视化(折线图)
今天给大家带来的是Python综合实战开发的数据可视化操作 通过python实现对数据的分析、可视化
92 0
|
3月前
|
数据可视化 数据挖掘 数据处理
深度挖掘!Python 数据分析中 Matplotlib 与 Seaborn 的隐藏功能,让数据可视化更出彩!
【7月更文挑战第23天】在Python数据分析中,Matplotlib与Seaborn是关键的可视化工具。Matplotlib提供深度自定义,如调整轴刻度和网格,支持多子图布局。Seaborn基于Matplotlib,简化美观图表生成,内置主题与调色板,适用于复杂统计图形如小提琴图和成对关系图,且无缝集成Pandas数据框。掌握这些库的高级功能,能显著提升数据可视化效果,助力数据分析决策。
35 4
|
5月前
|
数据采集 数据挖掘 数据处理
Pandas库在数据分析中的作用
【4月更文挑战第9天】Pandas,一个基于NumPy的数据分析Python库,以强大的数据处理和便捷的接口闻名。它包含两个核心数据结构:Series(一维标签数组)和DataFrame(二维表格)。Pandas支持数据导入/导出(如CSV、Excel),数据清洗(处理缺失值和重复值),描述性统计分析,分组聚合,以及与Matplotlib等库集成实现数据可视化。通过多索引和层次化索引,Pandas能灵活处理复杂数据集,是数据科学领域的关键工具。本文旨在帮助读者理解并运用Pandas进行高效数据分析。
75 2
|
5月前
|
数据采集 数据可视化 数据挖掘
Seaborn在数据分析中的应用:案例分析与实践
【4月更文挑战第17天】本文介绍了Seaborn在数据分析中的应用,它是一个基于Python的可视化库,简化了复杂数据的图表创建。通过一个销售数据分析的案例,展示了数据加载、描述性统计、相关性分析、多变量分析及高级可视化步骤。实践技巧包括数据清洗、图表选择、颜色使用、注释标签和交互性。Seaborn助力高效数据探索和理解,提升分析效率。注意,实际使用需根据数据集和目标调整,并参考最新文档。
|
5月前
|
数据可视化 数据挖掘 Linux
【数据分析与可视化】Pandas可视化与数据透视表的讲解及实战(超详细 附源码)
【数据分析与可视化】Pandas可视化与数据透视表的讲解及实战(超详细 附源码)
133 0
|
数据采集 数据可视化 数据处理
Python数据可视化:呈现世界大运会历史数据
Python数据可视化:呈现世界大运会历史数据
|
数据采集 数据可视化 数据挖掘
数据分析:基于Pandas的全球自然灾害分析与可视化
数据分析:基于Pandas的全球自然灾害分析与可视化
613 0
数据分析:基于Pandas的全球自然灾害分析与可视化
|
数据可视化 数据挖掘 开发者
通过图表展示数据分析结果 | 学习笔记
快速学习 通过图表展示数据分析结果
172 0
通过图表展示数据分析结果 | 学习笔记
下一篇
无影云桌面