不使用Matplotlib在Python中创建可视化的最简单方法
Matplotlib 通常被认为是在 Python 中创建可视化的最简单方法,它构成了许多其他绘图库(如 Seaborn)的基础。今天我们来讲一下创建可视化的另一个方法,Pands。直接从Pandas绘制有许多优点:
- 它的速度更快 — 代码行更少,需要编写的代码更少,需要重新加载的库更少。可视化对于数据分析至关重要,因此没有理由拒绝尝试加快生成良好可视化的过程。此外,Pandas在我们想要它绘制的图中做很多推论,因此它可以在很多情况下可视化我们想要的,而无需显式声明它们。
- 直接整合许多涉及系列和数据帧的方便数据操作功能(如不同的分机和滚动方式)更容易。
- 实际上,直接从Pandas那里创建地块更容易在条形图、堆叠条形图和水平条形图之间转换只是更改参数值的问题。创建子图并操作子图也只是几个字符。Pandas在可视化方面承担着许多艰苦的工作。
而对于技术:Pandas的绘图运行在matplotlib基础设施,并加载其他matplotlib项目或参数在Pandas创建的图形的顶部可以改善它。相反,Pandas只是提供了一个方便和更直接的界面,将数据连接到可视化。例如,以下数据帧随机生成,包含四列和十行。
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pTybl7Vb_P5lO9pIt11rV2osSnRDZkxf3gCCBcDYrE1nPDcCzUXnzQBSiQzB-xZ-yKlcgakwmLNk5AZ5ZAXp-AEs.jpeg)
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/bF/jG/W1/1WjFGbm8HLFtAH_u0xOtdibl7Vb_P5lO9pIt11rV2ov7iUO1-y7J8LyrnVi70Lk3uOBwmm58upzi4GcKDJjAlknHx3EPl8pi0uHFuA_DXQs.jpeg)
只需用data.plot.bar()来绘制每行每列的值,就可以用data来替换数据帧的名称。请注意,在语句之后添加分号 () 会从输出其他打印(例如 , )中删除单元格。
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/bF/jG/W1/1WjFGbm8HLFtAH_u0xOtdibl7Vb_P5lO9pIt11rV2osWL9yw2gitJHLE6f7epw2itUByXSxw1asLkhGleKVRSMA9dc8XtHruQ5Bm8J3B27Q.jpeg)
或者,尝试添加一个参数stacked=True,这是直接从数据源创建堆叠条形图的非常简单的方法。
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruCbl7Vb_P5lO9pIt11rV2ov0_ueC2kiqHparwo7LGVnW9tDKh9lMsAFl9maljitcDaLI3cfxU6YDffnphHgVvKY.jpeg)
或者,尝试使用barhdata.plot.barh(stacked=True)绘制水平条,所有这些变体只需一行代码就可以轻松创建,因为它们与数据建立了直接流。
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pTybl7Vb_P5lO9pIt11rV2otdbK7E04W_AwCWTjgJX4Uo__mcgN9usi56PpNH7Bk2HNZz-RpvZd_QXMux1oa0KXo.jpeg)
可以通过在绘图的代码(sns.set_palette(‘magma’))之前添加来更改绘图的常规调色板。或者,也可以将颜色贴图参数传递到绘图中。
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruCbl7Vb_P5lO9pIt11rV2oueAibadgTTCdeQ2jV5B2PeNUhx4Uy8p-zkxeaTCZyBpG5s_8NXK2ldO12p2dKPnO8.jpeg)
显示此类数据的另一种方法是使用data.plot.area()的区域图。
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/bF/jG/W1/1WjFGbm8HLFtAH_u0xOtdibl7Vb_P5lO9pIt11rV2ouUSntf7dWI1M0NgGyOQ_mTmJDpKOxI8eRjI1Xg_7tJawY38tNvwCm-Vd0uyXQ9tYY.jpeg)
代码中的参数可以像通常使用 matplotlib 或海生模型那样进行调整。在data.plot.area(stacked=False)的情况下,参数(透明度)默认设置为 0.5,但可以手动调整。
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUybl7Vb_P5lO9pIt11rV2ouy-zpKFEanUHNIN_4wupnbnObuC6zujjMiqD4f1rzU4DLaOKLnwi8a1fB2FnDgD7c.jpeg)
直接使用Pandas的主要好处之一是,许多Pandas的有用数据帧操作可以直接使用。例如,data.diff()的结果,它只需将一行与它之前的行之间的差值(因此,第一行中存在 NaN)。这在许多时间序列应用中都很有帮助。
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pTybl7Vb_P5lO9pIt11rV2ouLLv4qk3akukYzyhRzdM03nhlX6Jh4HsPMB8DVWlUppW_AcSI8hvQCx-F4kxOuKyg.jpeg)
例如,以下代码,该代码绘制出差异的数据,并演示各种参数在Pandas绘图中的用法,本例中为颜色:
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pTybl7Vb_P5lO9pIt11rV2oupw7kpQ7-nhweFch5UoMPm-CDtWavLBMjZG0ckb_JDHMbrrh6GkhOWNwenEW9boTE.jpeg)
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUybl7Vb_P5lO9pIt11rV2os-io0rNFWnC-rNT4-SDI4Ig8AwRTc6W0_5FKUKt6Y3UF9ejLljXZovZ-yrSddGsWM.jpeg)
Pandas数据处理功能的另一个应用是,它采用平均滚动均值,这是一种常见的统计方法,用于减少数据平均移动窗口的数据的不可信度。
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/S6/Vw/SY/YSV6wSY-OkQYFU1zfJYNlibl7Vb_P5lO9pIt11rV2ou0V0RvkN9Zlk25uiAa2Pr6L-LzJJF6BUNvuWt53UtPmx8Iu7mCOBVKn5ptxbiSQtc.jpeg)
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pTybl7Vb_P5lO9pIt11rV2oshq-3WDH4qVvFFpR9YeL8MhkPUNEiqd_ssjK2S3JXFAN9DgyEgWuqI3fs3t5N1o60.jpeg)
可直接从数据创建各种其他类型的绘图:
- kde或用于密度图density;
- scatter用于散点图;
- hexbin对于六边形箱图;
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/S6/Vw/SY/YSV6wSY-OkQYFU1zfJYNlibl7Vb_P5lO9pIt11rV2osTlGCq3gj_i4m25VKwAbgDVl0A77-xHU1pU1gJfPdWsQYJRPUCvcCJSJJ6MQWoo7c.jpeg)
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/S6/Vw/SY/YSV6wSY-OkQYFU1zfJYNlibl7Vb_P5lO9pIt11rV2ouheq5KLvOY8pTzt8A_Sxm_6UyyzXENrsHaXC4XzlCWenOSoCintCCEG6bo365EKA4.jpeg)
注:尽管在默认情况下 ,如果.plot.scatter()figsize=(x,y)的颜色是灰度,但可以在颜色映射参数中传递。所有绘图都有一个参数,以便控制输出图形的大小。在每个绘图线之后输入分号 (), 允许在 Jupyter 笔记本中具有多个输出。
Pandas在为你绘图时做重担的一个例子是子图。通过启用 ,Pandas根据列自动创建子图。例如,考虑以下生成的 DataFrame,它有两列 (和) 以及五行
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUybl7Vb_P5lO9pIt11rV2ouXsea9-69sSRVjx9zwr5wEvrCnoIYQq-R32RsBZjyyO3ms-qPGqr8THpPWxgYj9gw.jpeg)
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/S6/Vw/SY/YSV6wSY-OkQYFU1zfJYNlibl7Vb_P5lO9pIt11rV2otCzndSmV_mKT5RijmeLBGN3fNCgXdR5dEIqBr7xN4gcXva3xDGtk6xhn1fCeQnPkQ.jpeg)
通常,你需要手动创建两个子图。特别是在想要生成多个子图的情况下,可以想象直接使用Pandas绘图方法会很有帮助。
饼图的其他参数包括 ,它将自定义标签添加到切片中;,指定每个切片的颜色;,确定十进制标签的百分比和截断程度;和 ,用于确定标签的大小。作为直接Pandas绘图中子图的便利性的另一个示例,请考虑绘制行数据(使用 时为默认值):
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/nE/Qq/OF/FOQEqnhn2Rw1d5AwR24pTybl7Vb_P5lO9pIt11rV2ov1cezFcyLyEvB1gYChFfkxS4oVBRjWqkCR--5Yj9gKmFRwXkv44lnYHjBN7p-SEGo.jpeg)
![不使用Matplotlib在Python中创建可视化的最简单方法 不使用Matplotlib在Python中创建可视化的最简单方法](https://cdn.ancii.com/article/image/v1/5j/up/aP/Paujp55OYl-3m_8_NjAruCbl7Vb_P5lO9pIt11rV2ovni2ilSe8r13QsD5b_VyLqzrS86kAG-e6JgBN1egB7eK8uXDEoVoZ4Sdh_9CBkjCI.jpeg)