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”,
)

上述方法中常用参数表示的含义如下:

  1. index,columns:表示带转换的行索引和列索引
  2. axis:表示轴的名称,可以使用index或columns,也可以使用数字0或1
  3. copy:表示是否复制底层的数据,默认为False
  4. inplace:默认为False,表示是否返回新的Pandas对象。如果设为True,则会忽略复制的值。
  5. 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”,
)

上述函数中常用参数表示的含义如下:

  1. x:表示要分箱的数组,必须是一维的
  2. bins:接收int和序列类型的数据。如果传入的是int类型的值,则表示在x范围内的等宽单元的数量(划分为多少个等间距区间);如果传入的是一个序列,则表示将x划分在指定的序列中,若不在此序列中,则为NaN。
  3. right:是否包含右端点,决定区间的开闭,默认为True
  4. labels:用于生成区间的标签
  5. retbins:是否返回bin
  6. precision:精度,默认保留三位小数
  7. 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,
)

上述函数中常用参数表示的含义如下:

  1. data:可接受数组、DataFrame或Series对象,表示哑变量处理的数据
  2. prefix:表示列名的前缀,默认为None
  3. prefix_sep:用于附加前缀作为分隔符使用,默认为“_”
  4. dummy_na:表示是否为NaN值添加一列,默认为False
  5. columns:表示DataFrame要编码的列名,默认为None
  6. sparse:表示虚拟列是否是稀疏的,默认为False
  7. 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443850.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超硬核!数据结构学霸笔记,考试面试吹牛就靠它

上次发操作系统笔记&#xff0c;很快浏览上万&#xff0c;这次数据结构比上次硬核的多哦&#xff0c;同样的会发超硬核代码&#xff0c;关注吧。 超硬核&#xff01;操作系统学霸笔记&#xff0c;考试复习面试全靠它 第一次笔记&#xff08;复习c&#xff0c;课程概述&#xff…

Python之数据拆分——groupby()方法

文章目录groupby()方法通过列名进行分组通过Series对象进行分组Series对象与原数据的行索引长度相等Series对象与原数据的行索引长度不等通过字典进行分组按照columns轴的方向进行分组按照index轴的方向进行分组通过函数进行分组groupby()方法 groupby( self, byNone, axis0, l…

超硬核!小白读了这篇文章,就能在算法圈混了

作为一只超级硬核的兔子&#xff0c;从来不给你说废话&#xff0c;只有最有用的干货&#xff01;这些神级算法送给你 目录 第一节 1.1bogo排序 1.2位运算 1.3打擂台 1.4morris遍历 第二节 2.1睡眠排序 2.2会死的兔子 2.3矩阵快速幂 2.4摔手机/摔鸡蛋 时空复杂度目录 …

Python之数据聚合——aggregate()方法

文章目录使用内置统计方法聚合数据面向列的聚合方法aggregate()方法对每一列数据应用同一个函数对某列数据应用不同的函数对不同列数据应用不同函数使用内置统计方法聚合数据 实现数据拆分成组并分别计算平均数的操作 代码&#xff1a; import pandas as pd import numpy as…

超硬核十万字!全网最全 数据结构 代码,随便秒杀老师/面试官,我说的

本文代码实现基本按照《数据结构》课本目录顺序&#xff0c;外加大量的复杂算法实现&#xff0c;一篇文章足够。能换你一个收藏了吧&#xff1f; 当然如果落下什么了欢迎大家评论指出 目录 顺序存储线性表实现 单链表不带头标准c语言实现 单链表不带头压缩c语言实现 约瑟…

Python之分组级运算——【transform()方法、apply()方法】

文章目录数据转换——transform()方法数据应用——apply()方法数据转换——transform()方法 使用aggregate()方法进行聚合运算已经在上一篇博客中详细阐述&#xff0c;我们知道aggregate()方法返回的数据集的形状&#xff08;shape&#xff09;与被分组的数据集的形状是不同的…

java限制在同一台电脑上只允许有一个用户登录系统

在web应用系统中&#xff0c;出于安全性考虑&#xff0c;经常需要对同一客户端登录的用户数量和一个客户同时在多个客户端登陆进行限制。 具体一点就是&#xff1a; 1、在同一台电脑上一次只允许有一个用户登录系统&#xff1b; 2、一个用户在同一时间只允许在一个客户端登录…

Matplotlib——绘制图表

文章目录通过figure()函数创建画布通过subplot()函数创建单个子图通过subplots()函数创建多个子图通过add_subplot()方法添加和选中子图添加各类标签绘制常见图表绘制直方图——hist()函数绘制散点图——scatter()函数绘制柱状图——bar()函数设定线条的相关参数本地保存图片通…

限制在同一台电脑上只允许有一个用户登录系统

在web应用系统中&#xff0c;出于安全性考虑&#xff0c;经常需要对同一客户端登录的用户数量和一个客户同时在多个客户端登陆进行限制。 具体一点就是&#xff1a; 1、在同一台电脑上一次只允许有一个用户登录系统&#xff1b; 2、一个用户在同一时间只允许在一个客户端登录…

Seaborn——绘制统计图形

文章目录可视化数据的分布绘制单变量分布绘制双变量分布绘制成对的双变量分布用分类数据绘图类别散点图通过stripplot()函数画散点图swarmplot()函数类别内的数据分布绘制箱型图绘制提琴图类别内的统计估计绘制条形图绘制点图可视化数据的分布 绘制单变量分布 一般采用最简单…

Bokeh——交互式可视化库

文章目录前言如何通过Plotting绘制图形前言 Bokeh是一个专门针对Web浏览器使用的交互式可视化库&#xff0c;这是与其他可视化库相比最核心的区别。 如何通过Plotting绘制图形 Plotting是以构建视觉符号为核心的接口&#xff0c;可以结合各种视觉元素&#xff08;例如&#x…

指针、引用以及const限定符、constexpr限定符

文章目录复合类型引用概念与使用引用的定义注意指针概念声明方式取地址符指针值空指针利用指针访问对象赋值和指针void* 指针指向指针的指针指向指针的引用初始化所有指针有多重含义的某些符号const限定符概念const的引用指针和const顶层const和底层constconstexpr和常量表达式…

关键字typedef、关键字using、auto类型说明符和declytpe类型指示符

文章目录类型别名概念关键字 typedef别名声明 (alias declaration) using指针、常量和类型别名类型别名简化多维数组指针auto类型说明符概念复合类型、常量和autodecltype类型指示符概念decltype和引用类型别名 概念 有两种方法可用于定义类型别名。 关键字 typedef typede…

初始化、赋值、默认初始化、列表初始化、类内初始值、直接初始化与拷贝初始化

文章目录初始化和赋值的区别什么是默认初始化&#xff1f;列表初始化列表初始化的使用场景不适合使用列表初始化的场景类内初始值混用string对象和C风格字符串数组与vector对象关于vector对象两者间的初始化关系直接初始化与拷贝初始化初始化和赋值的区别 初始化的含义是创建变…

js动态增加,删除td,tr,table,div

js实现的动态添加&#xff0c;删除table内容&#xff1a; 截图如下&#xff1a; 1. 2. 源代码&#xff1a; main.css body {background-image: url(../images/qiantai/bg.png);font-family: arial;font-size: 12px;color: #d4d7da;text-align: center;background-repeat: r…

string类的相关知识及部分操作

文章目录string对象的初始化string::size_type类型string对象的读写操作使用标准库中的iostream使用getline读取一整行string对象的比较操作string对象的相加操作两个string对象相加字面值和string对象相加string对象的初始化 拷贝初始化(copy initialization)&#xff1a;使用…

数组的部分练习

3.27&#xff1a;假设txt_size是一个无参数的函数&#xff0c;它的返回值是int。请回答下列哪个定义是非法的&#xff1f;为什么&#xff1f; unsigned buf_size1024; &#xff08;a&#xff09;int ia[buf_size];  &#xff08;b&#xff09;int ia[4*7-14]; &#xff08…

关于范围for语句的使用

文章目录使用范围for语句处理多维数组使用范围for语句处理多维数组 举个例子&#xff0c;使用范围for语句输出多维数组&#xff08;ia&#xff09;所有值&#xff1a; for (const auto &row : ia)for (auto col : row)cout << col << endl;本循环中并没有任何…

vector的应用练习

文章目录编写一段程序&#xff0c;使用条件运算符从vector< int >中找出哪些元素的值是奇数&#xff0c;然后将奇数值翻倍。 #include <iostream> #include <ctime> #include <vector> using namespace std; typedef int int_array[4]; int main() {v…

sizeof运算符运算结果小汇

文章目录sizeof运算符的结果部分地依赖于其作用的类型sizeof运算符的结果部分地依赖于其作用的类型 对char或者类型为char的表达式执行sizeof运算&#xff0c;结果得1对引用类型执行sizeof运算得到被引用对象所占空间的大小对指针执行sizeof运算得到指针本身所占空间的大小对解…