IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 动手学数据分析 Task02 -> 正文阅读

[人工智能]动手学数据分析 Task02

第二章:数据清洗及特征处理

学习目标:将学习缺失值、重复值、字符串和数据转换等操作,将数据清洗成可以分析或建模的样子。

学习心得:通过对本次task02的学习,了解了数据清洗和数据预处理的重要性,要想得到成功的结果,数据必须是正确的,具体来说学会了如何检查并处理缺失值、重复值,然后还对一些连续特征离散化,也用的了上一个任务讲到的方法,收获很大。

在这里插入图片描述
可以看到Cabin列存在NaN,如何查看其他列有没有NaN的值?

2.1 缺失值观察和处理

查看缺失值

  1. df.info()
    ![
  2. df.isnull().sum()
    在这里插入图片描述
    缺失值检查

处理思路:先根据列值选出为空的行索引,然后把这一行设为空值。
方法一:

df[df['Age']== None]=0
df.head(10) 

在这里插入图片描述

用None处理无效,是因为数值列读取数据后,空缺值的数据类型为float64,所以用None一般索引不到。

方法二:

df[df['Age'].isnull()] = 0 # 还好
df.head(10)

方法三:

df[df['Age'] == np.nan] = 0
df.head(10)

其实np.nan()和pd.isnull()都可以对不论是DataFrame、Python list还是仅仅一个数值进行空值检测。但一般在实际应用中,np.isnan()多用于单个值的检验,pd.isnull()用于对一个DataFrame或Series(整体)的检验。

缺失值处理

方法一:dropna( )
对于Serial对象,丢弃带有NAN的所有项;对于DataFrame对象,丢弃带有NAN的行
在这里插入图片描述
方法二:fillna( )
以常数替换NAN值
在这里插入图片描述

2.2重复值观察和处理

查看所有的重复值

df[df.duplicated()]

在这里插入图片描述
对整个行有重复值的清理的方法

df = df.drop_duplicates()
df.head(100)

2.3特征观察与处理

对年龄进行离散化处理
将连续变量Age平均分箱成5个年龄段,并分别用类别变量12345表示

df['AgeBand'] = pd.cut(df['Age'], 5,labels = [1,2,3,4,5])
df.head(100)

将连续变量Age划分为(0,5] (5,15] (15,30] (30,50] (50,80]五个年龄段,并分别用类别变量12345表示

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

将连续变量Age按10% 30% 50 70% 90%五个年龄段,并用分类变量12345表示
(有问题,90%到100%的变量就会变为NaN ,因为没有考虑到他们)

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

在这里插入图片描述
对文本变量进行转换
查看类别文本变量名及种类
方法一:

df['Sex'].value_counts()

在这里插入图片描述

df['Cabin'].value_counts()

在这里插入图片描述

方法二:

df['Sex'].unique()

在这里插入图片描述
将类别文本转换为12345

#方法一: replace
df['Sex_num'] = df['Sex'].replace(['male','female'],[1,2])
df.head()

在这里插入图片描述

#方法二: map
df['Sex_num'] = df['Sex'].map({'male': 1, 'female': 2})
df.head()

在这里插入图片描述

#方法三: 使用sklearn.preprocessing的LabelEncoder
from sklearn.preprocessing import LabelEncoder
for feat in ['Cabin', 'Ticket']:
    lbl = LabelEncoder()  
    label_dict = dict(zip(df[feat].unique(), range(df[feat].nunique())))
    df[feat + "_labelEncode"] = df[feat].map(label_dict)
    df[feat + "_labelEncode"] = lbl.fit_transform(df[feat].astype(str))

df.head()

在这里插入图片描述
将类别文本转换为one-hot编码

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

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 15:58:47  更:2021-12-18 16:00:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 0:41:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码