六个步骤学会简单的数据清洗

news2024/9/30 15:36:26

在使用机器学习等各种模型来分析数据的时候,最重要的就是如何对原始数据进行清洗和加工,以下几个步骤实现最简单的数据清洗;

以下使用 kaggle 上的泰坦尼克号经典数据集为例子;

daownload link:https://link.zhihu.com/?target=https%3A//www.kaggle.com/hesh97/titanicdataset-traincsv

一、读取数据

import pandas as pd
import numpy as np

data_raw = pd.read_csv('train.csv')
data_raw

 二、了解数据

1.数据整体预览

data_raw.info()
data_raw.describe(include='all')

三、检查填充数据缺失情况

data = data_raw.copy(
data.isnull().sum()

 

1.数据缺失情况

3种特征有null值,Age特征177个,Cabin特征687个,Embarked 2个;
总共891个数据,Cabin缺失687个,有两种解决方案;

1.是认为这个特征没用,直接去掉;

2.是对这个数据做处理(统计Nan值,或者更加关注未缺失的数据,可能有大用)

2. 填充处理

null较少的两个特征填充数据,其中Age特征是数值型(Numeric)特征,Embarked特征是类别型(Categorical)特征
数值型可以用mean,median等填充
类别型可以用.mode(),取出现次数最多的

data['Age'].fillna(data['Age'].median(), inplace = True)
data['Embarked'].fillna(data['Embarked'].mode()[0], inplace = True)

data.isnull().sum()

 四、特征工程

1. 去除掉认为没用的特征

drop_column = ['PassengerId','Cabin', 'Ticket']
data = data.drop(drop_column, axis=1, inplace = True)

2.构建新特征

data['FamilySize'] = data['SibSp'] + data['Parch'] + 1

data['single'] = np.where(data['FamilySize'] > 1,0,1)

data['Title'] = data['Name'].str.split(", ", expand=True)[1].str.split(".", expand=True)[0]

data

3.对连续型特征做分箱处理 

data['FareCut'] = pd.qcut(data['Fare'], 4)
data['AgeCut'] = pd.cut(data['Age'].astype(int), 6)
data

五、对离散/文本类特征做编码处理

1. LabelEncoder方法

from sklearn.preprocessing import LabelEncoder

label = LabelEncoder()
data['Sex_Code'] = label.fit_transform(data['Sex'])
data['Embarked_Code'] = label.fit_transform(data['Embarked'])
data['Title_Code'] = label.fit_transform(data['Title'])
data['AgeBin_Code'] = label.fit_transform(data['AgeCut'])
data['FareBin_Code'] = label.fit_transform(data['FareCut'])
data

 2.get_dummies方法

pd.get_dummies(data['Sex'])

 六、最后检查数据

data.info()

 以上就完成了最简单的数据清洗,可以使用算法模型进行后续计算了

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

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

相关文章

ModuleNotFoundError: No module named ‘xxx‘ 问题解决

ModuleNotFoundError: No module named ‘utils’ 这个问题发生的主要原因,我搜索网络,大概意思就是在py文件中使用了__main__函数,破坏了什么路径识别什么的, 遇到这个问题我发现我导入的utils这个pacakge是有的,那就…

【AutoGluon_02】更优精度与特征重要性

【AutoGluon_02】更优精度与特征重要性 1、优化改良版autogluon2、快速使用3、模型训练4、更高的输出精度5、模型评估(1)模型排行榜(2)输出各特征重要性(3)模型性能可视化 6、输出最终模型7、预测 除了auto…

Scala的trait和extend代码运用实战Demo例子

1、概述 在Scala中,trait是一种特殊的概念,它类似于Java中的接口。trait可以定义方法和字段,但是不能实例化。类可以扩展trait,从而获得trait中定义的方法和字段。 在Scala中,extend关键字用于扩展类或特质。当一个类…

2.playbook剧本

文章目录 playbook剧本创建剧本运行剧本定义和引用变量指定远程主机sudo切换用户when条件判断剧本格式迭代with_itemswith_listwith_flattenedwith_togetherwith_cartesianwith_nested Templates模块tags模块 playbook剧本 playbooks 本身由以下各部分组成 Tasks:任…

基于javeSprict的WebAPI详解

一、前言 作为后端开发,前端其实只需要了解一些就可以了,不需要了解多么深入。在前面我们已经学习了ECMAScript:的基础语法部分,还有DOM API和BOM API需要学习。 DOM API主要负责操作页面结构。 所有的WebAPI可以参考下面这个网址里面的信息…

高清视频制作GIF怎么操作?一个工具在线完成视频转GIF

一段视频为了方便传输分享想要做成GIF动画的时候要怎么操作呢?很简单,只需要一款专业的GIF在线制作工具-GIF中文网,使用视频转GIF(https://www.gif.cn/)功能,上新MP4格式视频,能够快速制作1分钟…

arm neon/fpu/mfloat

neon官网介绍: Arm Neon technology is an advanced Single Instruction Multiple Data (SIMD) architecture extension for the A-profile and R-profile processors. Neon technology is a packed SIMD architecture. Neon registers are considered as vectors of elements …

【达哥讲网络】第3集:数据交换的垫基石——二层交换原理

专业的网络工程师在进行网络设计时,会事先规划好不同业务数据的转发路径,一方面是为了满足用户应用需求,另一方面是为了提高数据转发效率、充分利用各设备/各链路的硬件或带宽资源。在进行网络故障排除时,理顺各路数据的转发路径也…

Android 开发代码规范

一. AndroidStudio开发工具规范 使用最新的稳定版本.统一文件的编码格式为utf-8. 清除每个类里面的无效的import导包.代码样式统一,比如,tab缩进4个空格,或者 tab size等如果没有特殊情况使用默认的配置即可。每行字数每行字符数不得超过 160 字符&…

C++笔记之++i和i++是原子操作吗?

C笔记之i和i是原子操作吗? code review! 文章目录 C笔记之i和i是原子操作吗?1.i是原子操作吗?2.i是原子操作吗?3.前置递增和后置递增 1.i是原子操作吗? 2.i是原子操作吗? 3.前置递增和后置递增

绝美!轮到AI写真爆火了!18种AI视频制作教程;Llama 2微调的极速指南;Nijijourney官方AI绘画课 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 摄影写真面临AI技术洗牌,一键生成杂志大片的时代来了 软件:midjourney & Stable Diffusion 模型&#xff…

Appium+python自动化(三十四)- 有图有真相,很美很精彩 - 屏幕截图和Android APP类型简介

简介 在实际自动化项目运行过程中,很多时候App可以会出现各种异常,为了更好的定位问题,除了捕捉日志我们还需要对运行时的设备状态来进行截屏。从而达到一种“有图有真相”的效果。 截图方法 方法1 save_screenshot() 该方法直接保存当前…

传统计算机视觉

传统计算机视觉 计算机视觉难点图像分割基于主动轮廓的图像分割基于水平集的图像分割交互式图像分割基于模型的运动分割 目标跟踪基于光流的点目标跟踪基于均值漂移的块目标跟踪基于粒子滤波的目标跟踪基于核相关滤波的目标跟踪 目标检测一般目标检测识别之特征一般目标检测识别…

【深度学习】生成对抗网络Generative Adversarial Nets

序言 本文是GAN网络的原始论文,发表于2014年,我们知道,对抗网络是深度学习中,CNN基础上的一大进步; 它最大的好处是,让网络摆脱训练成“死模型”到固定场所处去应用,而是对于变化的场景&#xf…

【小梦C嘎嘎——启航篇】类和对象(上篇)

【小梦C嘎嘎——启航篇】类和对象(上篇)😎 前言🙌什么是面向过程?什么是面向对象?什么是类和对象类中的访问权限属性类的大小计算this 指针构造函数析构函数 总结撒花💞 😎博客昵称&…

自动化测试——APP测试

一、环境配置 1、安装jdk 配置环境变量 2、Android SDK 环境安装 3、Appium Server安装 4、模拟器安装 5、安装appium-python-client Python第三方库 二、APP自动化测试原理 三、Desired Capabilites——APPium自动化配置项 1、设置参数 2、操作系统 3、选择版本 4、设备名称…

LeetCode 1857. Largest Color Value in a Directed Graph【拓扑排序,动态规划】困难

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

【LeetCode】148.排序链表

题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2: 输入:head [-1,5,3,4,0] 输出:[-1,0,3,4,5]示例 3&#xff1…

Go 下载安装教程

1. 下载地址:The Go Programming Language (google.cn) 2. 下载安装包 3. 安装 (1)下一步 (2)同意 (3)修改安装路径,如果不修改,直接下一步 更改后,点击下一…

软件测试/测试开发丨Selenium环境安装与使用

Selenium 官方网站: www.selenium.dev/ 简介: 用于web浏览器测试的工具;支持的浏览器包括IE,Firefox,Safari,Chrome,Edge等;使用简单,可使用Java,Python等…