matplotlib绘图与可视化2

文章目录

前言

matplotlib是一个相当底层的工具。你可以从其基本组件中组装一个图表:数据显示(即绘图类型:线、条、框、散点图、轮廓等)、图例、标题、刻度标记和其他注释。上一节我们是使用NumPy创建的数据进行绘图,这一节我们将讲述使用pandas和seaborn进行绘图

一、使用pandas和seaborn绘图

在pandas中,我们可能有多个数据列,并且带有行和列的标签。pandas自身有很多内建方法可以简化从DataFrame和Series对象生成可视化的过程。另一个库是seaborn,它是由Michael Waskom创建的统计图形库。seaborn简化了很多常用可视化类型的生成。

导入seaborn会修改默认的matplotlib配色方案和绘图样式,这会提高图表的可读性和美观性。

1.1 折线图

Series和DataFrame都有一个plot属性,用于绘制基本的图形。默认情况下,plot()绘制的是折线图:

s = pd.Series(np.random.randn(10).cumsum(),index=np.arange(0,100,10))
s.plot()
plt.show()

matplotlib绘图与可视化2
Series对象的索引传入matplotlib作为绘图的x轴,你可以通过传入use_index=Flase来禁用这个功能。x轴的刻度和范围可以通过xticks和xlim选项进行调整,相应地y轴使用yticks和ylim进行调整。下表是plot全部选项的列表。

参数描述label图例标签ax绘图所用的matplotlib子图对象;如果没有传值,则使用当前活动的matplotlibstyle传给matplotlib的样式字符串,比如’ko–’alpha图片不透明度(从0到1)kind可以是’area’、’bar’、’barh’、’density’、’hist’、’kde’、’line’、’pie’logy在y轴上使用对数缩放use_index使用对象索引刻度标签rot刻度标签的旋转(0到360)xticks用于x轴刻度的值yticks用于y轴刻度的值xlimx轴范围ylimy轴范围grid展示轴网格(默认是打开的)

大部分pandas的绘图方法,接收可选的ax参数,该参数可以是一个matplotlib子图对象。这使你可以更为灵活地在网络布局中放置子图。

DataFrame的plot方法在同一个子图中将每一列绘制为不同的折线,并且自动生成图例:

df = pd.DataFrame(np.random.randn(10,4).cumsum(0),
                  columns=['A','B','C','D'],
                  index=np.arange(0,100,10))
df.plot()
plt.show()

matplotlib绘图与可视化2

DataFarme拥有多个选项,允许灵活地处理列。关于更多选项可以了解下表:

参数描述subplots将DataFrame的每一列绘制在独立的子图中sharex如果subplots=True,则共享相同的x轴、刻度和范围sharey如果subplots=True,则共享相同的y轴figsize用于生成图片尺寸的元组title标题字符串legend添加子图图例(默认是True)sort_columns按字母顺序绘制各列,默认情况下使用已有的列顺序

1.2 柱状图

使用 plot.bar()plot.barh() 可以分别绘制垂直和水平的柱状图。在绘制柱状图时,Series或DataFrame的索引将会被用作x轴刻度(bar)或y轴(barh):

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

fig,axes = plt.subplots(2,1)
data = pd.Series(np.random.rand(16),index=list('abcdefghijklmnop'))
data.plot.bar(ax=axes[0],color='k',alpha=0.7)
data.plot.barh(ax=axes[1],color='k',alpha=0.7)

plt.show()

matplotlib绘图与可视化2

选项color=’k’和alpha=0.7将柱子的颜色设置为黑色,并将图像的填充色设置为部分透明。

在DataFrame中,柱状图将每一行中的值分组到并排的柱子中的一组:

fig,axes = plt.subplots(2,1)
data = pd.DataFrame(np.random.rand(6,4),
                    index=['one','two','three','four','five','six'],
                    columns=pd.Index(['A','B','C','D'],name='Genus'))
print(data)
data.plot.bar()
plt.show()
size  1   2   3   4  5  6
day
Fri   1  16   1   1  0  0
Sat   2  53  18  13  1  0
Sun   0  39  15  18  3  1
Thur  1  48   4   5  1  3

size         2         3         4         5
day
Fri   0.888889  0.055556  0.055556  0.000000
Sat   0.623529  0.211765  0.152941  0.011765
Sun   0.520000  0.200000  0.240000  0.040000
Thur  0.827586  0.068966  0.086207  0.017241

matplotlib绘图与可视化2

你可以看到本数据集中的派对数量在周末会增加。

对于在绘图前需要聚合或汇总的数据,使用seaborn包会使工作更为简单。现在让我们看下使用seaborn进行按星期日期计算小费百分比:

tips = pd.read_csv('D:\浏览器下载\pydata-book-2nd-edition\pydata-book-2nd-edition\examples/tips.csv')
tips['tip_pct'] = tips['tip']/(tips['total_bill']-tips['tip'])
print(tips.head())
sns.barplot(x='tip_pct',y='day',data=tips,orient='h')
plt.show()
          cpi        m1  tbilrate     unemp
198 -0.007904  0.045361 -0.396881  0.105361
199 -0.021979  0.066753 -2.277267  0.139762
200  0.002340  0.010286  0.606136  0.160343
201  0.008419  0.037461 -0.200671  0.127339
202  0.008894  0.012202 -0.405465  0.042560

我们使用了seaborn的 regplot方法,该方法可以绘制散点图,并拟合出一条线性回归线:

matplotlib绘图与可视化2

在探索性数据分析中,能够查看一组变量中的所有散点图是有帮助的,这被称为成对图或散点图矩阵。从头开始绘制这样一个图是有点工作量的,所以seaborn有一个方便的 pairplot函数,它支持在对角线上放置每个变量的直方图或密度估计图:

sns.pairplot(trans_data,diag_kind='kde',plot_kws={'alpha':0.2})

matplotlib绘图与可视化2
你可能会注意到ploy_ksw参数,这个参数使我们能够将配置选项传递给非对角元素上的各个绘图调用。

1.5 分面网格和分类数据

如果数据集有额外的分组维度,我们可以使用分面网格是利用多种分组变量对数据进行可视化的方式。seaborn拥有一个有效的内建函数 factorplot(注意seaborn的版本,在seaborn0.12中没有这个方法),它可以简化多种分面绘图:

sns.factorplot(x='day',y='tip_pct',hue='time',col='smoker',kind='bar',data=tips[tips.tip_pct<1])

其中hue为分类参数,col为分表参数,kind为图表选择。

matplotlib绘图与可视化2

除了根据’time’在一面内将不同的柱分组为不同的颜色,我们还可以通过每个时间值添加一行来扩展网络:

row和col参数的功能相同

sns.factorplot(x='day',y='tip_pct',row='time',col='smoker',kind='bar',data=tips[tips.tip_pct<1])

matplotlib绘图与可视化2
factorplot支持其他可能有用的图类型,具体取决于你要显示的内容。例如,箱形图(显示中位值、四分位数和异常值):
sns.factorplot(y='day',x='tip_pct',kind='box',data=tips[tips.tip_pct<0.5])

matplotlib绘图与可视化2

总结

以上就是今天要讲的内容,本文仅仅简单介绍了如何绘制折线图、柱状图、直方图和密度图、散点图或点图、分面网格和分类数据。目的是让你使用pandas、matplotlib和seaborn入门一些基础的数据可视化知识,如果直观地传达数据分析结果在你的工作中非常重要。

Original: https://blog.csdn.net/lezerodead/article/details/127807106
Author: PhoenixPeng-gxu
Title: matplotlib绘图与可视化2

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/769852/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Mac在conda中安装各种支持包的命令

    如有帮助,请随手点赞。 1、在conda中添加以下国内的镜像源 首先是,我在Mac M1上面安装了ARM版的conda环境miniforge,但是它的包默认的好像是国外的镜像源,所…

    Python 2023年9月8日
    078
  • 软件设计模式白话文系列(三)原型模式

    软件设计模式白话文系列(三)原型模式 1、描述 用原型实例指定创建对象的种类,并且通过拷贝这些原型对象的属性来创建新的对象。通俗点的意思就是一个对象无需知道任何创建细节就可以创建出…

    Python 2023年10月16日
    022
  • 该怎么用pyqt5来实现数据的增、删、改、查功能…

    通过这个布局思路来做一个简单的后台管理系统也是OK的,大家可以参考一下啦! 【阅读全文】 不多说,让我们首先整理一下我们需要的第三方模块。 [En] Without saying …

    Python 2023年5月24日
    078
  • pytest知识

    1、pytest -h查看帮助 -m后面跟标签名(标签在用例上pytest.make.p1) -k 关键字(方法名包括什么) 2、setUp_class一个类只运行一次,所以接口自…

    Python 2023年9月15日
    041
  • python的索引与切片

    目录 1.一维数组的索引和切片 1.二维数组的索引和切片 在python的学习过程,有些同学对索引和切换会感到困惑,今天我们就来弄清楚它。 1.一维数组的索引和切片 如下图所示,该…

    Python 2023年8月26日
    064
  • Pandas两重山之Series(索引)

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年8月18日
    043
  • 假期用Python写8个小游戏(附源码)

    Original: https://www.cnblogs.com/123456feng/p/16081805.htmlAuthor: 蚂蚁ailingTitle: 假期用Pyth…

    Python 2023年11月9日
    050
  • 【模型训练】YOLOv7车辆和行人检测

    YOLOv7车辆和行人检测 * – 1、车辆和行人检测模型训练 – 2、模型评估 – 3、模型和数据集下载网盘链接 1、本项目采用 YOLOv7…

    Python 2023年10月11日
    037
  • vs2017怎么安装python包 没有权限_vs2017怎么安装python第三方包

    vs2017有独立的python环境;所以想在vs2017开发python并使用第三方包,需要在vs2017中操作,完成第三方包的安装。 一,查看vs2017有哪些版本的pytho…

    Python 2023年9月25日
    030
  • Python数据分析之pandas(保姆级教程)

    一、前言 一般情况下,numpy总是和pandas一起出现。如果numpy处理的数据类似于list类型的话,那么pandas处理的数据就类似于dictionary类型。 二、前提准…

    Python 2023年8月8日
    050
  • scrapy框架,腾讯新闻爬取

    Scrapy框架,腾讯新闻爬取 * – 创建工程命名newsqq – + 1.1使用命令创建 scrapy 工程 + 1.2新建爬虫主文件 + * 1.2….

    Python 2023年10月1日
    049
  • 字符串的应用-

    1.2.1 string.isspace() 如果string中只包含空格,则返回true 1.2.2 string.isalnum() 如果string至少有一个字符并且所有字符…

    Python 2023年5月24日
    043
  • django入门操作体验1

    1.虚拟环境+django环境(若存在用之前的) 创建一个虚拟环境 (会新建一个文件,里面有 Scripts/python.exe文件) python -m venv myvenv…

    Python 2023年8月5日
    076
  • AngouriMath: 用于C#和F#的开源跨平台符号代数库

    AngouriMath是一个MIT协议开源符号代数库。也就是说,通过AngouriMath,您可以自动求解方程、方程组、微分、从字符串解析、编译表达式、处理矩阵、查找极限、将表达式…

    Python 2023年10月17日
    044
  • 【Python】数据预处理之将类别数据转换为数值的方法(含Python代码分析)

    在进行Python数据分析的时候,首先要进行数据预处理。但是有时候不得不处理一些非数值类别的数据,遇到这类问题时该怎么解决呢? 目前为止,总结了三种方法,这里分享给大家。 这种方法…

    Python 2023年8月2日
    056
  • 重温Python计算机二级考试知识点!

    Python计算机二级同学们都考了吗? 如果没有,那么下面的内容很可能就对你有所帮助,如果考了也没关系,我们继续看下去,复习一下! 我还给大家准备了大量的Python学习资料,直接…

    Python 2023年5月24日
    059
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球