3-03-1 泰坦尼克号竞赛 - 数据过滤
3.3 数据清洗与合并
数据预处理包含了数据清洗 (data cleansing) 与特征工程 (feature engineering) ,本节主要介绍的是数据清洗部份,主要目的是将原始数据转换成整洁的、组织合理的形式以供后续的特征工程使用。而数据清洗的工作内容很多,举例来说:
- 基础运算 (basic) - 选择、过滤、删除重复项。
- 取样 (Sampling) - 基于绝对、相对或是概率。
- 数据划分 (Data Partitioning) - 将数据集划分为训练、验证、测试数据集。
- 装箱 (Binning) - 这是用于减少微小观测误差影响的技术,常见的应用如直方图 (Histograms)。
- 转换 (Transformations) - 如标准化,标准化,缩放,旋转。
- 数据替换 (Data Replacement) - 剪切、拆分、合并。
- 插补 (Imputation) - 使用统计算法替换缺失的观察值。
- 加权 (Weighting) - 属性加权。
本节将会介绍基础运算中的过滤、找出缺失值、删除重复项以及数据替换中的剪切、拆分、合并。
3.3.1 泰坦尼克号竞赛 - 数据过滤
以 Kaggle 上著名的泰坦尼克号竞赛的中所提供的数据集来练习,这是一个数据科学有名的竞赛网站,而这个泰坦尼克号竞赛是透过网站所提供的数据来预测,哪些人的生存几率高。透过 info() 函数可以得知这个数据集有 891 笔数据,共有 12 个栏位。
titanic 数据集说明
栏位 | 说明 |
---|---|
survival | 是否存活 |
pclass | 船票等级 |
sex | 性别 |
Age | 年龄 |
sibsp | 船上兄弟姐妹的人数 |
parch | 船上父母、儿女的人数 |
ticket | 票号 |
fare | 船运票价 |
cabin | 船舱号码 |
embarked | 上船的港口 |
import pandas as pd
import numpy as npdataDir = './data/titanicTrain.csv'
df = pd.read_csv(dataDir)
df.info()输出结果为:<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 PassengerId 891 non-null int64 1 Survived 891 non-null int64 2 Pclass 891 non-null int64 3 Name 891 non-null object 4 Sex 891 non-null object 5 Age 714 non-null float646 SibSp 891 non-null int64 7 Parch 891 non-null int64 8 Ticket 891 non-null object 9 Fare 891 non-null float6410 Cabin 204 non-null object 11 Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
接着过滤男性,且年龄在20岁以下的乘客,过滤结果共有 102 位。
df[(df['Age']<=20) & (df['Sex']=='male')]输出结果为:
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
7 8 0 3 Palsson, Master. Gosta Leonard male 2.0 3 1 349909 21.0750 NaN S
12 13 0 3 Saundercock, Mr. William Henry male 20.0 0 0 A/5. 2151 8.0500 NaN S
16 17 0 3 Rice, Master. Eugene male 2.0 4 1 382652 29.1250 NaN Q
27 28 0 1 Fortune, Mr. Charles Alexander male 19.0 3 2 19950 263.0000 C23 C25 C27 S
50 51 0 3 Panula, Master. Juha Niilo male 7.0 4 1 3101295 39.6875 NaN S
... ... ... ... ... ... ... ... ... ... ... ... ...
844 845 0 3 Culumovic, Mr. Jeso male 17.0 0 0 315090 8.6625 NaN S
850 851 0 3 Andersson, Master. Sigvard Harald Elias male 4.0 4 2 347082 31.2750 NaN S
869 870 1 3 Johnson, Master. Harold Theodor male 4.0 1 1 347742 11.1333 NaN S
876 877 0 3 Gustafsson, Mr. Alfred Ossian male 20.0 0 0 7534 9.8458 NaN S
877 878 0 3 Petroff, Mr. Nedelio male 19.0 0 0 349212 7.8958 NaN S
102 rows × 12 columns
在上述的数据中,可以发现舱位 (Cabin) 栏位很多是没有填写的 (NaN),如果分析者认为这个栏位对于在灾难发生时是没有影响的,可以选择删除,但如果这个栏位是有影响的,那在清洗过程,必须让所有的值是有意义的,所以我们必须先找出缺失值,然后替换成有意义的值。首先我们先找出在所有数据中有几个舱位,利用 Pandas 的聚合函数 groupby() 可以找出所有的数据并排序,发现共有 147 个舱位
# 依序列出所有数据
df[['Cabin']].groupby(['Cabin'],sort=True).count()输出结果为:
Cabin
A10
A14
A16
A19
A20
...
F33
F38
F4
G6
T
147 rows × 0 columns
我们可以用 duplicated() 来找出重复行,第一次出现的为 False,如果再出现一次就视为重复,所以就设定为 True,以下以 ‘Sex’ 栏位来进行重复行检验,可以发现它的重复次数为 889,因为第一次出现的 0 与 1 并不会被记录
len(df[df['Sex'].duplicated()])输出结果为:
889
Python数据处理-文章目录
3-03-1 泰坦尼克号竞赛 - 数据过滤相关推荐
- 2 机器学习入门——逻辑回归之kaggle泰坦尼克号竞赛
前面几篇逻辑回归的例子有些是人造出来的,有些是比较正规的,但数据都比较完整,没有缺失的属性.虽然我们在很多数据上取到的非常好的效果,但总感觉好像不够味,不像实战. 所有的数据下载地址:https:// ...
- 数据过滤(MySQL)
数据过滤 数据过滤用在WHERE表达式里,常用的有基本查询过滤.条件查询过滤.模糊查询过滤.字段查询过滤以及正则表达式查询过滤. 一.基本查询过滤 基本查询过滤可以查询所有字段数据或指定一个字段或者多 ...
- R行数据过滤基于dplyr包filter函数
R行数据过滤基于dplyr包filter函数 目录 R行数据过滤基于dplyr包filter函数 筛选等于某个值的行 使用与操作筛选行
- python与R行列数据过滤(row column filtering):dplyr、 isnull、isna、drop、select、iloc、loc、isin、filter
python与R行列数据过滤(row column filtering):dplyr. isnull.isna.drop.select.iloc.loc.isin.filter 很多工程师可能刚开始的 ...
- Pandas常见的数据过滤方法、通过列条件筛选行数据
Pandas常见的数据过滤方法.通过列条件筛选行数据 不废话了,直接看代码吧: 一般情况下,前面5种就覆盖了绝大多数需求 import pandas as pd import numpy as npd ...
- SSAS系列——【03】多维数据(多维数据集对象)
原文:SSAS系列--[03]多维数据(多维数据集对象) 1.什么是Cube? 简单 Cube 对象由基本信息.维度和度量值组组成. 基本信息包括多维数据集的名称.多维数据集的默认度量值.数据源和存储 ...
- 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( JNI 传递 Bitmap | 获取位图信息 | 获取图像数据 | 图像数据过滤 | 释放资源 )
文章目录 一.Bitmap 图像数据处理 二.Java 层 Bitmap 对象转为 JNI 层 bitmap 对象 三.获取 bitmap 中的图像数据 四.过滤 bitmap 中的图像数据 ( 获取 ...
- 如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技、科技金融等概念的
如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技.科技金融等概念的热起 ...
- 从重采样到数据合成:如何处理机器学习中的不平衡分类问题? 转载 2017年08月01日 17:09:03 标签: 机器学习 / 数据 719 转自:http://www.sohu.com/a/12
从重采样到数据合成:如何处理机器学习中的不平衡分类问题? 转载 2017年08月01日 17:09:03 标签: 机器学习 / 数据 719 转自:http://www.sohu.com/a/1293 ...
最新文章
- Linux I2C(一)之常用的几种实例化(i2c_client ) 【转】
- VLC搭建RTSP服务器的过程 -测试通过
- java 字符串去掉换行_java第一个程序quot;helloworldquot;
- 浅谈 FTP、FTPS 与 SFTP
- Tensorflow安装笔记
- gbrl参数_grbl-0.9运行参数配置说明
- ❤️程序员国企太安逸想辞职,又嫌私企大厂压力大996我该如何选择?(高级全栈自动化之路)
- (转)关于电子书格式比较
- 点分十进制表示的字符串转换为 unsigned int 整型数值
- Mac精品应用推荐:专业的后期特效制作软件
- android fd泄露分析,文件描述符(fd)泄漏排查一篇就够了
- QQ在线客服设置-QQ开启临时会话教程
- 粒子系统-烟花效果的实现
- 薇诺娜如何以创新战略在新消费浪潮中屹立不倒
- 三八节买什么数码好物?三八女神节实用不吃灰的数码好物推荐
- RealSense相机在ros2环境的安装
- 2.STC89C52RC芯片之流水灯程序
- omnet结果分析anf文件
- 移动端background 照片不铺满的处理
- 【沧海拾昧】C# .Net SplitContainer(分割器)控件的使用笔记
热门文章
- 20年后的iphoneXXXX手机长这样
- 在创建maven项目中出现src/main/java 和src/maim/java 报错解决方法
- vue3 vscode创建过程及element组件使用
- [生存志] 第121节 十二经络生气通天
- 基于SSM的物业管理系统
- 戴文的linux内核专题 24,戴文的Linux内核专题:26 配置内核 (22)
- 前端实现tab栏切换,这么常见的案例你学会了吗?
- 英语口语进阶:让你的疲劳与口渴表达更地道
- 使用Java导入excel时警告:A part name shall not have a forward slash as the last character
- html src href 路径,src跟href,url的区别