4.1 第四章 Pandas玩转数据:Series和DataFrame的简单数学运算、排序,重命名index、merge合并,concatenate串联、combine填充



一、Series和DataFrame的简单数学运算

1.1 Series的加法:对应索引的元素,相加

导包;

先创建两个Series;

让两者相加。

发现:是对应index的value,来相加。

1.2 DataFrame的加法:对应索引的元素,相加

先创建一个DataFrame;使用numpy库中的arange函数,先一维数组再重塑多维矩阵

为了更好的计算,所以在上述df1上再加上index行索引、columns列索引;

同理,再创建一个df2;

上述的range():是Python中一个函数,创建数学意义上的数列,0123....14

np.arange():是numpy包中一个函数,创建数组(矩阵)。

让上述两个相加;
发现:也是对应索引的元素,进行相加

1.3 DataFrame的内置的运算方法

1.求和

新创建一个DataFrame:不同于上节通过np库,使用Python中的list列表来创建;(因为可以更灵活的指定元素的数值)

求各列的和;--------------------------------------------- 本质:是一个Series

求各行的和,需要调整axis轴参数;--------------- 本质:是一个Series

为什么df3.sum()默认的就是列之和呢?

因为实际生产中,表格的行代表的是一条一条的完整的记录单元,而类代表每条记录的一个特定维度,比如:工资、年龄、入职时间等。

而只有同一纬度的数据,才是可以进行运算的。

2.求最值

求各列的最值;

如果要求各行的,直接调整axis轴参数即可;

3.describe函数

  • mean-------------------均值(为好理解,可以视为平均值) ( vs median:中位数)
  • std-----------------------标准差,Standard Deviation,概率统计中最常用的离散指标。

均值?

二、Series和DataFrame的排序

2.1 Series的排序

创建一个Series,元素是用10个随机数;

会发现:

元素会根据value从小到大排序,且对应的index也会跟着调整:

也会发现:

元素会根据index从小到大排序,且对应的value也会跟着调整:

2.2 DataFrame的排序

1.

创建一个DataFrame,元素为:通过np库,用40个随机数来形成一维数组,并重塑为8X5的多维数组

错误的做法:仅仅对A这一列拿出来,再排序

正确的做法:应该是对整个df1来排序:

2.

上面是对values进行排序,那么对索引呢?

2.3 hw

1.

原数据:

目标:

  • 只保留筛选出下述四列
  • 并按照imdb_score进行排序,递减

2.

我的步骤

3.补充:

上面是从硬盘读取、筛选排序之后,还要存入硬盘一下:

三、重命名DataFrame的index

3.1 方式一:直接给index赋值一个Series对象

3.2 方式二:用map()函数来批量的整个更改

介绍下map映射:
需求:

解决方式一:循环

解决方式二:列表解析,常用、高效

解决方式三:通过map函数映射

3.3 方式三:rename()函数,更快捷

通过传入一个字典,来对特定的value进行变更

3.4 方式四:自定义函数

先定义一个自己写的函数:

然后,将该函数与map()函数相结合;

或,将该函数与rename()函数相结合;

四、DataFrame的merge操作

4.1 含义:合并

1.

用Python的一个字典,分别来创建两个DataFrame:

然后,将两者merge合并一下:

结果:啥都没有。

2.

更换下df2:

结果:两者有合并的元素了

即,两个DataFrame,必须在相同的column列下,有共同的元素。比如,上面df1和df2,在共同的列key下,有共同的元素X。

3.

再更换下df1试试:

4.2 参数:on

on这个参数,必须是两个DataFrame都有共同的列column才行,否则会报错:

4.3 参数:how,默认是inner,可以调整为left、right、outer

我认为:如果把两个DataFrame看作是两个集合A、B,那么:

  • 默认的inner--------- 就是交集
  • left--------------------- 就是集合A
  • right------------------- 就是集合B
  • outer------------------ 就是并集

参考:
https://www.pypandas.cn/docs/user_guide/merging.html#database-style-dataframe-or-named-series-joining-merging

我认为,这是跟SQL数据库操作中的,左连接、右连接很像。

五、Concatenate串联、Combine填充

5.1 数组的Concatenate:连接、串联

1.

3X3矩阵、3X3矩阵,变成:6X3矩阵

即:默认的增加行数

2.调整axis轴参数

axis=1表示在增加列数

5.2 Series的Concatenate:连接、串联

1.

2.

注意:Series是一维的,只有index行索引,没有column列索引的概念

如果强行的调整axis轴参数为1,那么Series就会越级变成一个DataFrame:

5.3 DataFrame的Concatenate:连接、串联

跟上述的Series的Concatenate原理相同,都是空白之地就用NaN填充:

5.4 Series的Combine:融合(填充)

用s2去填充s1

5.5 DataFrame的Combine:融合(填充)

两个DataFrame,都有一列叫Z:

  • df1的Z列是奇数
  • df2的Z列是偶数

声明:Jerry's Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 4.1 第四章 Pandas玩转数据:Series和DataFrame的简单数学运算、排序,重命名index、merge合并,concatenate串联、combine填充


Follow excellence, and success will chase you.