Python之数据转换——【rename()方法、cut()函数、get_dummies()函数】
文章目录
- 重命名轴索引
- 离散化连续数据
- 哑变量处理类别型数据
重命名轴索引
rename(
self,
mapper: Optional[Renamer] = None,
*,
index: Optional[Renamer] = None,
columns: Optional[Renamer] = None,
axis: Optional[Axis] = None,
copy: bool = True,
inplace: bool = False,
level: Optional[Level] = None,
errors: str = “ignore”,
)
上述方法中常用参数表示的含义如下:
- index,columns:表示带转换的行索引和列索引
- axis:表示轴的名称,可以使用index或columns,也可以使用数字0或1
- copy:表示是否复制底层的数据,默认为False
- inplace:默认为False,表示是否返回新的Pandas对象。如果设为True,则会忽略复制的值。
- level:表示级别名称,默认为None。对于多级索引,只重命名指定的标签。
代码:
df = pd.DataFrame({'A': ['1', '2', '4'],'B': ['9', '-80', '5.3'],'C': ['x', '5.9', '0']})
print("df:\n", df)
print("df.rename:\n", df.rename(columns={'A': 'a', 'B': 'b', 'C': 'c'}))
输出结果:
df:A B C
0 1 9 x
1 2 -80 5.9
2 4 5.3 0
df.rename:a b c
0 1 9 x
1 2 -80 5.9
2 4 5.3 0
以上也可以根据str中提供的使字符串变成小写的功能函数lower()来重命名索引的名称,无需再使用字典逐个进行替换。
代码:
print("df.rename(str.lower, axis=1):\n", df.rename(str.lower, axis=1))
输出结果:
df.rename(str.lower, axis=1):a b c
0 1 9 x
1 2 -80 5.9
2 4 5.3 0
也可以对行索引进行重命名
代码:
print("df.rename(index={1: 'a'}):\n", df.rename(index={1: 'a'}))
输出结果:
df.rename(index={1: 'a'}):A B C
0 1 9 x
a 2 -80 5.9
2 4 5.3 0
离散化连续数据
cut(
x,
bins,
right: bool = True,
labels=None,
retbins: bool = False,
precision: int = 3,
include_lowest: bool = False,
duplicates: str = “raise”,
)
上述函数中常用参数表示的含义如下:
- x:表示要分箱的数组,必须是一维的
- bins:接收int和序列类型的数据。如果传入的是int类型的值,则表示在x范围内的等宽单元的数量(划分为多少个等间距区间);如果传入的是一个序列,则表示将x划分在指定的序列中,若不在此序列中,则为NaN。
- right:是否包含右端点,决定区间的开闭,默认为True
- labels:用于生成区间的标签
- retbins:是否返回bin
- precision:精度,默认保留三位小数
- include_lowest:是否包含左端点
cut()会返回一个Catagorical对象,我们可以将其看作一组表示面元名称的字符串,它包含了分组的数量以及不同分类的名称。
代码:
ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 32]
bins = [0, 18, 25, 35, 60, 100]
print("pd.cut(ages, bins):\n", pd.cut(ages, bins))
输出结果:
pd.cut(ages, bins):[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (35, 60], (25, 35], (60, 100], (35, 60], (25, 35]]Length: 11
Categories (5, interval[int64]): [(0, 18] < (18, 25] < (25, 35] < (35, 60] < (60, 100]]
Catagorical对象中的区间范围默认设置为左开右闭区间,如果希望设置左闭右开区间,则可以在调用cut()函数时传入right=False进行修改。
测试对象:
df = pd.DataFrame({'A': ['1', '2', '4'],'B': ['9', '-80', '5.3'],'C': ['x', '5.9', '0']})
代码:
print("pd.cut(df['B']):\n",
pd.cut(df['B'].astype(dtype='float'), bins, right=False))
输出结果:
pd.cut(df['B']):0 [0.0, 18.0)
1 NaN
2 [0.0, 18.0)
Name: B, dtype: category
Categories (5, interval[int64]): [[0, 18) < [18, 25) < [25, 35) < [35, 60) < [60, 100)]
哑变量处理类别型数据
哑变量又称虚拟变量、名义变量,从名称上看就知道,它是人为虚设的变量,用来反映某个变量的不同类别。使用哑变量处理类别转换,事实上就是将分类变量转换为哑变量矩阵或指标矩阵,矩阵的值通常用“0”或“1”表示。
在Pandas中,可以使用get_dummies()函数对类别特征进行哑变量处理。
get_dummies(
data,
prefix=None,
prefix_sep="_",
dummy_na=False,
columns=None,
sparse=False,
drop_first=False,
dtype=None,
)
上述函数中常用参数表示的含义如下:
- data:可接受数组、DataFrame或Series对象,表示哑变量处理的数据
- prefix:表示列名的前缀,默认为None
- prefix_sep:用于附加前缀作为分隔符使用,默认为“_”
- dummy_na:表示是否为NaN值添加一列,默认为False
- columns:表示DataFrame要编码的列名,默认为None
- sparse:表示虚拟列是否是稀疏的,默认为False
- drop_first:是否通过从k个分级类别中删除第一个级来获得k-1个分类级别,默认为False
测试对象:
df = pd.DataFrame({'A': ['1', '2', '4'],'B': ['9', '-80', '5.3'],'C': ['x', '5.9', '0']})
代码:
test1 = df['B'].astype(dtype='float')
print(pd.get_dummies(test1, prefix='col', prefix_sep='_'))
输出结果:
col_-80.0 col_5.3 col_9.0
0 0 0 1
1 1 0 0
2 0 1 0
Python之数据转换——【rename()方法、cut()函数、get_dummies()函数】相关推荐
- Python生成器的send方法、递推函数、匿名函数及常用内置函数
1.生成器的send方法 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值 1.1 什么是send方法? send方法相当于高级的next方 ...
- Python之pandas:pandas的get_dummies函数简介(将分类变量转为哑变量)及其使用方法之详细攻略
Python之pandas:pandas的get_dummies函数简介(将分类变量转为哑变量)及其使用方法之详细攻略 目录 pandas的get_dummies函数简介 pandas.get_dum ...
- python内置方法就是内置函数_python内置函数
什么是内置函数? 就是python给你提供的,拿来直接用的函数, 比如print 和 input等等. 截止到python版本3.6.2 python一共提供了68个内置函数. 他们就是python直 ...
- python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法
python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录
- Python编程语言学习:sklearn.manifold的TSNE函数的简介、使用方法、代码实现之详细攻略
Python编程语言学习:sklearn.manifold的TSNE函数的简介.使用方法.代码实现之详细攻略 目录 Manifold简介 TSNE简介-数据降维且可视化 TSNE使用方法 TSNE代码 ...
- Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略
Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略 目录 sklearn中的train_test_split函数的简介 train_tes ...
- Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介、具体案例、使用方法之详细攻略
Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介.具体案例.使用方法之详细攻略 目录 pandas中数据处理常用函数(isnull/dropna/fillna/ ...
- Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略
Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略 目录 sklearn中的RobustScaler 函数的简介及使用方法 sklearn中的R ...
- Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能
Python语言学习:基于python五种方法实现使用某函数名[func_01]的字符串格式('func_01')来调用该函数[func_01]执行功能 目录 问题提出 代码五种设计思路 T1方法:e ...
最新文章
- [转] GMT、UTC与24时区 等时间概念
- 邬贺铨:5G资费便宜10倍 WiFi覆盖更为重要
- 成功解决利用pandas输出DataFrame格式数据表时没有最左边的索引编号(我去,这个问题折腾了我半个多小时)
- simple java mail
- 用宏定义写出swap(x,y)
- Skywalking-12:Skywalking SPI机制
- strcpy vs memcpy
- python通过什么对象连接数据库_干货!python与MySQL数据库的交互实战
- 大学计算机在线阅读,大学计算机
- android 多类型参数,Android的数据绑定-类型参数T具有不兼容的上限:ViewDataBinding和MainActivity...
- 教你用Python轻松批量获取快手无水印视频以及详细信息!(侵权删)
- oracle四大索引类型,各种Oracle索引类型介绍
- 为啥OpenStack厂商要参加双态运维大会?
- 烽火fr2600怎么web登录_烽火配置教程
- 宠物商店mysql数据库设计_宠物商城数据库设计
- 《易经》里的28条法则与64个大智慧
- Py之shap:shap库的简介、安装、使用方法之详细攻略
- 【Linux】解决Centos软件安装源出错
- APP上架到各大应用商店指南
- match和search的区别
热门文章
- node python复用代码_python-代码复用(函数、lambda、递归、PyInstaller库)
- 允许使用抽象类类型 isearchboxinfo 的对象_此对象非彼对象(面向对象)3
- 12306加密传输_三大运营商发5G消息白皮书:短消息服务升级,支持加密传输
- 计算机图形学在线作业,电子科技16秋《计算机图形学》在线作业3 辅导资料
- html中怎么写jq,用jQuery替换HTML页面中的文本
- ashx连接mysql_对C#中的web访问mysql数据库的一些知识点进行了整理归纳总结
- 【转】DICOM的常用Tag分类和说明
- 【转】使用PowerApps快速构建基于主题的轻业务应用 —— 入门篇
- SharePoint学习札记[2] — MOSS2007体系结构概述
- asp.net mvc webform和razor的page基类区别