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

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

前言


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


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


一、基础绘图:plot


Series和DataFrame上的plot方法只是plt.plot()的简单包装,这里我们用一段实际数据来进行可视化展示:


6cbacc2b627a474b84c910f74f1fdae8.png

这是一段真实地铁通行量特征数据,我们用此数据进行展示:


df_flow['客流量'].plot()



29cd6482006342c2ae84c36cc52cb9dc.png

如果索引由日期组成,则调用gcf().autofmt_xdate()方法可以很好地格式化x轴。


d45c019b479743e89a256106b983153f.png


在DataFrame上,plot()可以方便地用标签绘制所有列:


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


1ed673c9e4224e7694225ddd4584e490.png

可以使用plot()中的x和y关键字绘制一列与另一列的对比,比如我们想要使用星期六的客流量和星期日的客流量作对比:


df_flow_7=df_flow[df_flow['日期']=='星期日'].iloc[:7,:]
df_flow_7.rename(columns={'客流量':'星期日客流量'},inplace=True)
df_flow_6=df_flow[df_flow['日期']=='星期六'].iloc[:7,:]
df_flow_6.rename(columns={'客流量':'星期六客流量'},inplace=True)
df_compare=pd.concat([columns_convert_df(df_flow_7['星期日客流量']),columns_convert_df(df_flow_6['星期六客流量'])],axis=1)
df_compare.plot(x='星期日客流量',y='星期六客流量')

13366c7212b047a388f4fe149254a439.png


二、底图板块


根据Pandas包装后的kind关键字我们梳理一下底图种类

618d2c184ff34f83acf6f3a490bc7559.png


也可以使用DataFrame.plot方法创建这些其他绘图<kind>而不是提供kind关键字参数。这使得更容易发现绘图方法及其使用的特定参数:

df.plot.area     df.plot.barh     df.plot.density  df.plot.hist     df.plot.line     df.plot.scatter
df.plot.bar      df.plot.box      df.plot.hexbin   df.plot.kde      df.plot.pie


除了这些类型,还有DataFrame.hist()和DataFrame.boxplot()方法,它们使用单独的接口。


最后,pandas中有几个绘图功能。以Series或DataFrame作为参数的绘图。其中包括:


Scatter Matrix


Andrews Curves


Parallel Coordinates


Lag Plot


Autocorrelation Plot


Bootstrap Plot


RadViz


分别是:


散射矩阵

安德鲁斯曲线

平行坐标

滞后图

自相关图

引导图

拉德维兹图

绘图也可以用错误条或表格进行装饰。


1.条形图


df_flow_mark['客流量'].plot(kind='bar')
df_flow_mark['客流量'].plot.bar()


ac012349d9834505a5426ba182c3c76c.png


多个标签图表也可以一齐绘出:


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

78997bd8e6724a82ab9340f4700f77d2.png

要生成堆叠条形图,传递stacked=True:


df_flow_mark[['风级','降水量']].plot.bar(stacked=True)


e7e89939083249c289e2f19af601e4d6.png


长久看这个maatplotlib的默认地图有点疲劳了,我这里换个主题,还是一样的效果不碍事。


要获得水平条形图可以使用barh方法:


df_flow_mark[['风级','降水量']].plot.barh(stacked=True)


93c97970e56942ffa665518b95e4f98b.png


2.直方图


可以使用DataFrame.plo.hist()和Series.plot.hist()方法绘制直方图.

df4 = pd.DataFrame(
    {
        "a": np.random.randn(1000) + 1,
        "b": np.random.randn(1000),
        "c": np.random.randn(1000) - 1,
    },
    columns=["a", "b", "c"],
)
plt.figure();
df4.plot.hist(alpha=0.5)

f3852a3f2795400c84f1b98354e79fae.png


直方图可以使用stacked=True进行叠加。可以使用bins关键字更改bin大小。


df4.plot.hist(stacked=True, bins=20);


ea8b7c9a03074d65b75d99e332268909.png可以传递matplotlib hist支持的其他关键字。例如,水平和累积直方图可以通过orientation='horizontal'和cumulative=True绘制。

c4ed1fe2625e4e43ae8b21eec3ef498d.png


有关详细信息,可以参阅hist方法和matplotlib hist文档。

现有接口DataFrame.hist,但仍然可以使用hist绘制直方图


1. plt.figure();
2. df_flow_mark['风级'].hist()


0dfc9813ca744a3da883b3b0112ef5af.png

DataFrame.hist()可以在多个子地块上绘制列的直方图:


1. plt.figure();
2. df_flow_mark[['风级','降水量']].diff().hist(color="k", alpha=0.5, bins=50);


3e6221bb17cf491e9ac27ec50dc54804.png


可以指定by关键字来绘制分组直方图:


1. data = pd.Series(np.random.randn(1000))
2. 
3. data.hist(by=np.random.randint(0, 4, 1000), figsize=(6, 4));


9c90b59e06894c068869b35b93f97c29.png


此外,还可以在DataFrame.plot.hist()中指定by关键字:

data = pd.DataFrame(
    {
        "a": np.random.choice(["x", "y", "z"], 1000),
        "b": np.random.choice(["e", "f", "g"], 1000),
        "c": np.random.randn(1000),
        "d": np.random.randn(1000) - 1
    }
)
data.plot.hist(by=["a", "b"], figsize=(10, 5));

9b2119a7d4b24cadaa4688351106b8ea.png

目录
相关文章
|
7月前
|
数据可视化 数据挖掘 大数据
【数据分析与可视化】Matplotlib绘图基础语法讲解(图文解释 超详细)
【数据分析与可视化】Matplotlib绘图基础语法讲解(图文解释 超详细)
207 0
|
数据可视化 数据挖掘 索引
pandas数据分析之数据绘图
一图胜千言,将信息可视化(绘图)是数据分析中最重要的工作之一。它除了让人们对数据更加直观以外,还可以帮助我们找出异常值、必要的数据转换、得出有关模型的想法等等。pandas 在数据分析、数据可视化方面有着较为广泛的应用。本文将通过实例介绍pandas的数据绘图。
229 0
|
2月前
|
数据可视化 数据挖掘 Python
Pandas数据探索性可视化的最佳实践
【10月更文挑战第13天】数据可视化是数据分析中不可或缺的一环,它帮助我们更好地理解数据、发现趋势和模式,并有效地传达我们的发现。在Python领域,Pandas和Matplotlib是两个非常强大的库,它们提供了丰富的功能来进行数据分析和可视化。本文将介绍如何结合使用Pandas和Matplotlib进行数据探索性可视化的最佳实践。
64 9
|
2月前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据处理与可视化——以气温数据分析为例
【10月更文挑战第12天】使用Python进行数据处理与可视化——以气温数据分析为例
288 0
|
5月前
|
数据可视化 数据挖掘 数据处理
深度挖掘!Python 数据分析中 Matplotlib 与 Seaborn 的隐藏功能,让数据可视化更出彩!
【7月更文挑战第23天】在Python数据分析中,Matplotlib与Seaborn是关键的可视化工具。Matplotlib提供深度自定义,如调整轴刻度和网格,支持多子图布局。Seaborn基于Matplotlib,简化美观图表生成,内置主题与调色板,适用于复杂统计图形如小提琴图和成对关系图,且无缝集成Pandas数据框。掌握这些库的高级功能,能显著提升数据可视化效果,助力数据分析决策。
51 4
|
7月前
|
数据采集 数据挖掘 数据处理
Pandas库在数据分析中的作用
【4月更文挑战第9天】Pandas,一个基于NumPy的数据分析Python库,以强大的数据处理和便捷的接口闻名。它包含两个核心数据结构:Series(一维标签数组)和DataFrame(二维表格)。Pandas支持数据导入/导出(如CSV、Excel),数据清洗(处理缺失值和重复值),描述性统计分析,分组聚合,以及与Matplotlib等库集成实现数据可视化。通过多索引和层次化索引,Pandas能灵活处理复杂数据集,是数据科学领域的关键工具。本文旨在帮助读者理解并运用Pandas进行高效数据分析。
103 2
|
7月前
|
数据采集 数据可视化 数据挖掘
Seaborn实战:从数据清洗到可视化全流程解析
【4月更文挑战第17天】在数据分析中,Seaborn是用于数据可视化的重要工具,同时也辅助数据清洗。本文通过实例展示了如何利用Seaborn从数据清洗(包括导入数据、处理缺失和异常值)到数据探索(描述性统计、分组统计和可视化探索)。接着,文章详细讲解了数据可视化,包括分类和数值数据的图表以及高级图表如小提琴图、箱形图和热力图。最后,介绍了Seaborn与其他工具(如Pandas和Matplotlib)的结合使用,强调了数据可视化的迭代优化过程。学习并掌握Seaborn能提升数据分析和展示的效率。
|
7月前
|
数据可视化 数据挖掘 Linux
第四章 Pandas 统计分析基础
第四章 Pandas 统计分析基础
262 0
|
7月前
|
数据可视化 数据挖掘 Linux
【数据分析与可视化】Pandas可视化与数据透视表的讲解及实战(超详细 附源码)
【数据分析与可视化】Pandas可视化与数据透视表的讲解及实战(超详细 附源码)
171 0
|
数据采集 数据可视化 数据处理
Python数据可视化:呈现世界大运会历史数据
Python数据可视化:呈现世界大运会历史数据