Pandas数据清洗工具箱
选自medium,作者:Darren Burns
本文转自机器之心(nearhuman2014)
在用pandas进行数据处理时,同一个操作经常会重复很多次,由于这些常见的场景涉及到不同类型的数据集,因此本文更加侧重于展示和解释这些代码可以用于完成哪些工作,以便读者更加方便地使用它们。
在下面的代码片段中,数据清洗代码被封装在了一些函数中,代码的目的十分直观。你可以直接使用这些代码,无需将它们嵌入到需要进行少量参数修改的函数中。
1. 删除多列数据
def drop_multiple_col(col_names_list, df): '''AIM -> Drop multiple columns based on their column names INPUT -> List of column names, dfOUTPUT -> updated df with dropped columns ------'''df.drop(col_names_list, axis=1, inplace=True)return df
有时,并不是所有列的数据都对我们的数据分析工作有用。因此,df.drop
可以方便地删掉你选定的列。
2. 转换 Dtypes
def change_dtypes(col_int, col_float, df): '''AIM -> Changing dtypes to save memoryINPUT -> List of column names (int, float), dfOUTPUT -> updated df with smaller memory ------'''df[col_int] = df[col_int].astype('int32')df[col_float] = df[col_float].astype('float32')
当我们面对更大的数据集时,我们需要对「dtypes」进行转换,从而节省内存。如果你有兴趣学习如何使用Pandas来处理大数据,我强烈推荐你阅读「Why and How to Use Pandas with Large Data」这篇文章(https://towardsdatascience.com/why-and-how-to-use-pandas-with-large-data-9594dda2ea4c
)。
3. 将分类变量转换为数值变量
def convert_cat2num(df):# Convert categorical variable to numerical variablenum_encode = {'col_1' : {'YES':1, 'NO':0},'col_2' : {'WON':1, 'LOSE':0, 'DRAW':0}} df.replace(num_encode, inplace=True)
有一些机器学习模型要求变量是以数值形式存在的。这时,我们就需要将分类变量转换成数值变量然后再将它们作为模型的输入。对于数据可视化任务来说,我建议大家保留分类变量,从而让可视化结果有更明确的解释,便于理解。
4. 检查缺失的数据
def check_missing_data(df):# check for any missing data in the df (display in descending order)return df.isnull().sum().sort_values(ascending=False)
如果你想要检查每一列中有多少缺失的数据,这可能是最快的方法。这种方法可以让你更清楚地知道哪些列有更多的缺失数据,帮助你决定接下来在数据清洗和数据分析工作中应该采取怎样的行动。
5. 删除列中的字符串
def remove_col_str(df):# remove a portion of string in a dataframe column - col_1df['col_1'].replace('\n', '', regex=True, inplace=True)# remove all the characters after &# (including &#) for column - col_1df['col_1'].replace(' &#.*', '', regex=True, inplace=True)
有时你可能会看到一行新的字符,或在字符串列中看到一些奇怪的符号。你可以很容易地使用 df['col_1'].replace
来处理该问题,其中「col_1」是数据帧 df 中的一列。
6. 删除列中的空格
def remove_col_white_space(df):# remove white space at the beginning of string df[col] = df[col].str.lstrip()
当数据十分混乱时,很多意想不到的情况都会发生。在字符串的开头有一些空格是很常见的。因此,当你想要删除列中字符串开头的空格时,这种方法很实用。
7. 将两列字符串数据(在一定条件下)拼接起来
def concat_col_str_condition(df):# concat 2 columns with strings if the last 3 letters of the first column are 'pil'mask = df['col_1'].str.endswith('pil', na=False)col_new = df[mask]['col_1'] + df[mask]['col_2']col_new.replace('pil', ' ', regex=True, inplace=True) # replace the 'pil' with emtpy space
当你希望在一定条件下将两列字符串数据组合在一起时,这种方法很有用。例如,你希望当第一列以某些特定的字母结尾时,将第一列和第二列数据拼接在一起。根据你的需要,还可以在拼接工作完成后将结尾的字母删除掉。
8. 转换时间戳(从字符串类型转换为日期「DateTime」格式)
def convert_str_datetime(df): '''AIM -> Convert datetime(String) to datetime(format we want)INPUT -> dfOUTPUT -> updated df with new datetime format ------'''df.insert(loc=2, column='timestamp', value=pd.to_datetime(df.transdate, format='%Y-%m-%d %H:%M:%S.%f'))
在处理时间序列数据时,你可能会遇到字符串格式的时间戳列。这意味着我们可能不得不将字符串格式的数据转换为根据我们的需求指定的日期「datetime」
格式,以便使用这些数据进行有意义的分析和展示。
由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:(1)点击页面最上方“小詹学Python”,进入公众号主页。
(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。
Pandas数据清洗工具箱相关推荐
- 2.pandas数据清洗
2.pandas数据清洗 pandas是用于数据清洗的库,安装配置pandas需要配置许多依赖的库,而且安装十分麻烦. 解决方法:可以用Anaconda为开发环境,Anaconda内置了许多有关数据清 ...
- python pandas数据清洗:sample()函数
DataFrame.sample DataFrame.sample方法主要是用来对DataFrame进行简单随机抽样的. PS:这里说的是简单随机抽样,表示是不能用来进行系统抽样.分层抽样的. Dat ...
- pandas数据清洗:案例详解 fillna函数 填补空缺值
pandas数据清洗:fillna函数填补空缺值 1 fillna函数简介 2 填补空缺值3种方法 2.1 构建学习数据 2.2 填补特定值 2.3 用前一个非空缺值填充 2.4 用后一个非空缺值填充 ...
- pandas数据清洗:drop函数案例详解、dropna函数案例详解、drop_duplicates函数案例详解
pandas数据清洗:drop函数.dropna函数.drop_duplicates函数详解 1 drop函数简介 1.1 构建学习数据 1.2 删除行两种方法 1.3 删除列两种方法 2 dropn ...
- python.pandas数据清洗(数据填充与条件删除)
在数据挖掘中,数据清洗占很大一部分工作,数据清洗是一件比较繁琐的事情. 本文介绍一下问题的解决方案: 1. 读入csv文件,条件过滤缺失值的行或者列 2. DataFrame数据的缺失值填充 3. A ...
- python-数据分析-(12)pandas数据清洗、缺失值、重复值、异常值处理常见方法
一.导入模块 import pandas as pd from scipy.interpolate import interp1d 二.读取excel文件 data=pd.read_excel(r'E ...
- python pandas数据清洗_Pandas进行数据清洗的方法介绍
Pandas进行数据清洗的方法介绍,数据清洗是一项复杂且繁琐的工作,同时也是整个数据分析过程中最为重要的环节.Pandas中常见的数据清洗操作有空值和缺失值的处理.重复值的处理.异常值的处理.统一数据 ...
- 某通讯录同步助手pandas数据清洗
'''因为换手机需要导入通讯录产生的数据清洗需求使用某通讯录同步助手,产生联系人姓和名的索引问题导出联系人到本地,选择.csv格式观察数据,发现'姓'列有一部分是',','名'列也差不多 print( ...
- 【pandas数据清洗与处理】项目7-国产烂片深度分析
1.读取数据,以"豆瓣评分"为标准,看看电影评分分布,及烂片情况 要求: ① 读取数据"moviedata.xlsx" ② 查看"豆瓣评分" ...
最新文章
- 唯美动态个人404单页HTML源码
- python实现一个简单的图片浏览器
- android lottie大小,android-Lottie动画填充
- c语言 步进电机 程序,步进电机加速启动C语言程序
- N76E003红外解码程序
- 弹簧卸扣的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 40页PPT详解:京东大数据基础构架与创新应用
- 勾股定理 —— 证明大全
- 播放res/raw文件(MP4)
- OpenWRT 设置脚本自动更新hosts访问不可描述的站点
- 电大计算机统考大纲,电大计算机专科论文大纲模板范文 电大计算机专科论文提纲怎么写...
- Ubuntu_apt-update_Certificate-verification-failed
- 洛谷:尼克的任务【记忆化搜索】【记忆化搜索的使用条件】
- 20条非常实用的Python代码实例
- UVa-10082-WERTYU
- 利用VideoView简单实现视频播放 包括 横竖屏切换 声音 亮度 暂停
- 芯片检测(分治法经典问题)
- ZZ关于椭圆标准方程转参数方程
- 小程序 UnionID详解和使用场景
- loadrunner12.6版本,不显示监控图标怎么办?
热门文章
- 推荐php 8新特性比较好的两个网站
- Python进度条,可用在for循环中查看循环个数的执行情况(很实用)
- 数据分析TB级别数据量大了怎么办,不会代码模型训练怎么办?
- kafka(一)-为什么使用kafka
- PHP数组推入弹出的函数:头进头出array_unshift/array_shift 尾进尾出array_push/array_pop
- 服务器打开虚拟机电源重启,虚拟机服务器自动重启
- 普罗米修斯java_springboot集成普罗米修斯(Prometheus)的方法
- 湖南大学计算机考研考什么,2017年湖南大学计算机系统考研大纲
- 西南石油大学计算机科学校区,任冬梅 - 西南石油大学 - 计算机科学学院
- 以某个字符开始_小白从零开始数据分析01—Excel常用公式汇总(数据清洗)