hands-on-data-analysis 第二单元 - 数据清洗及特征处理

简介: 数值列读取数据后,空缺值的NaN为浮点型,最好用`np.nan`判断是否是NaN。

hands-on-data-analysis 第二单元 - 数据清洗及特征处理

1.缺失值观察与处理

首先当然是导入相应的模块

#加载所需的库
import numpy as np
import pandas as pd

1.1 缺失值观察

接下来就是观察缺失值:

df.info()

df.info()
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    float64
 6   SibSp        891 non-null    int64  
 7   Parch        891 non-null    int64  
 8   Ticket       891 non-null    object 
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object 
 11  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB

df.isnull().sum()

PassengerId      0
Survived         0
Pclass           0
Name             0
Sex              0
Age            177
SibSp            0
Parch            0
Ticket           0
Fare             0
Cabin          687
Embarked         2
dtype: int64

1.2 缺失值处理

数值列读取数据后,空缺值的NaN为浮点型,最好用np.nan判断是否是NaN。

isnull()可以筛选出缺失的值

df[df['Age'].isnull()]
df.tail(5)

np.isnan()也可以筛选出缺失的值

df[np.isnan(df['Age'])]
df.tail(5)

但是,np.isnan不可以用来与任何数值进行>,==!=之类的比较

np.nan != np.nan
True

df.dropna(inplace=True)可以用来丢弃掉有NaN数据的那一行,其中inplace=True表示修改原数据。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html

df.fillna(0,inplace=True) 可以用来将NaN数据用0填充,其中inplace=True表示修改原数据。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html

2.重复值

重复值可以使用df.duplicated()来查询

df[df.duplicated()]

drop_duplicates()可以用来删除重复值

df = df.drop_duplicates()

3.分箱(离散化)处理

3.1.平均分箱

# 将连续变量Age平均分箱成5个年龄段,并分别用类别变量12345表示
df['AgeBand'] = pd.cut(df['Age'], 5,labels = [1,2,3,4,5])

3.2.划分分箱

df['AgeBand'] = pd.cut(df['Age'],[0,5,15,30,50,80],labels = [1,2,3,4,5])

3.3.概率分箱

df['AgeBand'] = pd.qcut(df['Age'],[0,0.1,0.3,0.5,0.7,0.9],labels = [1,2,3,4,5])

4.文本变量进行转换

4.1. 查看文本变量名和种类

#方法一: value_counts
df['Sex'].value_counts()
#方法二: unique
df['Sex'].unique()
df['Sex'].nunique()

4.2 文本转换

#将类别文本转换为12345
#方法一: replace
df['Sex_num'] = df['Sex'].replace(['male','female'],[1,2])
#方法二: map
df['Sex_num'] = df['Sex'].map({'male': 1, 'female': 2})
#方法三: 使用sklearn.preprocessing的LabelEncoder
from sklearn.preprocessing import LabelEncoder
for feat in ['Cabin', 'Ticket']:
    lbl = LabelEncoder()
    print(f"feat is {feat}") 
    print("end")
    label_dict = dict(zip(df[feat].unique(), range(df[feat].nunique())))
    print(f"label_dict is {label_dict}")
    print("end label_dict")
    df[feat + "_labelEncode"] = df[feat].map(label_dict)
    df[feat + "_labelEncode"] = lbl.fit_transform(df[feat].astype(str))

5. 独热编码

#OneHotEncoder
for feat in ["Age", "Embarked"]:
    x = pd.get_dummies(df[feat], prefix=feat)
    df = pd.concat([df, x], axis=1)
df.head()

参考资料

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.cut.html

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.qcut.html

本项目地址:

hands-on-data-analysis 第二单元 - 飞桨AI Studio (baidu.com)

目录
相关文章
|
数据挖掘
Seurat 4.0 | 单细胞转录组数据整合(scRNA-seq integration)
Seurat 4.0 | 单细胞转录组数据整合(scRNA-seq integration)
1690 0
Seurat 4.0 | 单细胞转录组数据整合(scRNA-seq integration)
|
机器学习/深度学习 自然语言处理 达摩院
Rethinking Information Extraction :信息抽取的现状与未来
​ ##引言 从计算到感知再到认知是业内学者都认同的人工智能技术发展路径。机器具备认知智能,进而实现推理、规划乃至联想和创作,在一定程度上需要一个充满知识的大脑,而信息抽取是获取知识的重要途径之一。 在具体的业务场景如搜索推荐,结构化的领域知识有利于实现细粒度文本理解,有利于实现精准的复杂问答,有利于
5406 0
|
索引 Python
Data Science | 这些时间序列的骚操作啊
Data Science | 这些时间序列的骚操作啊
|
机器学习/深度学习 人工智能 计算机视觉
|
机器学习/深度学习 传感器 算法
【数据分析】基于SBM算法(Similarity-based Modeling)对火力发电汽轮机进行建模
【数据分析】基于SBM算法(Similarity-based Modeling)对火力发电汽轮机进行建模
|
自然语言处理 知识图谱
通用信息抽取 UIE(Universal Information Extraction)
通用信息抽取 UIE(Universal Information Extraction)
1014 0
通用信息抽取 UIE(Universal Information Extraction)
|
Shell 计算机视觉
2022亚太建模A题Feature Extraction of Sequence Images and Modeling Analysis of Mold Flux Melting and Crystallization思路分析
2022 亚太建模A题序列图像的特征提取与建模分析 模具流量的熔融和结晶Feature Extraction of Sequence Images and Modeling Analysis of Mold Flux Melting and Crystallization
2022亚太建模A题Feature Extraction of Sequence Images and Modeling Analysis of Mold Flux Melting and Crystallization思路分析
|
人工智能 BI
Machine Learning-L2-数据特征
Machine Learning-L2-数据特征
Machine Learning-L2-数据特征
|
机器学习/深度学习 算法 算法框架/工具
传输丰富的特征层次结构以实现稳健的视觉跟踪 Transferring Rich Feature Hierarchies for Robust Visual Tracking
传输丰富的特征层次结构以实现稳健的视觉跟踪 Transferring Rich Feature Hierarchies for Robust Visual Tracking
158 2
传输丰富的特征层次结构以实现稳健的视觉跟踪 Transferring Rich Feature Hierarchies for Robust Visual Tracking
|
机器学习/深度学习 存储 人工智能
特征平台(Feature Store):您需要知道的关于特征平台的一切信息(Continuous)
特征平台已于 2021 年问世,成为实现 AI 的一项重要技术。 尽管高科技公司对特征平台充满热情,但大多数传统 ML 平台仍然缺少它们,并且在许多企业公司中相对不为人知。在这里,我们将介绍特征平台的常见功能,以及在你自己的工作中采用这种方法的利弊。