一、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这一列拿出来,再排序
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列是偶数
Comments | NOTHING