python数据分析——数据可视化(图形绘制)

数据可视化(图形绘制基础)

  • 前言
  • 一、图形绘制基础
    • Matplotlib简介
    • 使用过程
    • sin函数示例
  • 二、常用图形绘制
    • 折线图的绘制
      • plot
      • 示例
    • 散点图的绘制
      • scatter()
      • 示例
    • 柱状图的绘制
      • bar
      • 示例
    • 箱型图绘制
      • plot.box
      • 示例
    • 饼状图的绘制
      • pie
      • 示例
  • 三、图形绘制的组合情况
    • 多个折线图的组合绘制
      • 示例
    • 折线图和散点图的组合绘制
      • 示例
    • 柱状图与折线图的组合绘制
      • 示例
  • 四、拓展
    • 热力图
      • heatmap
    • 改变数据采样频率
      • resample
      • 示例
    • 创建多个子图
      • subplots()
    • 调整子图之间的间距
      • subplots_adjust
    • 决策树
      • plot_tree


前言

推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
https://www.captainbed.cn/f1

数据可视化是指利用图形、表格、图表等方式将数据展示出来,使得数据更加清晰、易于理解和分析。图形绘制是数据可视化的基础,通过绘制各种图形呈现数据,可以更加直观地了解数据之间的关系和趋势。

如果画图过程中出现FutureWaring问题

import warning
warnings.filterwarnings('ignore')

针对中文不显示

plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']

在当今数字化时代,数据分析已成为各行各业中不可或缺的一环。Python,作为数据分析领域的明星语言,凭借其强大的数据处理能力和丰富的库资源,正逐渐受到越来越多数据分析师的青睐。而在数据分析的过程中,数据可视化作为直观展示数据特征和规律的重要手段,更是不可或缺。

Python中,有许多专门用于数据可视化的库,其中最为著名的莫过于MatplotlibSeabornMatplotlib作为Python中最早的数据可视化库,提供了丰富的绘图函数和灵活的配置选项,可以满足大部分基本的绘图需求。而Seaborn则是在Matplotlib的基础上,进一步封装和优化,提供了更加美观和高级的绘图接口。

在图形绘制基础方面,我们需要掌握几个核心概念,包括坐标轴、图例、标题、标签等。坐标轴是图表的基础,用于展示数据的分布情况;图例用于区分不同系列的数据;标题和标签则用于说明图表的主题和内容。

接下来,我们通过几个简单的例子来演示如何使用Matplotlib进行基本的图形绘制。

我们使用Matplotlib来绘制一个简单的折线图。假设我们有一组关于某公司股票价格的数据,我们可以通过折线图来展示股票价格的走势。在Matplotlib中,我们可以使用plot()函数来绘制折线图,通过设置x轴和y轴的数据,以及图表的标题、坐标轴标签等参数,就可以生成一个基本的折线图。

当然,除了折线图和箱线图之外,还有许多其他类型的图形可以用于数据可视化,如柱状图、散点图、饼图等。每种图形都有其适用的场景和优缺点,需要根据具体的数据特征和需求来选择合适的图形类型。


一、图形绘制基础

Matplotlib简介

Matplotlib是目前应用最为广泛的python扩展绘图模块库,是Python中最受欢迎的数据可视化软件包之一。Matplotlib支持跨平台运行,能让使用者很轻松地将数据转化为高质量图形,并且提供了多样化的输出格式,常用于绘制2D图形,同时也提供了一部分3D绘图接口。

Matplotlib提供了类似于MATLAB的绘图函数,对于熟悉MATLAB的使用者来说,可以很容易的使用它。Matplotlib通常与NumPypandas扩展包一起使用,最常见的使用方式是根据NumPy库的N维数组类型ndarray来绘制2D图像,使用简单、代码清晰易懂,深受广大技术爱好者的喜爱,是数据分析中不可或缺的重要工具之一。

使用过程

使用pylabpyplot绘图时一般过程为:首先读入数据,然后根据实际需要绘制折线图、散点图、柱状图、饼状图、雷达图或三维曲线和曲面,接下来设置轴和图形属性,最后显示或保存绘图结果。
在这里插入图片描述

sin函数示例

【例7.1】请利用python绘制正弦函数曲线。

关键技术:采用MatplotlibPyplot模块的plot函数绘制曲线图。

from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import math
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
x = np.arange(0,math.pi*2,0.05)
y = np.sin(x)
plt.plot(x,y)
plt.xlabel("angle")
plt.ylabel("sine")
plt.title("sine curve")
plt.show()

在这里插入图片描述
在这里插入图片描述

二、常用图形绘制

折线图的绘制

折线图是最基本的图表类型,是用点和点之间连线的上升或下降表示指标的连续变化趋势。折线图反映了一段时间内事物连续的动态变化规律,适用于描述一个变量随另一个变量变化的趋势,通常用于绘制连续数据,适合数据点较多的情况。

plot

matplotlib是一个用于绘制图形的Python库,其中的plot函数用于绘制线条图。下面是matplotlibplot函数的详细解释:

plot(x, y, label, linestyle, color, linewidth, marker)

参数说明:

  • x:表示x轴上的数据序列,可以是一个列表、数组或Series类型的数据,也可以是一个数字,此时表示生成从0到该数字的等间隔的数据序列。
  • y:表示y轴上的数据序列,要求与x轴上的数据序列长度相同。
  • label:给绘制的线条指定一个标签,可以在绘制图例时使用。
  • linestyle:线条的样式,可以是实线(‘solid’)、虚线(‘dashed’)、点线(‘dotted’)等,默认为实线。
  • color:线条的颜色,可以是一个关键字字符串(如’red’、'blue’等),也可以是一个RGB元组表示的颜色(如(0.1, 0.2, 0.3)),默认为蓝色。
  • linewidth:线条的宽度,可以是一个数字,默认为1。
  • marker:线条上的标记点的样式,可以是一个关键字字符串(如’+'、‘o’等),也可以是一个标记字符(如’x’、's’等),默认为没有标记点。

使用plot函数可以绘制不同样式的线条图,可以通过设置不同的参数来定制线条的样式、颜色、宽度、标记点等。在绘制完所有的线条后,可以使用plt.legend()函数来添加图例,使得不同线条对应的标签在图中显示出来。

示例

【例7.4】请根据给定的两组数据xy,分别代表某城镇居民消费水平增长率和对应的年份,利用Python绘制城镇居民消费水平增长率折线图。

关键技术:利用matplotlib包的plot方法进行折线图的绘制。

y = [8.07,6.42,9.79,8.20,7.69,6.02,7.86,6.93,6.84,9.04,10.06]
x= [2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020]
plt.plot(x,y,'g',lw = 4,label = '城镇居民消费水平增长率')
plt.legend(loc = 5)
plt.grid(True)
plt.xlabel("年")
plt.ylabel('增长率')
plt.title("我国历年城镇消费水平增长率")

在这里插入图片描述
在这里插入图片描述

散点图的绘制

散点图是以直角坐标系中各点的密集程度和变化趋势来表示两种现象间的相关关系,常用于显示和比较数值。当要在不考虑时间的情况下比较大量数据点时,使用散点图比较数据方便直观。散点图将序列显示为一组点,其中每个散点值都由该点在图表中的坐标位置表示。对于不同类别的点,则由图表中不同形状或颜色的标记符表示。同时,也可以设置标记符的颜色或大小。

scatter()

scattermatplotlib库中用于绘制散点图的函数。散点图是一种用于展示两个变量之间关系的图形,其中每个点代表一个数据样本。

scatter函数可以接受一系列的xy坐标作为输入,然后将这些坐标在图中绘制成散点。

下面是scatter函数的基本用法:

import matplotlib.pyplot as plt# 准备散点的x和y坐标
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]# 绘制散点图
plt.scatter(x, y)# 显示图形
plt.show()

这段代码会生成一个简单的散点图,其中x坐标为1, 2, 3, 4, 5y坐标为2, 4, 6, 8, 10

scatter函数还可以接受一些常用的参数,用于调整散点图的样式和外观,例如:

  • s:设置散点的大小。可以传入一个常数,表示所有散点的大小;也可以传入一个数组,表示每个散点的大小。
  • c:设置散点的颜色。可以传入一个常数,表示所有散点的颜色;也可以传入一个数组,表示每个散点的颜色。
  • marker:设置散点的形状。可以传入一个字符,表示所有散点的形状;也可以传入一个数组,表示每个散点的形状。
  • alpha:设置散点的透明度。

下面是一个示例代码,展示了如何使用这些参数调整散点图的样式:

import matplotlib.pyplot as plt
import numpy as np# 生成随机数据
np.random.seed(0)
x = np.random.randn(100)
y = np.random.randn(100)# 绘制散点图,设置散点的大小、颜色和形状
plt.scatter(x, y, s=50, c='r', marker='o', alpha=0.5)# 显示图形
plt.show()

这段代码会生成一个具有随机数据的散点图,散点的大小为50,颜色为红色,形状为圆形,透明度为0.5。

除了基本的用法和常用参数,scatter函数还有其他一些参数,用于进一步控制散点图的样式和外观,例如:

  • edgecolors:设置散点边缘的颜色。
  • linewidths:设置散点边缘的宽度。
  • cmap:设置颜色映射,用于根据数值变化为散点着色。
  • norm:设置归一化器,用于归一化数值。
  • label:设置散点图的标签,用于图例显示。

可以参考Matplotlib官方文档获取更多关于scatter函数的详细说明和示例代码。

示例

【例7.5】对于给定的两个市场收益率的波动情况数据xy,请利用Python绘制散点图来反映两个市场的波动率情况。

关键技术:利用matplotlib包的plot函数进行散点图的绘制,与绘制折线图相比,绘制散点图只用到一组数据,而绘制折线图需要用到两组对应的数据。

x = np.random.randint(0,5,10)
y = np.random.randint(0,5,10)
plt.figure(figsize = (10,10))
plt.subplot(121)
plt.ylim((-5,5))
plt.plot(x,'ro',label = '第一组')
plt.grid(True)
plt.title('第一组市场波动情况')
plt.subplot(122)
plt.ylim((-5,5))
plt.plot(y,'b*',label = '第二组')
plt.grid(True)
plt.title('第二组市场波动情况')
plt.savefig('test',dpi = 600)
plt.show()

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

柱状图的绘制

bar

matplotlibbar函数用于绘制柱状图,它是一个非常常用的数据可视化工具。

下面是bar函数的详细介绍:

语法:

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, align='center', data=None, **kwargs)

参数:

  • x:柱状图的x轴位置,可以是一个数值或者一个数组,表示每个柱状图的位置。
  • height:柱状图的高度,可以是一个数值或者一个数组,表示每个柱状图的高度。
  • width:柱状图的宽度,默认值为0.8。
  • bottom:柱状图的底部位置,默认为None,表示从0开始绘制柱状图。
  • align:柱状图的对齐方式,默认为’center’,表示柱状图的中心与给定位置对齐。
  • data:传入一个DataFrame或者一个类似结构的数据集,xheight参数可以直接从data中获取。

其他常用参数:

  • color:柱状图的颜色,可以是一个字符串,表示柱状图颜色的名称,也可以是一个列表,表示每个柱状图的颜色。
  • edgecolor:柱状图的边框颜色,默认为None,表示不显示边框。
  • label:柱状图的标签,可以在图例中显示。
  • tick_label:柱状图的刻度标签,可以在x轴上显示。
  • alpha:柱状图的透明度,取值范围为0到1。

用例:

import matplotlib.pyplot as plt
import numpy as npx = np.arange(5)
y = [1, 4, 3, 2, 5]
plt.bar(x, y, color='blue', align='center')plt.xlabel('x')
plt.ylabel('y')
plt.title('Bar Chart')
plt.show()

此代码将绘制一个简单的柱状图,x轴是0到4,y轴是给定的数组y的值。柱状图的颜色为蓝色,对齐方式为居中。在图像的x轴标签、y轴标签和标题上显示对应的文字。最后调用plt.show()来显示图像。

以上提供了matplotlibbar函数的详细介绍和一个简单的用例。通过使用不同的参数和组合,您可以根据自己的需求绘制出各种类型的柱状图。

示例

【例7.7】对于给定的2020年9月至2021年3月期间某基金产品发行数量的数据,该数据以字典形式存储,形式如下所示。请利用Python将其以柱状图的形式绘制出来。

{'202009': 2324,'202010': 2814,'202011': 2525,'202012':2946,'202101': 3019,'202102': 2087,'202103': 3398}

关键技术:可以利用Python的matplotlib包的bar方法进行柱状图绘制。

dict = {'202009': 2324,'202010': 2814,'202011': 2525,'202012': 2946,'202101': 3019,'202102': 2087,'202103': 3398}
plt.figure (figsize= (9,5) )
plt.bar (dict.keys (),dict.values (),width=0.3, align='center' , label=' funds')
plt.grid (True)
plt.legend (loc=1)
plt.xlabel ('月')
plt.ylabel('发行数量')
plt.title('基金产品发行数量')
plt.savefig ( 'test', dpi=600)

在这里插入图片描述

在这里插入图片描述

箱型图绘制

plot.box

plot.boxmatplotlib库中的一个函数,用于绘制箱线图。箱线图是一种统计图表,用于展示一组数据的分布情况。它显示了数据的中位数、上下四分位数、最小值和最大值,以及异常值。

箱线图可以帮助我们了解数据的偏态、离散度和异常值情况。

plot.box的基本语法为:

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=False, showmeans=False, showcaps=True, showbox=True, showfliers=True, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_xticks=True, autorange=False, zorder=None)

参数说明:

  • x:要绘制箱线图的数据,可以是一个一维数组或一个二维数组。
  • notch:箱线图的缺口,默认为None
  • sym:异常值的标记,默认为None
  • vert:箱线图的方向,默认为True(垂直方向),设置为False可以绘制水平方向的箱线图。
  • whis:决定绘制箱线图上下边界的位置,默认为1.5
  • boxprops:箱线图的属性设置,包括颜色、线宽等,默认为None
  • flierprops:异常值的属性设置,默认为None
  • medianprops:中位数的属性设置,默认为None
  • meanprops:均值的属性设置,默认为None
  • capprops:边界线的属性设置,默认为None
  • whiskerpropswhisker的属性设置,默认为None
  • manage_xticks:是否自动管理x轴的刻度,默认为True
  • autorange:是否自动确定y轴的范围,默认为False
  • zorder:图层顺序,默认为None

除了以上参数,plot.box还可以接受一些其他参数,用于设置标题、坐标轴标签、图例等。详细的参数说明可以参考matplotlib官方文档。

下面是一个简单的示例代码,演示如何使用plot.box绘制箱线图:

import matplotlib.pyplot as plt
import numpy as np# 生成一组随机数据
np.random.seed(123)
data = np.random.normal(0, 1, 100)# 绘制箱线图
plt.boxplot(data)# 添加标题和坐标轴标签
plt.title('Box Plot')
plt.xlabel('Data')# 显示图形
plt.show()

运行以上代码,会生成一个简单的箱线图,显示了随机数据的中位数、上下四分位数、最小值和最大值,以及异常值(如果有)。

除了上述的示例代码,plot.box还可以接受一维或二维的数据作为参数,用于绘制多组数据的箱线图。可以通过设置参数来修改箱线图的样式,如颜色、线宽等。此外,还可以使用matplotlib的其他函数和方法来进一步自定义绘图。

示例

【例7.8】下面给定的数据是某公司产品在各个国家用户的消费分布图,请根据以下数据利用Python绘制箱型图。

'Japan': [1200, 1300, 1500, 1400, 1600, 1600, 1800, 1800, 1900, 2400],
'USA': [1200, 1350, 1400, 1500, 1660, 1800, 1700, 1900, 2100, 2000],
'Russia': [1100, 1200, 1200, 1400, 1300, 1600, 1700, 1900, 1900, 1800],
"Korean": [1200, 1100, 1000, 1300, 1200, 1500, 1600, 1700, 1800, 1800]

关键技术:可以利用Python的plot.box绘制箱型图。

data = {'Japan': [1200,1300,1500,1400,1600,1600,1800,1800,1900,2400],
'USA': [1200, 1350, 1400, 1500, 1660, 1800, 1700, 1900, 2100, 2000],
'Russia': [1100, 1200, 1200, 1400, 1300, 1600, 1700, 1900, 1900, 1800],
"Korean": [1200, 1100, 1000, 1300, 1200, 1500, 1600, 1700, 1800, 1800]}
df = pd.DataFrame(data)
df.plot.box(title  = "某公司产品各个国家用户消费分布图")
plt.grid(linestyle = '--',alpha = 0.3)
plt.savefig('test',dpi = 600)
plt.show()

在这里插入图片描述

在这里插入图片描述

饼状图的绘制

pie

matplotlib中,可以使用pie函数绘制饼图。饼图用于展示各类别的占比关系,适用于数据的相对比较。下面是使用pie函数绘制饼图的详细步骤和参数说明。

导入库:

import matplotlib.pyplot as plt

准备数据:

labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]

绘制饼图:

plt.pie(sizes, labels=labels)
plt.show()

绘制饼图时,主要使用了两个参数:

  • sizes:代表各类别的占比值,要求是一个一维数组或列表。
  • labels:代表各类别的标签,要求是一个与sizes长度相同的一维数组或列表。可选参数,默认值为None。

除此之外,还可以使用其他一些参数进行饼图的个性化设置,比如:

  • autopct:控制饼图中百分比的显示方式。可选参数,默认值为None。可以使用字符串格式控制显示,例如'%.1f%%'表示保留一位小数的百分比。
  • explode:控制各类别之间的间隔。可选参数,默认值为None。可以使用一维数组或列表来指定各类别的偏移量,例如[0, 0.1, 0, 0]表示第二个类别偏移0.1。
  • colors:控制各类别的颜色。可选参数,默认值为None。可以使用一维数组或列表来指定颜色,例如['red', 'blue', 'green', 'yellow']
  • startangle:控制饼图的起始角度,逆时针方向。可选参数,默认值为0。
  • shadow:控制是否显示阴影。可选参数,默认值为False。

下面是一个综合使用了上述参数的例子:

labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
explode = [0, 0.1, 0, 0]
colors = ['red', 'blue', 'green', 'yellow']plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%.1f%%', startangle=90, shadow=True)
plt.axis('equal')
plt.show()

通过调整上述参数,可以根据具体需求绘制出个性化的饼图。

示例

【例7.9】某公司有A、B、C、D、E五种商品,每种商品占有的市场份额分别为15%、30%、30%、10%和15%,请利用Python的饼状图绘制上述数据的分布图。

关键技术:可以利用Python的matplotlib包中的pie函数绘制饼状图。

import pandas as pd
import matplotlib.pyplot as plt
labels = ['A', 'B', 'C', 'D', 'E']
x = [15,30,30,10,15]
plt.pie(x, labels=labels)
plt.savefig('test',dpi=600)
plt.show ()

在这里插入图片描述

在这里插入图片描述

三、图形绘制的组合情况

多个折线图的组合绘制

示例

【例7.10】给定时间范围在2009年至2017年间两种商品的市场销售价格增长率数据集data1, data2。请利用Python的折线图将两种商品价格的增长率信息进行绘制,反映到图上。

关键技术:可以利用matplotlib包的plot函数进行多折线图的绘制。

data1 = np.random.randint(0,20,9)
data2 = np.random.randint(0,20,9)
year=[2009,2010,2011,2012,2013,2014,2015,2016,2017]
plt.plot(year,data1,lw=3,label='sales price increase rate')
plt.plot(year,data2,'r--',lw=3,label='construction costs increase rate')
plt.legend(loc=0)
plt.grid(True)
plt.xlabel('Year')
plt.ylabel('Percentage')
plt.title('sales price/construction costs increase rates')

在这里插入图片描述

在这里插入图片描述

折线图和散点图的组合绘制

示例

【例7.11】给定某只股票从2021年12月31日到2022年1月11日的收盘价格,请利用Python的折线图和散点图组合图形式进行数据的绘制。

关键技术:可以利用Python的plot函数进行绘制。

data = np.random.randint(10,20,7)
date = ['12/31/2021','04/01/2022','05/01/2022','06/01/2022','07/01/2022','10/01/2022','11/01/2022']
plt.figure(figsize=(7,4))
plt.plot(date,data,'b',label='stock xxxxxx')
plt.plot(date,data,'ro')
plt.grid(True)
plt.legend(loc=0)
plt.xlabel('日期')
plt.ylabel('收盘价')
plt.title('close price of stock xxxxx')

在这里插入图片描述

在这里插入图片描述

柱状图与折线图的组合绘制

示例

【例7.11】 【例7.12】已知给定的某股票在2021年12月14日至2021年12月28日的收盘价格和交易量,请利用Python绘制双坐标轴图,其中左坐标轴反映交易量,以柱状图表示;右坐标轴反映成交价格,以折线图表示。

close=[22.23,22.59,22.36,22.47,22.85,22.79,22.76,23.82,23.97,
5.38,25.5]
date=['12/14/2021','12/15/2021','12/16/2021','12/17/2021','12/21/2021','12/22/2021','12/23/2021','12/24/2021','12/25/2021','12/26/2021','12/21/2021']
vol=[34711261,35634241,40123423,39043212,45983023,429012,37584231,30029832,4039221,5023281,5598231]
fig,ax1=plt.subplots()
plt.bar(date,vol,width=0.3,label='交易量')
plt.legend(loc=1)
plt.xlabel('日 期')
plt.ylabel('交易量')
plt.title('stock xxxxxx')
plt.xticks(rotation = 60)
ax2=ax1.twinx()
plt.plot(close,'r',lw=2,label='收盘价')
plt.grid(True)
plt.legend(loc=8)
plt.ylabel('收盘价')
plt.savefig('test', dpi=600 , pad_inches='tight')

在这里插入图片描述

.png)

四、拓展

热力图

热力图是一种可视化数据的图表方式,通过不同颜色的区块来表示数据的密度或强度。热力图通常用于显示热点、密度分布或者数据趋势。

在热力图中,颜色的深浅表示数据的强度或频率,通常深色表示高强度或高频率,浅色表示低强度或低频率。通过观察热力图的颜色变化,可以直观地发现数据的分布情况或趋势。

热力图可以用于各种领域,例如地理信息系统(GIS)、流量分析、市场研究等。在地理信息系统中,热力图可以用来显示人口密度、空气质量、交通流量等信息。在流量分析中,热力图可以用来显示用户活跃度、点击量等数据。在市场研究中,热力图可以用来显示产品销售热点、用户偏好等信息。

绘制热力图可以使用各种工具和编程语言,例如Python的matplotlib库、R语言的ggplot2包等。这些工具提供了丰富的功能和选项,可以根据具体需求进行定制。

heatmap

seaborn是一个基于matplotlib的数据可视化库,它提供了许多简洁而美观的绘图函数。seaborn中的heatmap()函数用于绘制热力图,热力图可以用来可视化矩阵或数据表中数值的大小和分布。

下面是一个使用heatmap()函数绘制热力图的示例代码:

import seaborn as sns
from  matplotlib import  pyplot as plt# 创建矩阵或数据表
data = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]# 绘制热力图
sns.heatmap(data)# 显示图表
plt.show()

在这里插入图片描述

运行代码后,将会弹出一个窗口显示绘制的热力图。默认情况下,heatmap()函数将根据数据的值自动选择颜色渐变,并在图表中显示颜色条以表示值的大小。你还可以通过设置参数来自定义热力图的样式和属性,例如调整颜色映射、添加标签、设置标题等。具体的参数设置可以参考seaborn的官方文档。
在这里插入图片描述

改变数据采样频率

resample

matplotlib中,resample是一个用于改变数据采样频率的函数。它可以用于将数据从高频率采样转换为低频率采样,或者从低频率采样转换为高频率采样。这个函数可以用于处理时间序列数据,通过平均、求和等方式来对数据进行采样。

resample函数的基本语法如下:

resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, limit=None, kind=None, convention=None)

其中,rule参数用于指定新的采样频率,可以是字符串形式的时间间隔,比如’1D’代表每天采样一次,'1H’代表每小时采样一次,也可以是整数形式的数字,代表每个指定数量的样本进行一次采样。

  • how参数用于指定进行采样时使用的聚合函数,比如’mean’代表计算均值,'sum’代表计算总和。

  • axis参数用于指定进行采样的轴,默认是0,表示对行进行采样。

  • fill_method参数用于指定进行采样时缺失数据的填充方式。

  • closedlabel参数用于指定进行采样时边界的处理方式。

  • limit参数用于指定进行采样时最大允许的缺失样本数量。

  • kind参数用于指定进行采样时的插值方式。

  • convention参数用于指定进行采样时的约定方式。

示例

下面是一个使用resample函数对时间序列数据进行重新采样的例子:

import matplotlib.pyplot as plt
import pandas as pd# 创建一个DataFrame对象,包含时间序列数据
data = pd.DataFrame({'value': [1, 2, 3, 4, 5]}, index=pd.date_range(start='2022-01-01', periods=5, freq='D'))# 将数据从每天采样一次转换为每两天采样一次
resampled_data = data.resample('2D').mean()# 打印结果
print(resampled_data)

执行上述代码,将会得到如下输出:

            value
2022-01-01    1.5
2022-01-03    4.5

这里使用了resample函数将每天采样一次的数据转换为每两天采样一次的数据,并使用均值方式进行采样。所以结果中的第一个值为前两天的数据的均值((1+2)/2=1.5),第二个值为后两天的数据的均值((4+5)/2=4.5)。

创建多个子图

subplots()

matplotlib.pyplot.subplots函数是用于创建多个子图的工具。它返回一个包含所有子图的Figure对象和一个包含所有子图轴对象的Axes对象数组。

subplots函数的一般语法如下:

fig, axes = plt.subplots(nrows=1, ncols=1, figsize=None, ...)

参数说明:

  • nrows:子图的行数。
  • ncols:子图的列数。
  • figsize:一个元组,指定图形的宽度和高度。

例如,如果我们要创建一个包含两行两列的子图,可以这样做:

import matplotlib.pyplot as pltfig, axes = plt.subplots(nrows=2, ncols=2)

然后,我们可以使用axes数组中的元素来操作每个子图轴对象。例如,可以使用axes[0, 0]表示第一个子图的轴对象。

以下是一个完整的示例:

import numpy as np
import matplotlib.pyplot as plt# 创建一个包含两行两列的子图
fig, axes = plt.subplots(nrows=2, ncols=2)# 生成一些随机数据
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(x)# 在每个子图中绘制不同的函数
axes[0, 0].plot(x, y1)
axes[0, 1].plot(x, y2)
axes[1, 0].plot(x, y3)
axes[1, 1].plot(x, y4)plt.show()

上述代码将创建一个2x2的子图网格,并在每个子图中绘制不同的函数。

调整子图之间的间距

subplots_adjust

subplots_adjustmatplotlib中的一个函数,用于调整子图之间的间距。它可以用于调整子图布局,使得子图之间的间距更合适。

函数的语法如下:

matplotlib.pyplot.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)

参数说明如下:

  • left:左边界的位置。默认为0.125。
  • bottom:底边界的位置。默认为0.1。
  • right:右边界的位置。默认为0.9。
  • top:顶边界的位置。默认为0.9。
  • wspace:子图之间的宽度间距。默认为0.2。
  • hspace:子图之间的高度间距。默认为0.2。

调用subplots_adjust函数后,可以通过调整上述参数的值来达到调整子图布局的效果。

决策树

plot_tree

plot_treescikit-learn库中DecisionTreeClassifierDecisionTreeRegressor类的一个方法,用于绘制决策树模型的树形图。

使用plot_tree需要先对DecisionTreeClassifierDecisionTreeRegressor类进行训练,然后传入已经训练好的模型对象,以及需要绘制的树形图的配置参数。

下面是plot_tree的常用参数:

  • decision_tree:训练好的决策树模型对象。
  • feature_names:特征的名称列表。
  • class_names:类别的名称列表。
  • filled:是否给节点填充颜色,默认为False
  • rounded:是否将节点的框圆角化,默认为False
  • special_characters:是否使用特殊字符,默认为False

使用示例:

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import plot_tree# 加载数据集
iris = datasets.load_iris()
X, y = iris.data, iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)# 创建决策树分类器并训练
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)# 绘制决策树模型的树形图
plot_tree(clf, filled=True, rounded=True, feature_names=iris.feature_names, class_names=iris.target_names)

上述代码将会绘制出一个决策树模型的树形图,其中每个节点代表一个判断条件,通过树形图可以清晰地了解决策树的结构和特征的重要性。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/15944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sql Sever删除数据库时提示数据库正在被使用,解决办法

报错解释: 当您尝试删除SQL Server中的某个对象(如数据库、表等)时,如果有程序或进程正在使用该对象,您可能会收到一个错误信息,提示该对象正被使用。这通常是因为还有一个或多个数据库连接仍然保持着对该…

易备数据备份软件: 快速备份 MySQL\SQL Server\Oracle\泛微 OA 数据库

易备数据备份软件支持对 SQL Server、Oracle、MySQL、PostgreSQL、MariaDB、泛微 OA 等数据库进行快速备份,备份过程不会对任何服务造成中断。 使用一份授权,可以备份无限量的数据库,不管数据库服务器是否在本机、本地网络、或是远程网络。可…

Vitis HLS 学习笔记--控制驱动TLP-处理deadlock

目录 1. 简介 2. 代码解析 2.1 HLS kernel代码 2.2 查看接口报告 2.3 TestBench 2.4 Dataflow 报告 3. Takeaways 4. 总结 1. 简介 本文是对《Hardware Acceleration Tutorials: FIFO Sizing for Performance and Avoiding Deadlocks》实验内容的详细解释。 首先需要…

自动驾驶场景中的长尾问题怎么解决?

自动驾驶长尾问题是指自动驾驶汽车中的边缘情况,即发生概率较低的可能场景。感知的长尾问题是当前限制单车智能自动驾驶车辆运行设计域的主要原因之一。自动驾驶的底层架构和大部分技术问题已经被解决,剩下的5%的长尾问题,逐渐成了制约自动驾…

huggingface 笔记:查看GPU占用情况

0 准备部分 0.1 创建虚拟数据 import numpy as npfrom datasets import Datasetseq_len, dataset_size 512, 512 dummy_data {"input_ids": np.random.randint(100, 30000, (dataset_size, seq_len)),"labels": np.random.randint(0, 1, (dataset_size…

【代码随想录训练营】【Day 29】【回溯-3】| Leetcode 39, 41, 131

【代码随想录训练营】【Day 29】【回溯-3】| Leetcode 39, 41, 131 需强化知识点 startInex作用:一是处理是否可以有重复值,二是实现纵向遍历(不能没有)去重要在数组有序的前提下进行分割问题 题目 39.…

工业控制2D组态界面,丑是丑了点,但非常实用。

工业控制的2D组态界面是用于监控和控制工业过程的界面。它通常具有以下特征: 实时数据显示:2D组态界面能够实时显示传感器和设备的数据,如温度、压力、流量等。这些数据以图表、仪表盘、数字显示等形式呈现,使操作人员能够实时了解…

Android:使用Kotlin搭建MVVM架构模式

一、简介Android MVVM架构模式 MVVM全称:Model、View、ViewModel; Model:负责数据的请求、解析、过滤等数据层操作,其中Repository: 提供数据的 API(从本地或者网络)。View:负责视图部分展示Vie…

快速幂求逆元与逆元

我上一篇博客链接写的是多个数求乘法逆元而快速幂求逆元用于单个数求乘法逆元 逆元是对分数取模用的 对于除法取模不成立,即(a/b)%p≠(a%p/b%p)%p。求逆元的思路:(一般ACM的题目都是对1e97这种素数取模,所以gcd(a,p)1)a*b1(mod p) > b1/a…

[Algorithm][动态规划][简单多状态DP问题][按摩师][打家劫舍Ⅱ][删除并获得点数][粉刷房子]详细讲解

目录 1.按摩师1.题目链接2.算法思路详解3.代码实现 2.打家劫舍 II1.题目链接2.算法思路详解3.代码实现 3.删除并获得点数1.题目链接2.算法思路详解3.代码实现 4.粉刷房子1.题目链接2.算法思路详解3.代码实现 1.按摩师 1.题目链接 按摩师 2.算法思路详解 思路: 确…

大模型提示词Prompt学习

引言 关于chatGPT的Prompt Engineer,大家肯定耳朵都听起茧了。但是它的来由?,怎么能用好?很多人可能并不觉得并不是一个问题,或者说认定是一个很快会过时的概念。但其实也不能说得非常清楚(因为觉得没必要深…

Redis第18讲——Redis和Redission实现延迟消息

即使不是做电商业务的同学,也一定知道订单超时关闭这种业务场景,这个场景大致就是用户下单后,如果在一定时间内未支付(比如15分钟、半小时),那么系统就会把这笔订单给关闭掉。这个功能实现的方式有很多种&a…

unity开发Hololens 制作滑动框

一定要做到最后一步,才会有效果 1、创建空物体 ,并添加组件 创建空物体 命名ScrollingObjectCollection, 添加组件如下图 下面是各个组件展开的内容 2、在ScrollingObjectCollection 下面创建两个空物体,分别命名Container、Clipping…

运筹说 第115期 | 排队论经典例题讲解

通过前几期的学习,我们已经学会了排队论的基本概念、生灭过程和Poisson过程,等待制排队模型、混合制排队模型、其他排队模型以及排队系统优的定义与相关求解方法。在实际工作中,我们能发现排队论在经济管理中有着许多应用,本期小编…

大数据量上传FTP

背景 笔者有一个需求是把将近一亿条数据上传到FTP服务器中,这些数据目前是存储在mysql中,是通过关联几张表查询出来的,查询出来的数据结果集一共是6个字段。要求传输的时候拆分成一个个小文件,每个文件大小不能超过500M。我的测试…

FuTalk设计周刊-Vol.052

#AI漫谈 热点捕手 1.ChatGPT 大更新!GPT-4 开始又变聪明了 OpenAI 官方宣布,新版 GPT-4 Turbo 今天开始向所有付费 ChatGPT 用户开放。 链接https://www.pconline.com.cn/focus/1733/17330089.html 2.刷爆多模态任务榜单!贾佳亚团队Mini-G…

21.2zabbix低级自动发现-mysql多实例

配置mysql多实例 注释:自动发现:创建监控主机;低级自动发现:创建监控项 mysql单实例是直接yum安装,开启mysql多实例 准备配置文件 #mysql3307实例 cp /etc/my.cnf /etc/my3307.cnf vim /etc/my3307.cnf [mysqld] dat…

产品经理-流程图结构图(四)

1. 流程图 1.1 概念 为了达到特定的目标而进行的一系列有逻辑性的操作步骤,由两个及以上的步骤,完成一个完整的行为的过程,可称之为流程 1.2 产品经理为什么需要绘制流程图? 保证产品的使用逻辑合理顺畅向项目组其他成员清晰的…

代码随想录算法训练营Day4|24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、 142.环形链表II、面试题 02.07. 链表相交

24. 两两交换链表中的节点 这道题的关键在于: 1、在置换两个节点的时候,当前节点需要在这俩节点之前一个节点。并且要提前保存cur.next以及cur.next.next。 2、每次置换完一组节点,cur cur.next.next 3、判断结束的标志:奇数个节点&#xf…

如何禁止U盘拷贝文件|禁止U盘使用的软件有哪些

禁止U盘拷贝文件的方法有很多,比如使用注册表、组策略编辑器等,但这些方法都适合个人,不适合企业,因为企业需要对下属多台电脑进行远程管控,需要方便、省时、省力的方法。目前来说,最好的方法就是使用第三方…