Fork me on GitHub

pandas系列10-数值操作1

最近看的一本书叫做《对比Excel,轻松学习Python数据分析》

书中还是学到了很多知识点,下面总结的是比较基础的操作,自己也常用:

  • 数值替换
  • 数值排序
  • 数值排名
  • 数值删除
  • 数值计数
  • 唯一值获取与查找

数值替换

数值替换常用在存在异常值处理、缺失值处理中,三种替换方法:

  • 一对一替换
  • 多对一替换
  • 多对多替换

一对一

Excel中通过Ctrl+H调出替换界面,分别输入查找内容和替换内容即可

Python中利用的是replace方法

1
df.replace(A,B)     # 将A替换成B

如果是对缺失值进行替换,则

1
df.replace(np.NaN,0)  # 将缺失值用0替换,此时作用同于fillna()方法

多对一

Excel中借助if函数和OR函数实现

1
if(OR(D:D=240,D:D=260,D:D=280),33,D:D)   # 如果数值等于240,260,280,替换成33

Python还会借助replace方法:将需要替换的值放进一个列表中即可。

1
df.replace([A,B],C)

多对多

Excel中通过多个if嵌套语句来实现

  • 如果数值为32,替换成32
  • 如果是260,替换成33
  • 如果是280,替换成34
1
if(D:D=240,32,if(D:D=260,33,if(D:D=280,34,D:D))

Python中实现还是通过replace方法,将待替换值和替换值用字典的形式表示

1
df.replace({"A":"a","B":"b"})   # 将A用a替换,B用b替换

数值排序

一列数据排序

选择待排序的数据之后,Excel中直接通过菜单栏中的排序按钮,选择升序或者降序

Python中的排序通过sort_values()方法

  • 指定列名
  • 指定升序还是降序,默认是升序
1
df.sort_values(by = ["ID"], ascending = False )  # 改成降序

缺失值排序

如果待排序的书数据中存在缺失值,通过设置参数na_position对缺失值的显示位置进行设置

  • last,默认显示在最后面
  • first

多列数值排序

Excel中是选择待排序的数据,单击菜单按钮中的排序和筛选

  • 选择待排序的列
  • 选择每列的升序还是降序

Python中的实现是通过sort_values():后面通过列表的形式指定待排序的列和每列的排序的方式

1
df.sort_values(by=["col1","col2"],ascending=[True,False])  # col1是升序,col2是降序

数值排名

Excel

主要使用的是两个方法,不同之处在于对重复值的方式。没有重复值,二者效果相同

  • rank_avg(number, ref,order):若有重复值,返回重复值的平均排名
    • number:待排名的数值
    • ref:一整列的数值范围
    • order:排序方式
  • rank_eq(number, ref, order):返回重复值的最佳排名

Python

Python中使用的是rank()方法,两个参数:

  • ascending:指明升序还是降序,默认是升序
  • method:重复值的处理情况
method 含义
average 同Excel中的rank.avg
first 按值在数据中出现的先后顺序
min 同Excel中的rank.eq
max 取重复值对应的最大排名,与min相反

数值删除

Excel中删除非常简单,主要是讲解Python中怎么删除,使用的是drop方法

比如删除两个字段"col1"、“col2”,有两种写法:

1
2
df.drop(["col1","col2"],axis=1)  # 直接写出属性的名字
df.drop(df.columns[[1,2]],axis=1) # 用属性所在的位置信息

两种方法都需要指明axis=1

直接将属性名字传给columns

1
df.drop(columns=["col1","col2"])   # 不指定axis=1

如果是删除index,使用axis=0

数值计数

Excel

使用的是countif函数

1
countif(range, critieria)
  • range:待计数的一系列值的范围
  • critieria:某个值或者某个条件

Python

使用的是value_counts(),统计出来的是个数;如果想看每个值的占比,使用参数normalize=True,默认是降序排列。设置sort=False可以改成升序。

唯一值获取与数值查找

唯一值获取

Excel中将该列值复制黏贴后删除重复值即可

Python中使用unique()方法

数值查找

Python中使用的是isin()方法,在某列上调用方法

  • 在,返回T
  • 不在,返回F

针对某个列查找

针对全表

1
df.isin([31,21])

本文标题:pandas系列10-数值操作1

发布时间:2020年06月13日 - 18:06

原始链接:http://www.renpeter.cn/2020/06/13/pandas%E7%B3%BB%E5%88%9710-%E6%95%B0%E5%80%BC%E6%93%8D%E4%BD%9C1.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea