大家好,欢迎来到IT知识分享网。
print(s)
输出结果:
3) dict创建Series对象
您可以把 dict 作为输入数据。如果没有传入索引时会按照字典的键来构造索引;反之,当传递了索引时需要将索引标签与字典中的值一一对应。
下面两组示例分别对上述两种情况做了演示。
示例1,没有传递索引时:
输出结果:
示例 2,为index
参数传递索引时:
输出结果:
当传递的索引值无法找到与其对应的值时,使用 NaN(非数字)填充。
4) 标量创建Series对象
如果 data 是标量值,则必须提供索引,示例如下:
输出如下:
标量值按照 index 的数量进行重复,并与其一一对应。
访问Series数据
上述讲解了创建 Series 对象的多种方式,那么我们应该如何访问 Series 序列中元素呢?分为两种方式,一种是位置索引访问;另一种是索引标签访问。
1) 位置索引访问
这种访问方式与 ndarray 和 list 相同,使用元素自身的下标进行访问。我们知道数组的索引计数从 0 开始,这表示第一个元素存储在第 0 个索引位置上,以此类推,就可以获得 Series 序列中的每个元素。下面看一组简单的示例:
输出结果:
通过切片的方式访问 Series 序列中的数据,示例如下:
输出结果:
如果想要获取最后三个元素,也可以使用下面的方式:
输出结果:
2) 索引标签访问
Series 类似于固定大小的 dict,把 index 中的索引标签当做 key,而把 Series 序列中的元素值当做 value,然后通过 index 索引标签来访问或者修改元素值。
示例1,使用索标签访问单个元素值:
输出结果:
6
示例 2,使用索引标签访问多个元素值
输出结果:
示例3,如果使用了 index 中不包含的标签,则会触发异常:
输出结果:
Series常用属性
下面我们介绍 Series 的常用属性和方法。在下表列出了 Series 对象的常用属性。
名称 | 属性 |
---|---|
axes | 以列表的形式返回所有行索引标签。 |
dtype | 返回对象的数据类型。 |
empty | 返回一个空的 Series 对象。 |
ndim | 返回输入数据的维数。 |
size | 返回输入数据的元素数量。 |
values | 以 ndarray 的形式返回 Series 对象。 |
index | 返回一个RangeIndex对象,用来描述索引的取值范围。 |
现在创建一个 Series 对象,并演示如何使用上述表格中的属性。如下所示:
输出结果:
上述示例的行索引标签是 [0,1,2,3,4]。
1) axes
输出结果
2) dtype
输出结果:
3) empty
返回一个布尔值,用于判断数据对象是否为空。示例如下:
输出结果:
4) ndim
查看序列的维数。根据定义,Series 是一维数据结构,因此它始终返回 1。
输出结果:
5) size
返回 Series 对象的大小(长度)。
输出结果:
6) values
以数组的形式返回 Series 对象中的数据。
输出结果:
7) index
该属性用来查看 Series 中索引的取值范围。示例如下:
输出结果:
Series常用方法
1) head()&tail()查看数据
如果想要查看 Series 的某一部分数据,可以使用 head() 或者 tail() 方法。其中 head() 返回前 n 行数据,默认显示前 5 行数据。示例如下:
输出结果:
tail() 返回的是后 n 行数据,默认为后 5 行。示例如下:
输出结果:
2) isnull()&nonull()检测缺失值
isnull() 和 nonull() 用于检测 Series 中的缺失值。所谓缺失值,顾名思义就是值不存在、丢失、缺少。
- isnull():如果为值不存在或者缺失,则返回 True。
- notnull():如果值不存在或者缺失,则返回 False。
其实不难理解,在实际的数据分析任物中,数据的收集往往要经历一个繁琐的过程。在这个过程中难免会因为一些不可抗力,或者人为因素导致数据丢失的现象。这时,我们可以使用相应的方法对缺失值进行处理,比如均值插值、数据补齐等方法。上述两个方法就是帮助我们检测是否存在缺失值。示例如下:
输出结果:
Pandas DataFrame入门教程(图解版)
DataFrame 是 Pandas 的重要数据结构之一,也是在使用 Pandas 进行数据分析过程中最常用的结构之一,可以这么说,掌握了 DataFrame 的用法,你就拥有了学习数据分析的基本能力。
认识DataFrame结构
DataFrame 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。其结构图示意图,如下所示:
表格中展示了某个销售团队个人信息和绩效评级(rating)的相关数据。数据以行和列形式来表示,其中每一列表示一个属性,而每一行表示一个条目的信息。
下表展示了上述表格中每一列标签所描述数据的数据类型,如下所示:
Column | Type |
---|---|
name | String |
age | integer |
gender | String |
rating | Float |
DataFrame 的每一行数据都可以看成一个 Series 结构,只不过,DataFrame 为这些行中每个数据值增加了一个列标签。因此 DataFrame 其实是从 Series 的基础上演变而来。在数据分析任务中 DataFrame 的应用非常广泛,因为它描述数据的更为清晰、直观。
通过示例对 DataFrame 结构做进一步讲解。 下面展示了一张学生成绩表,如下所示:
DataFrame 结构类似于 Execl 的表格型,表格中列标签的含义如下所示:
- Regd.No:表示登记的序列号
- Name:学生姓名
- Marks:学生分数
同 Series 一样,DataFrame 自带行标签索引,默认为“隐式索引”即从 0 开始依次递增,行标签与 DataFrame 中的数据项一一对应。上述表格的行标签从 0 到 5,共记录了 5 条数据(图中将行标签省略)。当然你也可以用“显式索引”的方式来设置行标签。
下面对 DataFrame 数据结构的特点做简单地总结,如下所示:
- DataFrame 每一列的标签值允许使用不同的数据类型;
- DataFrame 是表格型的数据结构,具有行和列;
- DataFrame 中的每个数据值都可以被修改。
- DataFrame 结构的行数、列数允许增加或者删除;
- DataFrame 有两个方向的标签轴,分别是行标签和列标签;
- DataFrame 可以对行和列执行算术运算。
创建DataFrame对象
创建 DataFrame 对象的语法格式如下:
参数说明:
参数名称 | 说明 |
---|---|
data | 输入的数据,可以是 ndarray,series,list,dict,标量以及一个 DataFrame。 |
index | 行标签,如果没有传递 index 值,则默认行标签是 np.arange(n),n 代表 data 的元素个数。 |
columns | 列标签,如果没有传递 columns 值,则默认列标签是 np.arange(n)。 |
dtype | dtype表示每一列的数据类型。 |
copy | 默认为 False,表示复制数据 data。 |
Pandas 提供了多种创建 DataFrame 对象的方式,主要包含以下五种,分别进行介绍。
1) 创建空的DataFrame对象
使用下列方式创建一个空的 DataFrame,这是 DataFrame 最基本的创建方法。
输出结果如下:
2) 列表创建DataFame对象
可以使用单一列表或嵌套列表来创建一个 DataFrame。
示例 1,单一列表创建 DataFrame:
输出如下:
示例 2,使用嵌套列表创建 DataFrame 对象:
输出结果:
示例 3,指定数值元素的数据类型为 float:
输出结果:
3) 字典嵌套列表创建
data 字典中,键对应的值的元素长度必须相同(也就是列表长度相同)。如果传递了索引,那么索引的长度应该等于数组的长度;如果没有传递索引,那么默认情况下,索引将是 range(n),其中 n 代表数组长度。
示例 4:
输出结果:
注意:这里使用了默认行标签,也就是 range(n)。它生成了 0,1,2,3,并分别对应了列表中的每个元素值。
示例 5,现在给上述示例 4 添加自定义的行标签:
输出结果如下:
注意:index 参数为每行分配了一个索引。
4) 列表嵌套字典创建DataFrame对象
列表嵌套字典可以作为输入数据传递给 DataFrame 构造函数。默认情况下,字典的键被用作列名。
示例 6 如下:
输出结果:
注意:如果其中某个元素值缺失,也就是字典的 key 无法找到对应的 value,将使用 NaN 代替。
示例 7,给上述示例 6 添加行标签索引:
输出结果:
示例 8,如何使用字典嵌套列表以及行、列索引表创建一个 DataFrame 对象。
输出结果:
注意:因为 b1 在字典键中不存在,所以对应值为 NaN。
5) Series创建DataFrame对象
您也可以传递一个字典形式的 Series,从而创建一个 DataFrame 对象,其输出结果的行索引是所有 index 的合集。 示例如下:
输出结果如下:
注意:对于 one 列而言,此处虽然显示了行索引 ‘d’,但由于没有与其对应的值,所以它的值为 NaN。
列索引操作DataFrame
DataFrame 可以使用列索(columns index)引来完成数据的选取、添加和删除操作。下面依次对这些操作进行介绍。
1) 列索引选取数据列
您可以使用列索引,轻松实现数据选取,示例如下:
输出结果:
2) 列索引添加数据列
使用 columns 列索引表标签可以实现添加新的数据列,示例如下:
输出结果:
上述示例,我们初次使用了 DataFrame 的算术运算,这和 NumPy 非常相似。除了使用df[]=value
的方式外,您还可以使用 insert() 方法插入新的列,示例如下:
输出结果:
3) 列索引删除数据列
通过 del 和 pop() 都能够删除 DataFrame 中的数据列。示例如下:
输出结果:
行索引操作DataFrame
理解了上述的列索引操作后,行索引操作就变的简单。下面看一下,如何使用行索引来选取 DataFrame 中的数据。
1) 标签索引选取
可以将行标签传递给 loc 函数,来选取数据。示例如下:
输出结果:
one 2.0two 2.0Name: b, dtype: float64
注意:loc 允许接两个参数分别是行和列,参数之间需要使用“逗号”隔开,但该函数只能接收标签索引。
2) 整数索引选取
通过将数据行所在的索引位置传递给 iloc 函数,也可以实现数据行选取。示例如下:
输出结果:
注意:iloc 允许接受两个参数分别是行和列,参数之间使用“逗号”隔开,但该函数只能接收整数索引。
3) 切片操作多行选取
您也可以使用切片的方式同时选取多行。示例如下:
输出结果:
4) 添加数据行
使用 append() 函数,可以将新的数据行添加到 DataFrame 中,该函数会在行末追加数据行。示例如下:
输出结果:
5) 删除数据行
您可以使用行索引标签,从 DataFrame 中删除某一行数据。如果索引标签存在重复,那么它们将被一起删除。示例如下:
输出结果:
在上述的示例中,默认使用 range(2) 生成了行索引,并通过 drop(0) 同时删除了两行数据。
常用属性和方法汇总
DataFrame 的属性和方法,与 Series 相差无几,如下所示:
名称 | 属性&方法描述 |
---|---|
T | 行和列转置。 |
axes | 返回一个仅以行轴标签和列轴标签为成员的列表。 |
dtypes | 返回每列数据的数据类型。 |
empty | DataFrame中没有数据或者任意坐标轴的长度为0,则返回True。 |
ndim | 轴的数量,也指数组的维数。 |
shape | 返回一个元组,表示了 DataFrame 维度。 |
size | DataFrame中的元素数量。 |
values | 使用 numpy 数组表示 DataFrame 中的元素值。 |
head() | 返回前 n 行数据。 |
tail() | 返回后 n 行数据。 |
shift() | 将行或列移动指定的步幅长度 |
下面对 DataFrame 常用属性进行演示,首先我们创建一个 DataFrame 对象,示例如下:
输出结果:
1) T(Transpose)转置
返回 DataFrame 的转置,也就是把行和列进行交换。
输出结果:
2) axes
返回一个行标签、列标签组成的列表。
输出结果:
[RangeIndex(start=0, stop=7, step=1), Index([‘Name’, ‘years’, ‘Rating’], dtype=‘object’)]
3) dtypes
返回每一列的数据类型。示例如下:
输出结果:
4) empty
返回一个布尔值,判断输出的数据对象是否为空,若为 True 表示对象为空。
输出结果:
5) ndim
返回数据对象的维数。DataFrame 是一个二维数据结构。
输出结果:
2
6) shape
返回一个代表 DataFrame 维度的元组。返回值元组 (a,b),其中 a 表示行数,b 表示列数。
(7, 3)
7) size
返回 DataFrame 中的元素数量。示例如下:
输出结果:
21
8) values
以 ndarray 数组的形式返回 DataFrame 中的数据。
输出结果:
9) head()&tail()查看数据
如果想要查看 DataFrame 的一部分数据,可以使用 head() 或者 tail() 方法。其中 head() 返回前 n 行数据,默认显示前 5 行数据。示例如下:
输出结果:
tail() 返回后 n 行数据,示例如下:
输出结果:
10) shift()移动行或列
如果您想要移动 DataFrame 中的某一行/列,可以使用 shift() 函数实现。它提供了一个periods
参数,该参数表示在特定的轴上移动指定的步幅。
shif() 函数的语法格式如下:
DataFrame.shift(periods=1, freq=None, axis=0)
参数说明如下:
参数名称 | 说明 |
---|---|
peroids | 类型为int,表示移动的幅度,可以是正数,也可以是负数,默认值为1。 |
freq | 日期偏移量,默认值为None,适用于时间序。取值为符合时间规则的字符串。 |
axis | 如果是 0 或者 “index” 表示上下移动,如果是 1 或者 “columns” 则会左右移动。 |
fill_value | 该参数用来填充缺失值。 |
该函数的返回值是移动后的 DataFrame 副本。下面看一组简单的实例:
输出结果:
下面使用 fill_value 参数填充 DataFrame 中的缺失值,如下所示:
输出结果:
注意:fill_value 参数不仅可以填充缺失值,还也可以对原数据进行替换。
Pandas Panel三维数据结构
Panel 结构也称“面板结构”,它源自于 Panel Data 一词,翻译为“面板数据”。如果您使用的是 Pandas 0.25 以前的版本,那么您需要掌握本节内容,否则,作为了解内容即可。
自 Pandas 0.25 版本后, Panel 结构已经被废弃。
Panel 是一个用来承载数据的三维数据结构,它有三个轴,分别是 items(0 轴),major_axis(1 轴),而 minor_axis(2 轴)。这三个轴为描述、操作 Panel 提供了支持,其作用介绍如下:
- items:axis =0,Panel 中的每个 items 都对应一个 DataFrame。
- major_axis:axis=1,用来描述每个 DataFrame 的行索引。
- minor_axis:axis=2,用来描述每个 DataFrame 的列索引。
pandas.Panel()
您可以使用下列构造函数创建一个 Panel,如下所示:
pandas.Panel(data, items, major_axis, minor_axis, dtype, copy)
参数说明如下:
参数名称 | 描述说明 |
---|---|
data | 输入数据,可以是 ndarray,Series,列表,字典,或者 DataFrame。 |
items | axis=0 |
major_axis | axis=1 |
minor_axis | axis=2 |
dtype | 每一列的数据类型。 |
copy | 默认为 False,表示是否复制数据。 |
创建Panel 对象
下面介绍创建 Panel 对象的两种方式:一种是使用 nadarry 数组创建,另一种使用 DataFrame 对象创建。首先,我们学习如何创建一个空的 Panel 对象。
1) 创建一个空Panel
使用 Panel 的构造函数创建,如下所示:
输出结果:
2) ndarray三维数组创建
输出结果:
请注意与上述示例的空 Panel 进行对比。
3) DataFrame创建
下面使用 DataFrame 创建一个 Panel,示例如下:
输出结果:
Panel中选取数据
如果想要从 Panel 对象中选取数据,可以使用 Panel 的三个轴来实现,也就是items
,major_axis
,minor_axis
。下面介绍其中一种,大家体验一下即可。
1) 使用 items选取数据
示例如下:
输出结果:
上述示例中 data,包含了两个数据项,我们选择了 item1,输出结果是 4 行 3 列的 DataFrame,其行、列索引分别对应 major_axis 和 minor_axis。
Python Pandas描述性统计
描述统计学(descriptive statistics)是一门统计学领域的学科,主要研究如何取得反映客观现象的数据,并以图表形式对所搜集的数据进行处理和显示,最终对数据的规律、特征做出综合性的描述分析。Pandas 库正是对描述统计学知识完美应用的体现,可以说如果没有“描述统计学”作为理论基奠,那么 Pandas 是否存在犹未可知。下列表格对 Pandas 常用的统计学函数做了简单的总结:
函数名称 | 描述说明 |
---|---|
count() | 统计某个非空值的数量。 |
sum() | 求和 |
mean() | 求均值 |
median() | 求中位数 |
mode() | 求众数 |
std() | 求标准差 |
min() | 求最小值 |
max() | 求最大值 |
abs() | 求绝对值 |
prod() | 求所有数值的乘积。 |
cumsum() | 计算累计和,axis=0,按照行累加;axis=1,按照列累加。 |
cumprod() | 计算累计积,axis=0,按照行累积;axis=1,按照列累积。 |
corr() | 计算数列或变量之间的相关系数,取值-1到1,值越大表示关联性越强。 |
从描述统计学角度出发,我们可以对 DataFrame 结构执行聚合计算等其他操作,比如 sum() 求和、mean()求均值等方法。
在 DataFrame 中,使用聚合类方法时需要指定轴(axis)参数。下面介绍两种传参方式:
- 对行操作,默认使用 axis=0 或者使用 “index”;
- 对列操作,默认使用 axis=1 或者使用 “columns”。
图1:axis轴示意图
从图 1 可以看出,axis=0 表示按垂直方向进行计算,而 axis=1 则表示按水平方向。下面让我们创建一个 DataFrame,使用它对本节的内容进行演示。
创建一个 DataFrame 结构,如下所示:
输出结果:
sum()求和
在默认情况下,返回 axis=0 的所有值的和。示例如下:
输出结果:
注意:sum() 和 cumsum() 函数可以同时处理数字和字符串数据。虽然字符聚合通常不被使用,但使用这两个函数并不会抛出异常;而对于 abs()、cumprod() 函数则会抛出异常,因为它们无法操作字符串数据。
下面再看一下 axis=1 的情况,如下所示:
输出结果:
mean()求均值
示例如下:
输出结果:
std()求标准差
返回数值列的标准差,示例如下:
输出结果:
标准差是方差的算术平方根,它能反映一个数据集的离散程度。注意,平均数相同的两组数据,标准差未必相同。
数据汇总描述
describe() 函数显示与 DataFrame 数据列相关的统计信息摘要。示例如下:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Go语言工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Go语言全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Golang知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Go)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
输出结果:
mean()求均值
示例如下:
输出结果:
std()求标准差
返回数值列的标准差,示例如下:
输出结果:
标准差是方差的算术平方根,它能反映一个数据集的离散程度。注意,平均数相同的两组数据,标准差未必相同。
数据汇总描述
describe() 函数显示与 DataFrame 数据列相关的统计信息摘要。示例如下:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Go语言工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Go语言全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-w37ZLIlO-09)]
[外链图片转存中…(img-e7zfOMmm-10)]
[外链图片转存中…(img-l6znK22j-11)]
[外链图片转存中…(img-kACfZbqU-11)]
[外链图片转存中…(img-08sMwyvR-12)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Golang知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-gP12JjfX-12)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122278.html