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

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

前言


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


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


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


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


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


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


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


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


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


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


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


演示数据:

fde2fd03a0cc4167b37121bd834c2c08.png

一、数值替换


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)

0135ab8519004b46badeff92eda88f84.png


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


多值替换:


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


625cd8f55ec240ec9dc1ee57cc234906.png

多对多修改,传入字典:


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


b483f1415a084fa3ba91125169aab84b.png


二、数值排序


常用函数sort_values,基本格式:


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



参数说明:


by:str or list of str ,指定排序的列或者列的列表。

axis:指定是列排序还是行排序,

使用0值表示沿着每一列或行标签\索引值向下执行方法

使用1值表示沿着每一行或者列标签模向执行对应的方法

ascending:默认为升序排序。

inplace:是否替换原来的数据集。

kind:排序方式。

na_postition:是否将缺失值放在最前面。

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

357217f3577646ec8648fa4db276b9ec.png

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

2f1749e34b884f63b2fe332130788337.png

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


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

5e070b1f680f461186a84b76e53758d3.png


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


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

d8d4c82da1744a5bacbbbf9496121dac.png

三、排名


排完序后难免有会有相同大小数值数据,可以通过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()


ceec66ce450e411289e6fe4ef1627846.png

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

658f990a12f84ed0899e7276cf362d83.png


这样更加直观。


四、插入


一般使用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=Fals


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

8dddfbde850a4d15b7567ebb55d35acb.png

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

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


29f7a20c61604e44844b26fcf80cc830.png

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


pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='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])

a1d51a0c6baa4a2b9dd493c54f83e282.png


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


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

99feba7172ff4c8cacbc5daa2a8efafd.png

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

66fd1a1b9ef54f7199f228ed193b9fd2.png

目录
相关文章
|
5月前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by='A', ascending=False)`。`rank()`函数用于计算排名,如`df['A'].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`和分别对'A'、'B'列排名。
78 2
|
7天前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
21 0
|
3月前
|
数据挖掘 Python
【Python】已解决:Python pandas读取Excel表格某些数值字段结果为NaN问题
【Python】已解决:Python pandas读取Excel表格某些数值字段结果为NaN问题
177 0
|
7天前
|
数据挖掘 数据处理 Python
Pandas中groupby后的数据排序技巧
Pandas中groupby后的数据排序技巧
12 0
|
7天前
|
数据采集 运维 数据挖掘
Pandas中的Rank用法:数据排序的高效工具
Pandas中的Rank用法:数据排序的高效工具
15 0
|
7天前
|
数据挖掘 索引 Python
Pandas中的排序技巧:让你的数据井然有序
Pandas中的排序技巧:让你的数据井然有序
11 0
|
4月前
|
数据采集 安全 数据处理
Python采集数据处理:利用Pandas进行组排序和筛选
使用Python的Pandas库,结合亿牛云代理和多线程技术,提升网络爬虫数据处理效率。通过代理IP避免封锁,多线程并发采集,示例代码展示数据分组、排序、筛选及代理IP配置和线程管理。
Python采集数据处理:利用Pandas进行组排序和筛选
|
5月前
|
Python
使用Python pandas的sort_values()方法可按一个或多个列对DataFrame排序
【5月更文挑战第2天】使用Python pandas的sort_values()方法可按一个或多个列对DataFrame排序。示例代码展示了如何按'Name'和'Age'列排序 DataFrame。先按'Name'排序,再按'Age'排序。sort_values()的by参数接受列名列表,ascending参数控制排序顺序(默认升序),inplace参数决定是否直接修改原DataFrame。
205 1
|
23天前
|
机器学习/深度学习 数据采集 监控
Pandas与Matplotlib:Python中的动态数据可视化
Pandas与Matplotlib:Python中的动态数据可视化
|
7天前
|
Python
Python:Pandas实现批量删除Excel中的sheet
Python:Pandas实现批量删除Excel中的sheet
23 0
下一篇
无影云桌面