大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中集合的交集、并集、差集和对称差集运算方法详解》。主要讲的是集合运算的相关的概念,及运算方法,包括:集合的交集、集合的并集、集合的差集、集合的对称差集、集合的交集运算方法、集合的并集运算方法、集合的差集运算方法、集合的对称差集运算方法。
创新互联建站是一家专注于做网站、网站制作与策划设计,寿宁网站建设哪家好?创新互联建站做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:寿宁等地区。寿宁做网站价格咨询:028-86922220
在Python中,集合最常用的操作就是进行交集、并集、差集和对称差集的运算。
要想学习集合的交集、并集、差集和对称差集运算方法,首先我们来了解这些名词的含义:
设A、B两个集合,由所有属于集合A且属于集合B的元素所组成的集合,叫做集合A与集合B的交集。在Python中,进行交集运算时使用“”符号。
给定两个集合A、B,把他们所有的元素合并在一起组成的集合,叫做集合A与集合B的并集。在Python中,进行并集运算时使用“|”符号。
设A,B是两个集合,则所有属于A且不属于B的元素构成的集合,叫做集合A与集合B的差集。在Python中,进行差集运算时使用“-”符号。
对称差集也称为对称差分或者补集,设A,B是两个集合,所有不相同的集合,叫做集合A与集合B的对称差集(对称差分或者补集)。在Python中,进行对称差集运算时使用“^”符号。
上面都是概念性的描述,下面站长在线来举实际的场景来对交集、并集、差集和对称差集运算方法进行深入浅出的解读。
场景模拟:某高中三年级,文科班高考的科目是语文、数学、英语、政治、 历史 和地理。理科班高考的科目是语文、数学、英语、物理、化学和生物。
设定集合A为文科班高考的科目,集合B为理科班高考的科目。
A = {'语文','数学','英语','政治',' 历史 ','地理'}
B = {'语文','数学','英语','物理','化学','生物'}
我们使用集合的交集运算的时候可以采用两种方式,一种是使用“”运算符进行操作,另一种是使用 intersection() 方法来实现。
运行结果:
运行结果:
同理集合B和集合A的交集也是一样。我这里就不重复了,自己去体验一下。
集合的并集运算也有两种方式,一种是使用“|”运算符进行操作,另一种是使用union()方法来实现。
运行结果如下:
运行结果为:
同理集合B和集合A的并集也是一样。自己去体验一下吧!
集合的差集运算也有两种方式,一种是使用“-”运算符进行操作,另一种是使用difference()方法来实现。
运行结果为:
上面是集合A和集合B的差集,但是集合B和集合A的差集就不是一样的了哦!
运行结果为:
从上面可以看出,集合A和集合B的差集 与 集合B和集合A的差集是不一样的,(A - B)是A中存在的部分,(B - A)是B中存在的部分。
运行结果:
同理,使用difference()方法进行集合B和集合A的差集也是不同的
运行结果:
集合的差集运算也有两种方式,一种是使用“^”运算符进行操作,另一种是使用symmetric_difference()方法来实现。
运行结果为:
运行结果为:
同样的,集合B与集合A的对称差集也是一样,自己去体验一下。
我们对集合的交集、并集、差集和对称差集运算方法全部详细的讲解了一遍,通过运行结果,我们得出结论:
集合中进行交集、并集、对称差集进行运算的时候,集合A与集合B,位置替换的时候,结果相同。
集合中进行差集运算的时候,集合A与集合B,位置替换的时候,结果不同,为前面那个集合独立存在的部分。
到此为止,本节课的内容《Python中集合的交集、并集、差集和对称差集运算方法详解》就完全讲完了,主要讲的集合运算的相关的概念,及运算方法,包括:集合的交集、集合的并集、集合的差集、集合的对称差集、集合的交集运算方法、集合的并集运算方法、集合的差集运算方法、集合的对称差集运算方法。
在Python中,pandas是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处理统一的数值数组数据。
使用下面格式约定,引入pandas包:
pandas有两个主要数据结构:Series和DataFrame。
Series是一种类似于一维数组的对象,它由 一组数据 (各种NumPy数据类型)以及一组与之相关的 数据标签(即索引) 组成,即index和values两部分,可以通过索引的方式选取Series中的单个或一组值。
pd.Series(list,index=[ ]) ,第二个参数是Series中数据的索引,可以省略。
Series类型索引、切片、运算的操作类似于ndarray,同样的类似Python字典类型的操作,包括保留字in操作、使用.get()方法。
Series和ndarray之间的主要区别在于Series之间的操作会根据索引自动对齐数据。
DataFrame是一个表格型的数据类型,每列值类型可以不同,是最常用的pandas对象。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。
pd.DataFrame(data,columns = [ ],index = [ ]) :columns和index为指定的列、行索引,并按照顺序排列。
如果创建时指定了columns和index索引,则按照索引顺序排列,并且如果传入的列在数据中找不到,就会在结果中产生缺失值:
数据索引 :Series和DataFrame的索引是Index类型,Index对象是不可修改,可通过索引值或索引标签获取目标数据,也可通过索引使序列或数据框的计算、操作实现自动化对齐。索引类型index的常用方法:
重新索引 :能够改变、重排Series和DataFrame索引,会创建一个新对象,如果某个索引值当前不存在,就引入缺失值。
df.reindex(index, columns ,fill_value, method, limit, copy ) :index/columns为新的行列自定义索引;fill_value为用于填充缺失位置的值;method为填充方法,ffill当前值向前填充,bfill向后填充;limit为最大填充量;copy 默认True,生成新的对象,False时,新旧相等不复制。
删除指定索引 :默认返回的是一个新对象。
.drop() :能够删除Series和DataFrame指定行或列索引。
删除一行或者一列时,用单引号指定索引,删除多行时用列表指定索引。
如果删除的是列索引,需要增加axis=1或axis='columns'作为参数。
增加inplace=True作为参数,可以就地修改对象,不会返回新的对象。
在pandas中,有多个方法可以选取和重新组合数据。对于DataFrame,表5-4进行了总结
适用于Series和DataFrame的基本统计分析函数 :传入axis='columns'或axis=1将会按行进行运算。
.describe() :针对各列的多个统计汇总,用统计学指标快速描述数据的概要。
.sum() :计算各列数据的和
.count() :非NaN值的数量
.mean( )/.median() :计算数据的算术平均值、算术中位数
.var()/.std() :计算数据的方差、标准差
.corr()/.cov() :计算相关系数矩阵、协方差矩阵,是通过参数对计算出来的。Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数。DataFrame的corr和cov方法将以DataFrame的形式分别返回完整的相关系数或协方差矩阵。
.corrwith() :利用DataFrame的corrwith方法,可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回一个相关系数值Series(针对各列进行计算),传入一个DataFrame则会计算按列名配对的相关系数。
.min()/.max() :计算数据的最小值、最大值
.diff() :计算一阶差分,对时间序列很有效
.mode() :计算众数,返回频数最高的那(几)个
.mean() :计算均值
.quantile() :计算分位数(0到1)
.isin() :用于判断矢量化集合的成员资格,可用于过滤Series中或DataFrame列中数据的子集
适用于Series的基本统计分析函数,DataFrame[列名]返回的是一个Series类型。
.unique() :返回一个Series中的唯一值组成的数组。
.value_counts() :计算一个Series中各值出现的频率。
.argmin()/.argmax() :计算数据最大值、最小值所在位置的索引位置(自动索引)
.idxmin()/.idxmax() :计算数据最大值、最小值所在位置的索引(自定义索引)
pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。下表对它们进行了总结,其中read_csv()、read_table()、to_csv()是用得最多的。
在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。
在许多数据分析工作中,缺失数据是经常发生的。对于数值数据,pandas使用浮点值NaN(np.nan)表示缺失数据,也可将缺失值表示为NA(Python内置的None值)。
替换值
.replace(old, new) :用新的数据替换老的数据,如果希望一次性替换多个值,old和new可以是列表。默认会返回一个新的对象,传入inplace=True可以对现有对象进行就地修改。
删除重复数据
利用函数或字典进行数据转换
df.head():查询数据的前五行
df.tail():查询数据的末尾5行
pandas.cut()
pandas.qcut() 基于分位数的离散化函数。基于秩或基于样本分位数将变量离散化为等大小桶。
pandas.date_range() 返回一个时间索引
df.apply() 沿相应轴应用函数
Series.value_counts() 返回不同数据的计数值
df.aggregate()
df.reset_index() 重新设置index,参数drop = True时会丢弃原来的索引,设置新的从0开始的索引。常与groupby()一起用
numpy.zeros()
处理过与时间有关的数据的人都知道,差分变化经常用来使得结果更加直观。在这篇文章里将会教你如何用Python来实现这一目的,读完这篇文章,你将会掌握以下技能:
1、知道什么是差分变换以及滞后差分和差分阶数的设置
2、如何手动计算差分
3、怎样使用Pandas内置的差分函数
所以,让我们赶紧开始吧!
为什么要对时间序列数据进行差分?
首先来看下为什么要对数据进行差分变化,差分变化可以消除数据对时间的依赖性,也就是降低时间对数据的影响,这些影响通常包括数据的变化趋势以及数据周期性变化的规律。进行差分操作时,一般用现在的观测值减去上个时刻的值就得到差分结果,就是这么简单,按照这种定义可以计算一系列的差分变换。
滞后差分
连续观测值之间的差分变换叫做一阶滞后差分。滞后差分的步长需要根据数据的时间结构做调整,例如对于周期性变化的数据,这个时间步长就是数据变化的周期。
差分阶数
在进行一次差分之后,时间项的作用并没有完全去掉,将会继续对差分结果进行差分变化,直到完全消除时间项的影响因素为止,这个过程中进行的差分操作次数就称为差分阶数。
洗发水销售数据
这份数据是三年来每月洗发水的销售情况,总共有36个数据记录,原始数据来自Makridakis, Wheelwright和 Hyndman (1998).,可以从下面的地址下到数据:
下面的代码将会导入数据并将结果画成折线图,如下所示:
手动差分
在这一部分中,我们将会自定义一个函数来实现差分变换,这个函数将会对提供的数据进行遍历并根据指定的时间间隔进行差分变换。具体代码如下:
从上面的代码中可以看到该函数将会根据指定的时间间隔来对数据进行变换,一般来说,通常会计算间隔一个数据的差分,这样的结果比较可靠。当然,我们也可以将上面的函数进行一定的改进,加入差分阶数的指定。
下面将这函数应用到上面洗发水销售的数据中去,运行之后绘出下面的图,具体如下:
自动差分
Pandas库里提供了一个函数可以自动计算数据的差分,这个函数是diff(),输入的数据是“series'或”DataFrame'类型的,像前面自定义函数那样,我们也可以指定差分的时间间隔,不过在这里这个参数叫做周期。
下面的例子是用Pandas内置函数来计算差分的,数据类型是series的,使用Pandas内置函数的好处是代码工作量减少了不少,而且绘出的图中包含更详细的信息,具体效果如下:
总结
读完本文想必你已经学会用python来实现对数据的差分了,尤其是对差分的概念,手动差分,以及使用Pandas内置函数进行差分都有所了解了。如果有什么好的想法欢迎在评论栏里留下。