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的数据绘图。
170 0
|
11天前
|
数据可视化 数据挖掘 Python
Pandas数据探索性可视化的最佳实践
【10月更文挑战第13天】数据可视化是数据分析中不可或缺的一环,它帮助我们更好地理解数据、发现趋势和模式,并有效地传达我们的发现。在Python领域,Pandas和Matplotlib是两个非常强大的库,它们提供了丰富的功能来进行数据分析和可视化。本文将介绍如何结合使用Pandas和Matplotlib进行数据探索性可视化的最佳实践。
44 9
|
6月前
|
数据采集 数据挖掘 数据处理
Pandas库在数据分析中的作用
【4月更文挑战第9天】Pandas,一个基于NumPy的数据分析Python库,以强大的数据处理和便捷的接口闻名。它包含两个核心数据结构:Series(一维标签数组)和DataFrame(二维表格)。Pandas支持数据导入/导出(如CSV、Excel),数据清洗(处理缺失值和重复值),描述性统计分析,分组聚合,以及与Matplotlib等库集成实现数据可视化。通过多索引和层次化索引,Pandas能灵活处理复杂数据集,是数据科学领域的关键工具。本文旨在帮助读者理解并运用Pandas进行高效数据分析。
87 2
|
6月前
|
数据处理 Python
Pandas在数据分析中的应用案例
使用Pandas分析销售数据,通过`read_csv`读取CSV,`groupby`按产品类别分组并应用`agg`计算类别总销售额、平均价和销售量。之后,利用`sort_values`按销售额降序排列,`head`获取前5高销售额类别。示例代码展示了Pandas在数据处理和分析中的高效性。
97 0
|
6月前
|
数据可视化 数据挖掘 Linux
第四章 Pandas 统计分析基础
第四章 Pandas 统计分析基础
227 0
|
6月前
|
数据可视化 数据挖掘 Linux
【数据分析与可视化】Pandas可视化与数据透视表的讲解及实战(超详细 附源码)
【数据分析与可视化】Pandas可视化与数据透视表的讲解及实战(超详细 附源码)
153 0
|
数据采集 数据可视化 数据处理
Python数据可视化:呈现世界大运会历史数据
Python数据可视化:呈现世界大运会历史数据
|
数据可视化 Linux 索引
第四章 Pandas 统计分析基础(下)
第四章 Pandas 统计分析基础(下)
832 0
第四章 Pandas 统计分析基础(下)
|
数据挖掘 索引 Python
第四章 Pandas 统计分析基础(上)
第四章 Pandas 统计分析基础
160 0
第四章 Pandas 统计分析基础(上)
|
数据采集 数据可视化 数据挖掘
数据分析:基于Pandas的全球自然灾害分析与可视化
数据分析:基于Pandas的全球自然灾害分析与可视化
663 0
数据分析:基于Pandas的全球自然灾害分析与可视化