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

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


前言

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')

 参数说明:

  • to_replace:指定将出现在数据集里的文本。
  • value:指定替换成的文本。
  • inplace:是否替换原数据集。
  • limit:是否限制替换个数
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值表示沿着每一列或行标签\索引值向下执行方法
    • 使用1值表示沿着每一行或者列标签模向执行对应的方法
  • 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')

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/794116.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存