Pandas数据清洗常用函数

news/2024/11/28 5:37:59/

构造一个数据集,便于演示这些函数。

import pandas as pd
df = {'姓名': ['漩涡鸣人', '宇智波佐助', '旗木卡卡西', '春野樱', '宇智波鼬'],'性别': ['男', '男', 'men', 'women', '男'],'身份证': ['463895200003128433', '429475199912122345', '420934199110102311', '431085200005230122', '420953199509082345'],'身高': ['low: 165_bad', 'low: 166_bad', 'high: 178_verygood', 'low: 160_bad', 'mid: 175_good'],'家庭住址': ['木叶漩涡一族', '木叶宇智波一族', '木叶旗木一族', '木叶居民', '木叶宇智波一族'],'电话号码': ['13434813546', '19748672895', '16728613064', '14561586431', '19384683910'],'收入': ['1.0万', '1.1万', '2.0万', '8.5千', '2.5万']}
df = pd.DataFrame(df)
df

# cat函数——主要用于字符串的拼接
df['姓名'].str.cat(df['家庭住址'], sep='-'*3)

 

# contains函数——判断某个字符串是否包含给定字符
df['家庭住址'].str.contains('木叶')

 

# startswith函数——判断某个字符串是否以给定字符串开头
df['姓名'].str.startswith('宇智波')

 

# count函数——计算给定字符在字符串中出现的次数
df['电话号码'].str.count('3')

# get函数——获取指定位置的字符串
df['姓名'].str.get(-1)

 

df['身高'].str.split(':')

df['身高'].str.split(':').str.get(0)

 

# len函数——主要用于计算字符串长度
df['性别'].str.len()

 

# pad、center函数——在字符串的左边、右边或左右两边添加给定字符
df['家庭住址'].str.pad(10, fillchar='*')

 

df['家庭住址'].str.pad(10, side='right', fillchar='*')

df['家庭住址'].str.center(10, fillchar='*')

 

# repeat函数——主要用于重复字符串多少次
df['性别'].str.repeat(3)

# slice_replace函数——使用给定的字符串替换指定位置的字符
df['电话号码'].str.slice_replace(3, 7, '*'*4)

 

# replace函数——使用给定的字符(串)替换指定字符(串)
df['身高'].str.replace(':', ' -')

# split + expand参数——将一列扩展为多列
df[['身高描述', 'final身高']] = df['身高'].str.split(':', expand=True)
df

# split + join —— 类似于replace函数
df['身高'].str.split(':').str.join(' ?'*5)

 

# strip函数——主要用于去除空白符、换行符
df['姓名'] = df['姓名'].str.strip()
df['姓名'].str.len()

 

# findall函数——利用正则表达式,去字符串中匹配,返回查找结果的列表
df['身高'].str.findall('[a-zA-Z]+')

 

# extract、extractall函数——接受正则表达式,抽取匹配的字符串(一定要加上括号)
df['身高'].str.extract('([a-zA-Z]+)')

 

df['身高'].str.extractall('([a-zA-Z]+)')

 

df['身高'].str.extract('([a-zA-Z]+).*?([a-zA-Z]+)', expand=True)

 


http://www.ppmy.cn/news/487376.html

相关文章

Python数据挖掘入门与实践-第9章-古腾堡计划网站书籍资料下载

由于python版本以及网站更新等原因,导致了书上的代码没有用了。因此自己试着修改了代码。 下面就来讲讲修改中遇到的主要问题 问题:网站URL变更 # 书上的代码 url_base "http://www.gutenberg.myebook.bg/"fixes[1044] url_base "1…

js基础5 事件的传播/拖拽/键盘事件/div移动

事件的传播 事件的传播关于事件的传播网景公司和微软公司有不同的理解微软公司认为事件应该是由内向外传播,也就是当事件触发时,应该先触发当前元素上的事件,然后再向当前元素的祖先元素上传播,也就说事件应该在冒泡阶段执行。网…

locust学习教程(3)- 编写locust脚本

前言 一句话总结:并发的用户执行了第一类测试任务、第二类测试任务,设置所有类的测试前置、测试后置,设置每一类测试任务的测试前置,测试后置。 1、概念 1.1、一个完整的脚本示例 from locust import task, HttpUser, constant…

el-tree的使用,懒加载数据

前段时间碰到项目需要使用el-tree&#xff0c;由于未接触过还是花费了一段时间&#xff0c;特此记录一下。 需求 要初始化树形数据&#xff0c;点击展开时请求后端数据返回&#xff0c;组装成新树再渲染展示。 来吧展示 <el-form-item label"实体类型" prop&quo…

后端一次返回过多数据,前端应该如何优化处理?

我们可以采用延迟加载的策略&#xff0c;根据用户的滚动位置动态渲染数据。 创建一个server.js const http require(http) const port 8000;let list [] let num 0// create 100,000 records for (let i 0; i < 100_000; i) {numlist.push({src: https://miro.medium.…

CentOS7中使用nfs共享资源

nfs服务器&#xff1a;192.168.186.10 nfs客户端&#xff1a;192.168.186.71&#xff0c;192.168.186.74&#xff0c;192.168.186.89&#xff0c;192.168.186.92 需求&#xff1a;客户端这四台获取服务端的/home/wwwweb/ea目录 1&#xff1a;nfs客户端和服务端都要先启动rpcb…

数据结构(一二章链表题目)

已知长度为n的线性表A采用顺序存储结构&#xff0c;请写一时间复杂度为O(n)、空间复杂度为O(1)的算法&#xff0c;该算法删除线性表中所有值为item的数据元素。 #include <iostream> #include<malloc.h> #include<cstdio> using namespace std; typedef int…

springboot2.1.1 mybatis mysql连接weblogic12的JNDI数据源,并在weblogic中部署

目测只能把springboot打成war包&#xff0c;部署到weblgic上。 因为开发环境下用main函数运行项目&#xff0c;会报错&#xff1a; Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet par…