当前位置: 首页 > news >正文

python数据分析——数据分类汇总与统计

数据分类汇总与统计

  • 前言
  • 一、Groupby分类统计
    • 语法
    • 按列分组
      • 示例一
      • 示例二
      • 示例三
    • 遍历各分组
      • 示例
    • 使用字典和Series分组
      • 示例
    • 使用函数分组
      • 示例
  • 二、数据聚合
    • groupby的聚合函数
      • 示例一
      • 示例二
    • 逐列及多函数应用
      • 示例一
      • 示例二
    • 返回不含行索引的聚合数据
      • 示例
  • 三、一般性的“拆分-应用-合并”
    • 示例一
    • 示例二
    • 示例三
    • 示例四
  • 四、数据透视表与交叉表
    • 数据透视表
      • pivot()
      • 使用示例
      • 总结
      • 示例
    • 交叉表
      • crosstab()
      • 参数说明
      • 示例一
      • 示例二
  • 五、数据采样
    • resample()
    • 参数说明
    • 示例一
    • 示例二


前言

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

数据分类汇总与统计是指将大量的数据按照不同的分类方式进行整理和归纳,然后对这些数据进行统计分析,以便于更好地了解数据的特点和规律。
在这里插入图片描述

在当今这个大数据的时代,数据分析已经成为了我们日常生活和工作中不可或缺的一部分。Python作为一种高效、简洁且易于学习的编程语言,在数据分析领域展现出了强大的实力。本文将介绍如何使用Python进行数据分类汇总与统计,帮助读者更好地理解和应用数据。

首先,我们需要导入一些常用的Python库,如pandasnumpymatplotlib等。这些库提供了丰富的数据处理、分析和可视化功能,使得Python在数据分析领域独具优势。

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

接下来,我们可以使用pandas库来加载和处理数据。pandas提供了一个名为DataFrame的数据结构,它可以方便地存储和处理表格型数据。假设我们有一个包含学生信息的CSV文件,我们可以使用以下代码将其加载到DataFrame中:

df = pd.read_csv('student_data.csv')

在加载数据后,我们可以使用pandas提供的方法对数据进行分类汇总。例如,我们可以按照学生的性别进行分组,并计算每个性别的学生人数:

gender_count = df.groupby('Gender')['Name'].count()
print(gender_count)

此外,我们还可以使用pandas提供的聚合函数对数据进行更复杂的统计分析。例如,我们可以计算每个性别学生的平均年龄:

age_mean = df.groupby('Gender')['Age'].mean()
print(age_mean)

除了分类汇总和统计分析,我们还可以使用matplotlib库对数据进行可视化。例如,我们可以使用柱状图展示不同性别学生的人数:

plt.bar(gender_count.index, gender_count.values)
plt.xlabel('Gender')
plt.ylabel('Number of Students')
plt.title('Gender Distribution')
plt.show()

同样地,我们还可以使用其他类型的图表来展示数据,如折线图、散点图等。

在实际的数据分析过程中,我们可能需要对数据进行清洗、转换和预处理,以满足特定的分析需求。Python提供了丰富的数据处理工具,如数据清洗、缺失值处理、异常值检测等,使得数据分析过程更加高效和准确。

总之,Python作为一种强大的数据分析工具,可以帮助我们轻松地进行数据分类汇总与统计。通过掌握pandasnumpymatplotlib等库的使用方法,我们可以更好地理解和应用数据,为实际工作和研究提供有力的支持。


一、Groupby分类统计

Hadley Wickham创造了一个用于表示分组运算的术语“split-apply-combine" (拆分-应用-合并)。第一个阶段,pandas对象中的数据会根据你所提供的一个或多个键被拆分(split)为多组。拆分操作是在对象的特定轴上执行的。

例如, DataFrame可以在其行(axis=0)或列(axis=1)上进行分组。然后,将一个函数应用(apply)到各个分组并产生一个新值。最后,所有这些函数的执行结果会被合并(combine)到最终的结果对象中。结果对象的形式一般取决于数据上所执行的操作。下图大致说明了一个简单的分组聚合过程。
在这里插入图片描述

语法

Pandas中的Groupby是一个强大的功能,用于将数据集按照指定的条件进行分组和聚合操作。它类似于SQL中的GROUP BY语句,可以对数据进行分组并对每个组进行统计、计算或其他操作。

下面是一些常见的使用Groupby的操作:

  1. 分组操作:通过指定一个或多个列名,将数据集分成不同的组。例如,可以将一个销售数据集按照不同的产品进行分组。
grouped = df.groupby('Product')
  1. 聚合操作:对每个分组进行聚合操作,例如计算每个组的总和、平均值、最大值等。
grouped.sum() # 计算每个组的总和
grouped.mean() # 计算每个组的平均值
grouped.max() # 计算每个组的最大值
  1. 过滤操作:根据条件过滤掉某些组或行。
grouped.filter(lambda x: x['Sales'].sum() > 1000) # 过滤掉销售总额小于1000的组
  1. 转换操作:对每个分组进行转换操作,例如计算每个组的排名、百分位数等。
grouped.rank() # 计算每个组的排名
grouped.quantile(0.5) # 计算每个组的中位数
  1. 组合操作:将多个分组的结果进行合并。
grouped1 = df.groupby('Product')
grouped2 = df.groupby('Category')
grouped1['Sales'].sum() + grouped2['Profit'].sum() # 将按产品和按类别分组的销售额和利润分别相加
  1. 迭代操作:对每个分组进行迭代操作。
for name, group in grouped:print(name)print(group)

这只是Groupby的一些常见用法,实际上还有很多其他功能和选项可以探索和使用。PandasGroupby功能非常灵活和强大,可以大大简化数据集的分析和处理过程。

按列分组

按列分组分为以下三种模式:

  1. df.groupby(col),返回一个按列进行分组的groupby对象;
  2. df.groupby([col1,col2]),返回一个按多列进行分组的groupby对象;
  3. df.groupby(col1)[col2]或者 df[col2].groupby(col1),两者含义相同,返回按列col1进行分组后col2的值;

首先生成一个表格型数据集:

import pandas as pd
import numpy as np
df = pd.DataFrame({'key1':['a','a','b','b','a'],'key2':['one','two','one','two','one'],'data1':np.random.randn(5),'data2':np.random.randn(5)})
df

在这里插入图片描述

gg = df.groupby(df['key1'])
gg

示例一

【例1】采用函数df.groupby(col),返回一个按列进行分组的groupby对象。

程序代码如下:在这里插入图片描述

关键技术:变量gg是一个GroupBy对象。

它实际上还没有进行任何计算,只是含有一些有关分组键df[‘key1’]的中间数据而已。换句话说,该对象已经有了接下来对各分组执行运算所需的一切信息。groupby对象不能直接打印输出,可以调用list函数显示分组,还可以对这个对象进行各种计算。

print(list(gg))

在这里插入图片描述

示例二

【例2】采用函数df.groupby([col1,col2]),返回一个按多列进行分组的groupby对象。

关键技术:对于由DataFrame产生的GroupBy对象,如果用一个(单个字符串)或一组(字符串数组)列名对其进行索引,就能实现选取部分列进行聚合的目的。

dfg = df.groupby(['key1','key2'])
print(list(dfg))  #分成a one a two b one b two 四组

在这里插入图片描述

示例三

【例3】采用groupby函数针对某一列的值进行分组。

关键技术: df.groupby(col1)[col2]或者df[col2].groupby(col1),两者含义相同,返回按列col1进行分组后,col2的值。

grouped = df['data1'].groupby(df['key1'])
print(list(grouped))
grouped2 = df.groupby(df['key1'])['data1']
print(list(grouped2))

在这里插入图片描述

遍历各分组

GroupBy对象支持迭代,可以产生一组二元元组(由分组名和数据块组成)。

示例

【例4】对groupby对象进行迭代,并打印出分组名称和每组元素。

关键技术:采用for函数进行遍历, name表示分组名称, group表示分组数据。

程序代码如下所示:

for name,group in df.groupby(df['key1']):print('name:',name)print('group:',group)

在这里插入图片描述

对于多重键的情况,元组的第一个元素将会是由键值组成的元组:

for (k1,k2),group in df.groupby(['key1','key2']):print((k1,k2))print(group)

在这里插入图片描述

当然,你可以对这些数据片段做任何操作。有一个你可能会觉得有用的运算,将这些数据片段做成一个字典:

pieces = dict(list(df.groupby('key1')))
print(pieces)
pieces['b']

在这里插入图片描述

groupby默认是在axis=0上进行分组的,通过设置也可以在其他任何轴上进行分组。拿上面例子中的df来说,我们可以根据dtype对列进行分组:

print(df.dtypes)
grouped = df.groupby(df.dtypes,axis = 1)

在这里插入图片描述

可以如下打印分组:

for dtype,group in grouped:print(dtype)print(group)

在这里插入图片描述

使用字典和Series分组

除数组以外,分组信息还可以其他形式存在。

示例

【例5】利用字典或series进行分组。

关键技术:可以将定义的字典传给a=groupby,来构造数组,也可以直接传递字典。

程序代码如下所示:

people = pd.DataFrame(np.random.randn(5,5),columns = ['a','b','c','d','e'],index = ['Joe','Steve','Wes','Jim','Travies'])
people .iloc[2:3,[1,2]] = np.nan
people

在这里插入图片描述

现在,假设已知列的分组关系,并希望根据分组计算列的和:

mapping = {'a':'red','b':'red','c':'blue','d':'blue','e':'red','f':'orange'}

在这里插入图片描述

现在,你可以将这个字典传给groupby,来构造数组,但我们可以直接这传递字典:

by_cloumn = people.groupby(mapping,axis = 1)
by_cloumn.sum()

在这里插入图片描述

Series也有同样的功能,它可以被看做一个固定大小的映射:

map_Series = pd.Series(mapping)
print(map_Series)
people.groupby(map_Series,axis = 1).count()

在这里插入图片描述

使用函数分组

比起使用字典或Series,使用Python函数是一种更原生的方法定义分组映射。

示例

【例6】以上一小节的DataFrame为例,使用len函数计算一个字符串的长度,并用其进行分组。

关键技术:任何被当做分组键的函数都会在各个索引值上被调用一次,其返回值就会被用作分组名称。

程序代码如下所示:

people.groupby(len).sum()

在这里插入图片描述

将函数跟数组、列表、字典、Series混合使用也不是问题,因为任何东西在内部都会被转换为数组

key_list = ['one','one','one','two','two']
people.groupby([len,key_list]).min()

在这里插入图片描述

二、数据聚合

聚合指的是任何能够从数组产生标量值的数据转换过程,比如meancountmin以及sum等函数。你可能想知道在GroupBy对象上调用mean()时究竟发生了什么。

许多常见的聚合运算(如表5.1所示)都有进行优化。然而,除了这些方法,你还可以使用其它的。

下表是经过优化的groupby方法:
在这里插入图片描述

在使用groupby进行分组后,可以使用以下聚合函数进行数据聚合:

  • count():计算每个分组中的非缺失值的数量。
  • sum():计算每个分组中的所有值的和。
  • mean():计算每个分组中的所有值的平均值。
  • median():计算每个分组中的所有值的中位数。
  • min():计算每个分组中的所有值的最小值。
  • max():计算每个分组中的所有值的最大值。
  • std():计算每个分组中的所有值的标准差。
  • var():计算每个分组中的所有值的方差。
  • size():计算每个分组中的元素数量。
  • agg():自定义聚合函数,可以使用numpy函数或自己定义的函数进行聚合。

这些聚合函数可以应用于单个列或多个列,也可以同时应用于多个列。

groupby的聚合函数

首先创建一个dataframe对象:

示例一

【例8】使用groupby聚合函数对数据进行统计分析。

df = pd.DataFrame({'key1':['a','a','b','b','a'],'key2':['one','two','one','two','one'],'data1':np.random.randn(5),'data2':np.random.randn(5)})
df

在这里插入图片描述
关键技术:采用describe()函数求各种统计值:

df['data1'].groupby(df['key1']).describe()

在这里插入图片描述

关键技术: sizecount的区别是: size计数时包含NaN值,而count不包含NaN值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

示例二

【例9】采用agg()函数对数据集进行聚合操作。

关键技术:采用agg()函数进行聚合操作。

agg函数也是我们使用pandas进行数据分析过程中,针对数据分组常用的一条函数。如果说用groupby进行数据分组,可以看做是基于行(或者说是index)操作的话,则agg函数则是基于列的聚合操作。

首先建立例数据集:

cities = pd.DataFrame(np.random.randn(5,5),columns = ['a','b','c','d','e'],index = ['shenzheng' ,'guangzhou','beijing','nanjing','haerbin'])
cities .iloc[2:4,2:4] = np.nan
cities

10b2.png)
在这里插入图片描述

采用agg()函数计算各个城市的求和与均值:

cities.agg(['sum','mean'])

在这里插入图片描述

cities[['shenzhen','guangzhou','beijing','nanjing','haerbin']].agg(['sum','mean'])

在这里插入图片描述

采用agg()函数针对不同的城市,使用不同的聚合函数:

cities.agg({'shenzhen':['sum'],'beijing':['mean'],'nanjing':['sum','mean']})

在这里插入图片描述

逐列及多函数应用

示例一

【例10】同时使用groupby函数和agg函数进行数据聚合操作。

关键技术: groupby函数和agg函数的联用。

在我们用pandas对数据进行分组聚合的实际操作中,很多时候会同时使用groupby函数和agg函数。

首先创建一个dataframe对象:

df = pd.DataFrame({'Country':['China','China', 'India', 'India', 'America', 'Japan', 'China', 'India'], 'Income':[10000, 10000, 5000, 5002, 40000, 50000, 8000, 5000],'Age':[50, 43, 34, 40, 25, 25, 45, 32]})
df

在这里插入图片描述

下面我们同时使用groupbyagg函数对该数据表进行分组聚合操作。

df_inc=df.groupby('Country').agg(['min','max','mean'])
df_inc

在这里插入图片描述

多重函数以字典形式传入:

df_age={'Age':['max','min','mean']}
df.groupby('Country').agg(df_age)

在这里插入图片描述

在我们对数据进行聚合的过程中,除了使用sum()max ()等系统自带的聚合函数之外,大家也可以使用自己定义的函数,使用方法也是一样的。

df = pd.DataFrame({'key1':['a','a','b','b','a'],'key2':['one','two','one','two','one'],'data1':np.random.randn(5),'data2':np.random.randn(5)})
df

cb.png)

grouped = df.groupby(df['key1'])
print(list(grouped))

在这里插入图片描述

示例二

【例11】同时使用groupby函数和agg函数进行数据聚合操作。并且一次应用多个函数。

关键技术:对于自定义或者自带的函数都可以用agg传入,一次应用多个函数。传入函数组成的list。所有的列都会应用这组函数。

使用read_csv导入数据之后,我们添加了一个小费百分比的列tip_pct:在这里插入图片描述
如果希望对不同的列使用不同的聚合函数,或一次应用多个函数,将通过下面的例来进行展示。首先,根据daysmokertips进行分组,然后采用agg()方法一次应用多个函数。


如果传入一组函数或函数名,得到的DataFrame的列就会以相应的函数命名。如果不想接收GroupBy自动给出的那些列名,那么如果传入的是一个由(name,function)元组组成的列表,则各元组的第一个元素就会用作DataFrame的列名(可以将这种二元元组列表看做一个有序映射)

在这里插入图片描述
对于DataFrame,你可以定义一组应用于全部列的一组函数,或不列应用不同的函数。

假设我们想要对tip_pcttotal_bill列计算三个信息:
在这里插入图片描述
上面例子的结果DataFrame拥有层次化的列,这相当于分别对各列进行聚合,然后将结果组装到一起,使用列名用作keys参数:
在这里插入图片描述

这里也可以传入带有自定义名称的一组元组:在这里插入图片描述
假设你想要对一个列或不同的列应用不同的函数。具体的办法是向agg传入一个从列名映射到函数的字典:
在这里插入图片描述
只有将多个函数应用到至少一列时,DataFrame才会拥有层次化的列

返回不含行索引的聚合数据

到目前为止,所有例中的聚合数据都有由唯一的分组键组成的索引(可能还是层次化的)。由于并不总是需要如此,所以你可以向groupby传入as_index=False以禁用该功能。

示例

【例12】采用参数as_index返回不含行索引的聚合数据。

关键技术:可以向groupby传入as_index=False以禁用索引功能。

在这里插入图片描述

三、一般性的“拆分-应用-合并”

最通用的GroupBy方法是apply,本节将重点讲解它该函数。

Apply函数会将待处理的对象拆分成多个片段,然后对各片段调用传入的函数,最后尝试将各片段组合到一起。

示例一

【例13】采用之前的小费数据集,根据分组选出最高的5个tip-pct值。

关键技术:在调用某对象的apply方法时,其实就是把这个对象当作参数传入到后面的匿名函数中。

首先,编写一个选取指定列具有最大值的行的函数:
在这里插入图片描述
现在,如果对smoker分组并用该函数调用apply,就会得到:在这里插入图片描述

top函数在DataFrame的各个片段调用,然后结果由pandas.concat组装到一起,并以分组名称进行了标记。于是,最终结果就有了一个层次化索引,其内层索引值来自原DataFrame

示例二

【例14】在apply函数中设置其他参数和关键字。

关键技术:如果传给apply的函数能够接受其他参数或关键字,则可以将这些内容放在函数名后面一并传入:

在这里插入图片描述

示例三

【例15】在apply函数中设置禁止分组键。

关键技术:分组键会跟原始对象的索引共同构成结果对象中的层次化索引。将group_keys= False传入groupby即可禁止该效果。
在这里插入图片描述

示例四

【例16】用特定于分组的值填充缺失值

对于缺失数据的清理工作,有时你会用dropna将其替换掉,而有时则可能会希望用一个固定值或由数据集本身所衍生出来的值去填充NA值。

关键技术:假设你需要对不同的分组填充不同的值。可以将数据分组,并使用apply和一个能够对各数据块调用fillna的函数即可。

下面是一些有关美国几个州的示例数据,这些州又被分为东部和西部:

在这里插入图片描述

['East'] * 4产生了一个列表,包括了['East']中元素的四个拷贝。将这些列表串联起来。
在这里插入图片描述

我们可以用分组平均值去填充NA值:

在这里插入图片描述

也可以在代码中预定义各组的填充值。

由于分组具有一个name属性,所以我们可以拿来用一下:在这里插入图片描述

四、数据透视表与交叉表

数据透视表

pivot()的用途就是,将一个dataframe的记录数据整合成表格(类似Excel中的数据透视表功能),pivot_table函数可以产生类似于excel数据透视表的结果,相当的直观。其中参数index指定“行”键,columns指定“列”键。

Pandas是一个强大的数据分析工具,而pivot()函数是Pandas中的一个重要函数,用于数据透视操作。它可以根据某些列的值将数据重塑为新的形式,使之更易于分析和理解。下面详细解释pivot()函数的用法和参数。

pivot()

pivot()函数的形式如下:

DataFrame.pivot(index=None, columns=None, values=None)

参数说明:

  • index:指定数据透视后的行索引。可以是单个列名、多个列名组成的列表或者数组,表示数据透视后的行的唯一标识。
  • columns:指定数据透视后的列索引。可以是单个列名、多个列名组成的列表或者数组,表示数据透视后的列的唯一标识。
  • values:指定数据透视后的数值。可以是单个列名或者多个列名组成的列表或者数组,表示数据透视后的数值的来源。

使用示例

假设我们有一个包含姓名、性别、年龄和成绩的数据集,如下所示:

import pandas as pddata = {'姓名': ['张三', '李四', '王五', '赵六', '钱七'],'性别': ['男', '男', '女', '男', '女'],'年龄': [20, 21, 19, 22, 20],'成绩': [80, 78, 85, 75, 90]
}df = pd.DataFrame(data)

我们可以使用pivot()函数将这个数据集进行透视,例如将姓名作为行索引,性别作为列索引,成绩作为数值:

df_pivot = df.pivot(index='姓名', columns='性别', values='成绩')

运行结果如下所示:

性别   女   男
姓名        
李四 NaN  78
张三 NaN  80
赵六 NaN  75
钱七  90 NaN
王五  85 NaN

在运行pivot()函数后,我们可以看到结果是一个新的DataFrame对象,行索引为姓名,列索引为性别,数值为成绩。对于没有对应数值的单元格,Pandas会用NaN填充。

总结

Pandas的pivot()函数是一个非常有用的数据透视工具,可以根据指定的行、列和数值对数据进行重塑操作,方便数据分析和统计计算。通过合理使用pivot()函数,可以快速实现数据透视的功能。

示例

【例17】对于DataFrame格式的某公司销售数据workdata.csv,存储在本地的数据的形式如下,请利用Python的数据透视表分析计算每个地区的销售总额和利润总额。
在这里插入图片描述
关键技术:在pandas中透视表操作由pivot_table()函数实现,其中在所有参数中,valuesindexcolumns最为关键,它们分别对应Excel透视表中的值、行、列。

程序代码如下所示:
在这里插入图片描述

交叉表

交叉表采用crosstab函数,可是说是透视表的一部分,是参数aggfunc=count情况下的透视表。

pandascrosstab是一个用于计算交叉频率表的函数。交叉频率表是一种展示两个或多个变量之间关系的统计表格。pandascrosstab函数可以根据给定的数据和索引来计算这些交叉频率表。

crosstab()

crosstab函数的语法如下:

pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False)

参数说明

  • index:设置交叉表的行索引。
  • columns:设置交叉表的列索引。
  • values:可选参数,用于填充交叉表的数据。
  • rownames:可选参数,用于设置交叉表的行名称。
  • colnames:可选参数,用于设置交叉表的列名称。
  • aggfunc:可选参数,用于设置交叉表的聚合函数。
  • margins:可选参数,用于计算行和列的总计。
  • margins_name:可选参数,用于设置总计的名称。
  • dropna:可选参数,用于控制是否删除缺失值。
  • normalize:可选参数,用于控制是否对交叉表进行标准化。

下面是一个示例,展示了如何使用pandascrosstab函数计算交叉频率表:

import pandas as pd# 创建示例数据
data = {'Gender': ['Male', 'Female', 'Male', 'Female', 'Male', 'Female'],'AgeGroup': ['18-25', '26-35', '18-25', '26-35', '36-45', '36-45']
}df = pd.DataFrame(data)# 计算交叉频率表
cross_tab = pd.crosstab(df['Gender'], df['AgeGroup'])
print(cross_tab)

输出结果如下:

AgeGroup  18-25  26-35  36-45
Gender                       
Female        1      1      1
Male          1      1      1

这个交叉频率表展示了不同性别和年龄组的人数。

crosstab函数还可以使用其他参数来进一步定制交叉频率表,例如设置行和列的名称、使用聚合函数计算交叉表的值等。你可以根据具体需求来使用这些参数。

示例一

【例19】根据国籍和用手习惯对这段数据进行统计汇总。

关键技术:频数统计时,使用交叉表(crosstab)更方便。传入margins=True参数(添加小计/总计) ,将会添加标签为ALL的行和列。

首先给出数据集:
在这里插入图片描述
对不同国家的用手习惯进行统计汇总
在这里插入图片描述

示例二

【例20】采用小费数据集,对timeday列同时进行统计汇总。

关键技术: crosstab的前两个参数可以是数组或Series,或是数组列表。

在这里插入图片描述

五、数据采样

resample()pandas库中用于时间序列数据重采样的一个方法。它可以改变时间序列数据的频率,将数据从高频率转换为低频率(如从天到月),或者将数据从低频率转换为高频率(如从月到天)。重采样可以帮助我们对数据进行更好的分析和可视化。

resample()

resample()方法的语法如下:

DataFrame.resample(rule, axis=0, closed=None, label=None, convention='start', kind=None, loffset=None, base=0, on=None, level=None, origin='start_day', offset=None)

参数说明

  • rule:重采样规则,可以是字符串(例如’D’表示按天重采样,'M’表示按月重采样),也可以是pandas的一个偏移字符串(例如pandas.DateOffset对象)。
  • axis:指定重采样的轴,默认为0,表示对行进行重采样。
  • closed:指定左闭右闭区间还是左闭右开区间,默认为None,表示右闭。
  • label:指定重采样结果的标签的位置,默认为None,表示重采样结果是标签区间的左边界。
  • convention:指定重采样结果的一个整数倍数的位置,默认为’start’,表示结果是一个标签区间的开始位置。
  • kind:指定重采样方法,默认为None,表示使用默认方法,可以是’shill’,‘pad’, ‘ffill’, 'bfill’等。
  • loffset:指定结果的行索引或列名向前或向后偏移的时间量,默认为None
  • base:指定抽样间隔的基数,默认为0。
  • on:指定重采样的列,默认为None,表示对整个DataFrame进行重采样。
  • level:指定重采样的行索引级别或列级别,默认为None
  • origin:指定重采样结果的时间标签,默认为’start_day’,表示时间标签为开始日期。
  • offset:指定重采样时对时间频率的偏移。

下面我们来看几个具体的例子:

首先,我们创建一个示例DataFrame,包含日期和销售额数据:

import pandas as pd
import numpy as npdata = {'date': pd.date_range('2020-01-01', periods=10, freq='D'),'sales': np.random.randint(1, 100, size=10)}
df = pd.DataFrame(data)
  1. 按月重采样:
df.resample('M', on='date').sum()

结果如下:

            sales
date             
2020-01-31    149
2020-02-29    192
  1. 按周重采样并求平均值:
df.resample('W', on='date').mean()

结果如下:

                sales
date                 
2020-01-05  34.833333
2020-01-12  57.333333
2020-01-19  23.000000
2020-01-26  46.000000
2020-02-02  84.500000
  1. 按季度重采样并求最小值和最大值:
df.resample('Q', on='date').agg({'sales': ['min', 'max']})

结果如下:

           sales    min max
date                
2020-03-31     5  91

通过上面的例子,我们可以看到resample()方法可以帮助我们方便地对时间序列数据进行重采样,并进行各种统计计算。详细的用法可以参考pandas官方文档。

示例一

【例21】对于从tushare数据库平台获取到的股票交易数据集stockdata.csv,包括股票的开盘价格,最高价格,收盘价格,最低价格,成交量等特征,股票数据采集时间为2021/01/11-2022/01/10,默认采集时间以“天”为单位,请利用Python对数据进行以“周”为单位的采样

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

示例二

【例22】对于上面股票数据集文件stockdata.csv,请利用Python对数据进行以“月”为单位的采样。

关键技术:可以通过resample()函数对数据进行采样,并设置参数为’M’,表示以“月”为单位的采样。程序代码如下所示在这里插入图片描述

输出结果如下所示:在这里插入图片描述
对于上面股票数据集文件stockdata.csv,请利用Python对数据进行以“年"为单位的采样。
在这里插入图片描述

输出结果如下所示:
在这里插入图片描述


相关文章:

python数据分析——数据分类汇总与统计

数据分类汇总与统计 前言一、Groupby分类统计语法按列分组示例一示例二示例三 遍历各分组示例 使用字典和Series分组示例 使用函数分组示例 二、数据聚合groupby的聚合函数示例一示例二 逐列及多函数应用示例一示例二 返回不含行索引的聚合数据示例 三、一般性的“拆分-应用-合…...

iOS17系统适配

iOS17 新功能 文章目录 iOS17 新功能iOS17支持哪几款机型Xcode15新特性iOS17-开发适配指南 横屏待机 在iOS 17中,还带来了横屏待机功能,苹果将这个新功能命名为“Standby”模式,为 iPhone 带来了全新的玩法。iPhone启用之后,默认情…...

树洞陪聊陪玩交友程序系统源码,解锁交友新体验

在繁忙的都市生活中,你是否渴望找到一片属于自己的秘密花园,倾诉心声、分享快乐?今天,就让我带你走进这片名为“树洞”的神秘之地,感受陪聊陪玩交友的全新魅力! 🌳树洞陪聊陪玩交友程序系统 你…...

区间动态规划——最长回文子序列长度(C++)

把夜熬成粥,然后喝了它。 ——2024年7月1日 书接上回:区间动态规划——最长回文子串(C)-CSDN博客,大家有想到解决办法吗? 题目描述 给定一个字符串s(s仅由数字和英文大小写字母组成&#xff0…...

无人机远程控制:北斗短报文技术详解

无人机(UAV)技术的快速发展和应用,使得远程控制成为了一项关键技术。无人机远程控制涉及无线通信、数据处理等多个方面,其中北斗短报文技术以其独特的优势,在无人机远程控制领域发挥着重要作用。本文将详细解析无人机远…...

240627_关于CNN中图像维度变化问题

240627_关于CNN中图像维度变化问题 在学习一些经典模型时,其中得维度变化关系总搞不太明白,集中学习了以下,在此作以梳理总结: 一般来说涉及到的维度变换都是四个维度,当batch size4,图像尺寸为640*640&a…...

食品行业怎么用JSON群发短信

食品作为日常生活不可缺少的元素,市场需求是很稳定的,但是份额就那么多,商家都要来抢占的话,就需要运营推广各凭本事,市场运营中选择合适的推广方式,可以增加店铺销售额,很多实体店或商城都会建…...

MySQL高级-MVCC-隐藏字段

文章目录 1、介绍2、测试2.1、进入服务器中的 /var/lib/mysql/atguigu/2.2、查看有主键的表 stu2.3、查看没有主键的表 employee2.3.1、创建表 employee2.3.2、查看表结构及其其中的字段信息 1、介绍 ---------------- | id | age | name | ---------------- | 1 | 1 | Js…...

探索PcapPlusPlus开源库:网络数据包处理与性能优化

文章目录 0. 本文概要1. PcapPlusPlus介绍1.1 概述1.2主要特性和功能1.3 PcapPlusPlus 主要模块关系和依赖1.4 网络协议层处理过程 2. 实例2.1 基于 PcapPlusPlus 的应用程序设计和封装流程:2.2 多线程示例代码2.3 代码说明: 3. 程序性能进一步优化3.1 避…...

深入理解SSH:网络安全的守护者

在当今数字化时代,网络安全已成为全球关注的焦点。随着网络攻击手段的不断升级,保护数据传输的安全性变得尤为重要。SSH(Secure Shell)作为一种安全的网络协议,为远程登录和网络服务提供了强大的安全保障,成…...

DDD学习笔记四

领域模型的构建 基础领域模型的基本组成有名称、属性、关联、职责、事件和异常 发掘领域概念3种策略: 1)学习已有系统,重用已有模型 2)使用分类标签。分类标签来源于领域,需要我们研究一些资料并做一些提炼。从采用5W…...

Head First设计模式中的典型设计模式解析与案例分析

Head First设计模式中的典型设计模式解析与案例分析 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 《Head First设计模式》是一本广受欢迎的书籍&#xff0c…...

iptables 防火墙(一)

iptables 防火墙(一) 一、Linux 防火墙基础防火墙分类 二、iptables 的表、链结构规则表规则链数据包过滤的匹配流程 三、编写防火墙规则iptables 的安装iptables的基本语法规则的匹配条件通用匹配隐含匹配显式匹配 四、总结 在网络安全的世界里&#xf…...

数据库物理结构设计-定义数据库模式结构(概念模式、用户外模式、内模式)、定义数据库、物理结构设计策略

一、引言 如何基于具体的DBMS产品,为数据库逻辑结构设计的结果,即关系数据库模式,制定适合应用要求的物理结构 1、在设计数据库物理结构前,数据库设计人员首先 要充分了解所用的DBMS产品的功能、性能和特点,包括提供…...

QT加载安装外围依赖库的翻译文件后翻译失败的现象分析:依赖库以饿汉式的形式暴露单例接口导致该现象的产生

1、前提说明 VS2019 QtClassLibaryDll是动态库,QtWidgetsApplication4是应用程序。 首先明确:动态库以饿汉式的形式进行单例接口暴露; 然后,应用程序加载动态库的翻译文件并进行全局安装; // ...QTranslator* trans = new QTranslator();//qDebug() << trans->…...

13_旷视轻量化网络--ShuffleNet V2

回顾一下ShuffleNetV1:08_旷视轻量化网络--ShuffleNet V1-CSDN博客 1.1 简介 ShuffleNet V2是在2018年由旷视科技的研究团队提出的一种深度学习模型&#xff0c;主要用于图像分类和目标检测等计算机视觉任务。它是ShuffleNet V1的后续版本&#xff0c;重点在于提供更高效的模…...

Linux系统编程--进程间通信

目录 1. 介绍 1.1 进程间通信的目的 1.2 进程间通信的分类 2. 管道 2.1 什么是管道 2.2 匿名管道 2.2.1 接口 2.2.2 步骤--以父子进程通信为例 2.2.3 站在文件描述符角度-深度理解 2.2.4 管道代码 2.2.5 读写特征 2.2.6 管道特征 2.3 命名管道 2.3.1 接口 2.3.2…...

docker-本地部署-后端

前置条件 后端文件 这边是一个简单项目的后端文件目录 docker服务 镜像文件打包 #命令行 docker build -t author/chatgpt-ai-app:1.0 -f ./Dockerfile .红框是docker所在文件夹 author&#xff1a;docker用户名chatgpt-ai-app&#xff1a;打包的镜像文件名字:1.0 &#…...

TLS + OpenSSL + Engine + PKCS#11 + softhsm2 安全通信

引擎库路径只有在 /lib 下才能被 "LOAD" 识别到&#xff0c;OpenSSL的ReadMe给的示例在/lib&#xff0c;大概是在构建OpenSSL时默认的configure指定了lib路径 // #define PKCS11_ENGINE_PATH "/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so" #define …...

Unity实现简单的MVC架构

文章目录 前言MVC基本概念示例流程图效果预览后话 前言 在Unity中&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;框架是一种架构模式&#xff0c;用于分离游戏的逻辑、数据和用户界面。MVC模式可以帮助开发者更好地管理代码结构&#xff0c;提高代码的可维护性…...

【简单讲解下OneFlow深度学习框架】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…...

FastGPT 调用Qwen 测试Hello world

Ubuntu 安装Qwen/FastGPT_fastgpt message: core.chat.chat api is error or u-CSDN博客 参考上面文档 安装FastGPT后 登录&#xff0c; 点击右上角的 新建 点击 这里&#xff0c;配置AI使用本地 ollama跑的qwen模型 问题&#xff1a;树上有3只鸟&#xff0c;开了一枪&#…...

Golang-GMP

GMP调度 golang-GMP语雀笔记整理 GMP调度设计目的&#xff0c;为何设计GMP?GMP的底层实现几个核心数据结构GMP调度流程 设计目的&#xff0c;为何设计GMP? 无论是多进程、多线程目的都是为了并发提高cpu的利用率&#xff0c;但多进程、多线程都存在局限性。比如多进程通过时…...

【PythonWeb开发】Flask自定义模板路径和静态资源路径

在大型的 Flask 项目中&#xff0c;确实可能会有多个子应用&#xff08;Blueprints&#xff09;&#xff0c;每个子应用可能都有自己的静态文件和模板。为了更好地管理和组织这些资源&#xff0c;可以使用static_folder 和template_folder 属性来统一管理。必须同时设置好主应用…...

Java对象创建过程

在日常开发中&#xff0c;我们常常需要创建对象&#xff0c;那么通过new关键字创建对象的执行中涉及到哪些流程呢&#xff1f;本文主要围绕这个问题来展开。 类的加载 创建对象时我们常常使用new关键字。如下 ObjectA o new ObjectA();对虚拟机来讲首先需要判断ObjectA类的…...

Does a vector database maintain pre-vector chunked data for RAG systems?

题意&#xff1a;一个向量数据库是否为RAG系统维护预向量化分块数据&#xff1f; 问题背景&#xff1a; I believe that when using an LLM with a Retrieval-Augmented Generation (RAG) approach, the results retrieved from a vector search must ultimately be presented…...

Rust-11-错误处理

Rust 将错误分为两大类&#xff1a;可恢复的&#xff08;recoverable&#xff09;和 不可恢复的&#xff08;unrecoverable&#xff09;错误。对于一个可恢复的错误&#xff0c;比如文件未找到的错误&#xff0c;我们很可能只想向用户报告问题并重试操作。不可恢复的错误总是 b…...

自动化测试:使用Postman进行接口测试与脚本编写

Postman 是一种流行的 API 测试工具&#xff0c;广泛应用于开发和测试过程中。它不仅可以用于手动测试&#xff0c;还支持自动化测试和脚本编写&#xff0c;以确保 API 的可靠性和性能。本文将详细介绍如何使用 Postman 进行接口测试与脚本编写&#xff0c;帮助你更高效地进行自…...

ONLYOFFICE 8.1 桌面编辑器测评:引领数字化办公新潮流

目录 前言 下载安装 新功能概述 1.PDF 编辑器的改进 2. 演示文稿中的幻灯片版式 3.语言支持的改进 4. 隐藏“连接到云”板块 5. 页面颜色设置和配色方案 界面设计&#xff1a;简洁大方&#xff0c;操作便捷 性能评测&#xff1a;稳定流畅&#xff0c;高效运行 办公环…...

基于大语言模型LangChain框架:知识库问答系统实践

ChatGPT 所取得的巨大成功&#xff0c;使得越来越多的开发者希望利用 OpenAI 提供的 API 或私有化模型开发基于大语言模型的应用程序。然而&#xff0c;即使大语言模型的调用相对简单&#xff0c;仍需要完成大量的定制开发工作&#xff0c;包括 API 集成、交互逻辑、数据存储等…...

解锁Transformer的鲁棒性:深入分析与实践指南

&#x1f6e1;️ 解锁Transformer的鲁棒性&#xff1a;深入分析与实践指南 Transformer模型自从由Vaswani等人在2017年提出以来&#xff0c;已经成为自然语言处理&#xff08;NLP&#xff09;领域的明星模型。然而&#xff0c;模型的鲁棒性——即模型在面对异常、恶意或不寻常…...

mybatis#号和$区别

在MyBatis中&#xff0c;#{}和${}都是用于实现动态SQL的占位符&#xff0c;但它们在使用场景和安全性上有明显的区别&#xff1a; 用途区别&#xff1a; #{}主要用于传递接口传输过来的具体数据&#xff0c;如参数值&#xff0c;它可以防止SQL注入&#xff0c;因为MyBatis会…...

AI绘画 Stable Diffusion【实战进阶】:图片的创成式填充,竖图秒变横屏壁纸!想怎么扩就怎么扩!

大家好&#xff0c;我是向阳。 所谓图片的创成式填充&#xff0c;就是基于原有图片进行扩展或延展&#xff0c;在保证图片合理性的同时实现与原图片的高度契合。是目前图像处理中常见应用之一。之前大部分都是通过PS工具来处理的。今天我们来看看在AI绘画工具 Stable Diffusio…...

Linux内核 -- 汇编结合ko案例之PMU获取cpu cycle技术

ARMv7汇编实现周期计数读取与清空 本文档详细描述了如何在ARMv7平台上使用汇编语言编写周期计数器读取与清空函数&#xff0c;如何在内核模块中导出这些函数供其他模块调用&#xff0c;以及如何使用Netlink接口供用户态程序进行调用。 1. 汇编函数实现 首先&#xff0c;编写…...

探索 Symfony 框架:工作原理、特点及技术选型

目录 1. 概述 2. Symfony 的工作原理 2.1 MVC 架构 2.2 前端控制器模式 2.3 路由机制 2.4 依赖注入容器 2.5 事件驱动架构 3. Symfony 的特点 3.1 高度可扩展性 3.2 强大的社区支持和生态系统 3.3 优秀的性能和可伸缩性 3.4 严格的代码规范和最佳实践 4. Symfony …...

从万里长城防御体系看软件安全体系建设@安全历史03

长城&#xff0c;是中华民族的一张重要名片&#xff0c;是中华民族坚韧不屈、自强不息的精神象征&#xff0c;被联合国教科文组织列入世界文化遗产名录。那么在古代&#xff0c;长城是如何以其复杂的防御体系&#xff0c;一次次抵御外族入侵&#xff0c;而这些防御体系又能给软…...

ISO 19110操作要求类中的/req/operation/formal-definition详细解释

/req/operation/formal-definition 要求: 每个要素操作实体必须具有一个形式定义&#xff08;formal definition&#xff09;&#xff0c;该定义应明确描述操作的行为和影响。 具体解释 定义 要素操作实体&#xff08;feature operation entity&#xff09;&#xff1a;这…...

豆包大语言模型API调用错误码一览表

本文介绍了您可能从 API 和官方 SDK 中看到的错误代码。 http code说明 400 原因&#xff1a;错误的请求&#xff0c;例如缺少必要参数&#xff0c;或者参数不符合规范等 解决方法&#xff1a;检查请求后重试 401 原因&#xff1a;认证错误&#xff0c;代表服务无法对请求进…...

AI辅助设计:如何通过机器学习革新创意工作流程

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师、爬虫、ACM算法&#xff0c;大数据&#xff0c;深度学习 &#x1f492; 公众号…...

轻松解锁电脑强悍性能,4000MHz的玖合星舞 DDR4 内存很能打

轻松解锁电脑强悍性能&#xff0c;4000MHz的玖合星舞 DDR4 内存很能打 哈喽小伙伴们好&#xff0c;我是Stark-C~ 很多有经验的电脑玩家在自己DIY电脑选购内存条的时候&#xff0c;除了内存总容量&#xff0c;最看重的参数那就是频率了。内存频率和我们常说的CPU主频一样&…...

SpringBoot | 使用jwt令牌实现登录认证,使用Md5加密实现注册

对于登录认证中的令牌&#xff0c;其实就是一段字符串&#xff0c;那为什么要那么麻烦去用jwt令牌&#xff1f;其实对于登录这个业务&#xff0c;在平常我们实现这个功能时&#xff0c;可能大部分都是通过比对用户名和密码&#xff0c;只要正确&#xff0c;就登录成功&#xff…...

Springboot基于Redis的高性能分布式缓存数据库的实现与实例

一、引言 在现代的分布式系统和高并发应用中&#xff0c;缓存机制显得尤为重要。Redis作为一种开源&#xff08;BSD许可&#xff09;的内存键值存储&#xff0c;因其高性能、丰富的数据结构和多样化的应用场景&#xff0c;成为开发者们的首选。在这篇博客中&#xff0c;我们将…...

防止多次点击,vue的按钮上做简易的防抖节流处理

话不多说,上个视频,看看是不是你要的效果 防抖节流 1.创建一个directive.js // directive.js export default {install(Vue) {// 防重复点击(指令实现)Vue.directive(repeatClick, {inserted(el, binding) {el.addEventListener(click, () > {if (!el.disabled) {el.disabl…...

云计算【第一阶段(21)】Linux引导过程与服务控制

目录 一、linux操作系统引导过程 1.1、开机自检 1.2、MBR引导 1.3、GRUB菜单 1.4、加载 Linux 内核 1.5、init进程初始化 1.6、简述总结 1.7、初始化进程centos 6和7的区别 二、排除启动类故障 2.1、修复MBR扇区故障 2.1.1、 实验 2.2、修复grub引导故障 2.2.1、实…...

Google 发布最新开放大语言模型 Gemma 2,现已登陆 Hugging Face Hub

Google 发布了最新的开放大语言模型 Gemma 2&#xff0c;我们非常高兴与 Google 合作&#xff0c;确保其在 Hugging Face 生态系统中的最佳集成。你可以在 Hub 上找到 4 个开源模型 (2 个基础模型和 2 个微调模型) 。发布的功能和集成包括&#xff1a; Hub 上的模型https://hf.…...

智能分析赋能等保:大数据技术在安全审计记录中的应用

随着信息技术的飞速发展&#xff0c;大数据技术在各行各业中的应用愈发广泛&#xff0c;特别是在网络安全领域&#xff0c;大数据技术为安全审计记录提供了强有力的支撑。本文将深入探讨智能分析如何赋能等保&#xff08;等级保护&#xff09;&#xff0c;以及大数据技术在安全…...

Django中,update_or_create()

在Django中&#xff0c;可以使用update_or_create()方法来更新现有记录或创建新记录。该方法接受一个字典作为参数&#xff0c;用于指定要更新或创建的字段和对应的值。 update_or_create()方法的语法如下&#xff1a; 代码语言&#xff1a;python obj, created Model.obje…...

每日一学(1)

目录 1、ConCurrentHashMap为什么不允许key为null&#xff1f; 2、ThreadLocal会出现内存泄露吗&#xff1f; 3、AQS理解 4、lock 和 synchronized的区别 1、ConCurrentHashMap为什么不允许key为null&#xff1f; 底层 putVal方法 中 如果key || value为空 抛出…...

SpringMVC(1)——入门程序+流程分析

MVC都是哪三层&#xff1f;在Spring里面分别对应什么&#xff1f;SpringMVC的架构是什么&#xff1f; 我们使用Spring开发JavaWeb项目&#xff0c;一般都是BS架构&#xff0c;也就是Browser&#xff08;浏览器&#xff09;-Server&#xff08;服务器&#xff09;架构 这种架构…...

成绩发布背后:老师的无奈与痛点

在教育的广阔天地里&#xff0c;教师这一角色承载着无数的期望与责任。他们不仅是知识的传播者&#xff0c;更是学生心灵的引路人。而对于班主任老师来说&#xff0c;他们的角色更加多元&#xff0c;他们不仅是老师&#xff0c;还必须是“妈妈”。除了像其他老师一样备课、上课…...

一元线性回归-R语言

# # 安装包 # install.packages(ggplot2) # library(ggplot2) Sys.setlocale(category LC_ALL, locale English_United States.1252) # Sys.setlocale("LC_ALL","Chinese") x <- c(18, 20, 22, 24, 26, 28, 30) y <- c(26.86, 28.35, 28.87,28.75,…...

Android Studio中HAXM安装失败的解决方案(HAXM installation failed)

文章目录 错误示例Hyper-VWindows SandboxWindows Hypervisor Platform&#xff08;Windows 虚拟化监控程序平台&#xff09; 出现原因解决方法虚拟机平台方案一方案二方案三 错误示例 表明HAXM (Hardware Accelerated Execution Manager)安装失败了。HAXM是一个硬件辅助虚拟化…...

解决 macOS 中“无法验证开发者”的问题

解决 macOS 中“无法验证开发者”的问题 在使用 macOS 系统时&#xff0c;你可能会遇到一个常见的问题&#xff1a;当你尝试安装或打开某些应用程序时&#xff0c;系统会弹出一个警告&#xff0c;提示“无法验证开发者”。这通常发生在从非官方 App Store 下载的应用程序上。本…...

后端系统的安全性

后端系统的安全性 后端系统的安全性是任何Web应用或服务的核心组成部分&#xff0c;它涉及保护数据、用户隐私以及系统免受恶意攻击。以下是后端安全的一些关键点&#xff1a; 认证和授权&#xff1a;确保只有经过身份验证的用户才能访问特定资源。这通常包括使用用户名/密码…...

Speculative decoding 投机采样原理和验证

概念 做法有很多&#xff0c;这里介绍最广泛被人认识的一种&#xff08;朴素投机采样&#xff09; 瓶颈&#xff1a; 大模型推理自回归采样&#xff0c;逐步串行解码。 生成的每个Token都需要将所有参数从存储单元传输到计算单元。 因此&#xff1a;内存访问带宽成为重要的瓶颈…...

德国Testing Expo丨落幕不散场!知迪展台风采回顾

德国斯图加特国际展览中心&#xff0c;随着全球汽车产业的目光聚焦&#xff0c;Automotive Testing Expo Europe 2024圆满落幕。在这场汇聚了全球顶尖汽车测试技术的盛会中&#xff0c;知迪科技凭借卓越的技术实力和前瞻性的解决方案&#xff0c;成为了现场诸多专业观众的瞩目焦…...

贾樟柯的县城电影,我现在才看懂

如果说县城是贾樟柯电影的万年背景板,那“飘”就是电影中人物命运恒定的基调。第五代及之前的中国导演,不少都将县城放在镜头中心。但提到关于县城的电影,我们想到的*个名字,总还是贾樟柯——他可能是中国最热衷于以县城作背景的导演。早期的“故乡三部曲”《小武》《站台》…...

jenkins集成

jenkins是一款广泛使用的开源持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;工具&#xff0c;主要用于自动化构建、测试和部署软件。以下是关于如何集成Jenkins的详细介绍&#xff1a; 安装Jenkins&#xff1a; 要安装Jenkins&#xff0c;您需要按照…...

【做一道算一道】力扣332.重新安排行程

332.重新安排行程 给定一个机票的字符串二维数组 [from, to]&#xff0c;子数组中的两个成员分别表示飞机出发和降落的机场地点&#xff0c;对该行程进行重新规划排序。所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&#xff0c;所以该行程必…...

专家解读 | NIST网络安全框架(2):核心功能

NIST CSF是一个关键的网络安全指南&#xff0c;不仅适用于组织内部&#xff0c;还可帮助管理第三方网络安全风险。CSF核心包含了六个关键功能——治理、识别、保护、检测、响应和恢复&#xff0c;以及与这些功能相关的类别和子类别。本文将深入探讨CSF核心的主要内容&#xff0…...

Java学习-简单的用户管理系统

用户管理系统 实现基本的用户类&#xff0c;用于抽象出用户的基本信息(编号&#xff0c;姓名&#xff0c;性别&#xff0c;电话&#xff0c;邮件)–Student实现用户工具类&#xff0c;用于实现用户的增、删、改、查–StudentUtils测试类&#xff0c;用于测试使用–StudentTest…...

【前端学习笔记】HTML基础

HTML 一、HTML介绍1.HTML概念2.文档声明3.字符编码4. HTML标签5. HTML属性 二、标签1.meta标签2.语义标签3.布局标签4.列表5.超链接6.图片7.字符实体8.内联格式9.HTML 表格10.HTML 表单 三、HTML5新特性1. 本地存储2. Cookie3. 语义化标签4.多媒体元素5.表单增强6.Canvas7.SVG …...