栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

一文速学-Pandas实现数值替换、排序、排名、插入和区间切片

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一文速学-Pandas实现数值替换、排序、排名、插入和区间切片


前言

Pandas的基础数据结构Series和DataFrame。若是还不清楚的可以再去看看我之前的博客详细介绍这两种数据结构的处理方法:

一文速学-数据分析之Pandas数据结构和基本操作代码

一些Pandas基础函数的使用方法:

DataFrame行列表查询操作详解+代码实战

DataFrame多表合并拼接函数concat、merge参数详解+代码操作展示

Pandas中read_excel函数参数使用详解+实例代码

一文速学-Pandas索引设置操作各类方法详解+代码展示

关于包含在异常值里面的空值和重复值均有三篇博客专门详细介绍了处理他们的方法: 

一文速学-Pandas处理重复值操作各类方法详解+代码展示

一文速学-Pandas处理缺失值操作各类方法详解

一文速学-Pandas异常值检测及处理操作各类方法详解+代码展示


演示数据:

 

一、数值替换 replace()

最常用的一个函数,基本格式:

DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')

 参数说明:

  • rgExp:指定将出现在数据集里的文本。
  • replaceText:指定替换成的文本。
  • max:最大次数,默认为最大次数,从左到右。
df1['sex'].replace('女','男',inplace=True)

 

df1['sex'].replace({'女':'男','男':'女'},inplace=True)

多值替换:

df1['sex'].replace(['男','女'],'无',inplace=True)

 

 多对多修改,传入字典:

df1['sex'].replace({'女':'男','男':'女'},inplace=True)

二、数值排序

常用函数sort_values,基本格式:

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')

参数说明:

  • by:str or list of str ,指定排序的列或者列的列表。
  • axis:指定是列排序还是行排序,默认为0指列排序。
  • ascending:默认为升序排序。
  • inplace:是否替换原来的数据集。
  • kind:排序方式。
  • na_postition:是否将缺失值放在最前面。

df1.sort_values(by=['old'])

 

df1.sort_values(by=['old'],ascending=False)

 

df1.sort_values(by=['old','weight'],ascending=[True,False])

 上面这段代码的意思是先按old进行升序排序,若是遇到相同的数值,则按weight降序排序:

df1.sort_values(by=['old'],na_position='first')

设置na_position参数为last或者是first可以将空值nan置为首部或者底部。 

 

三、排名

排完序后难免有会有相同大小数值数据,可以通过rank进行再一轮排序:

DataFrame.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)

参数说明:

  • axis:指定是否是按行处理还是列处理,默认为列
  • method:
method说明
average对多个相同数值的数据进行取平均值代替
first按值在所有的待排列数据中出现的先后顺序排名
min对多个相同数据的数据取最前排名代替
max与min相反,取最后的排名代替
  • numeric_only:是否只对数值型的列进行
  • na_option:{‘keep’, ‘top’, ‘bottom’}对空值采取对应的措施
  • ascending:默认升序
  • pct:计算百分比排名数据
df1['old'].rank()

 

se1=df1['old'].rank()
df1.insert(0,'randk',se1)
df1.sort_values(by='old')

 

这样更加直观。

四、插入

一般使用insert()函数,基本格式如下:

DataFrame.insert(loc, column, value, allow_duplicates=False)

参数说明:

  • loc:指定插入的为第几行
  • column:给定列名
  • value:包括{int, Series, or array-like}
  • allow_duplicates:是否允许列名重复,选择Ture表示允许新的列名与已存在的列名重复。

上面插入的rank就是一个很好的例子。

五:区间切片

常用函数之一cut(),基本格式为:

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
  •  x:接受一维数组或是series
  • bin:将x划分为多少个等距的区间,将x划分在指定序列中,若不在该序列中,则是Nan。
  • right:是否包含右端点
  • labels:是否用标记来代替返回的bins
  • precision:精度
  • include_lowest:是否包含左端点
pd.cut(df1['old'],bins=[18,21,24,27],include_lowest=True)

pd.cut(df1['old'],4)

若设定precision为4则,最大区间为26-18=8,8/4=2,故一块区间为0-2.

 常用的分箱函数还有qcut(),基本格式为:

pandas.qcut(xqlabels=Noneretbins=Falseprecision=3duplicates='raise')

  • X:只接收1维矩阵或Series.
  • q:整数或list-like of 整型。当q为整数时,代表分箱数。
  • labels:接收array型或False型数据,默认取值为None. 这个参数需要和retbins参数一起使用。当labels=False时,只返回分箱的索引。当labels为array时,其长度要和bins的个数相等。
  • retbins:布尔型可选参数。当为True时,返回(bins,labels)。否则不返回
  • precision: 精度
  • duplicates:默认值为raise. 如果X中有重复值时会报错。当duplicates='drop'时,X中有重复值时会对分箱合并。
pd.qcut(df1['old'],[0,0.2,0.4,0.6,1])

 

pd.qcut(df1['old'],3, labels=["good", "medium", "bad"])

q为整数时为分箱数,labels指定返回时在区间内给予标签:

 

pd.qcut(df1['old'],4,duplicates='drop')

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/849494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号