数据挖掘 | 实验一 数据的清洗与预处理

这篇具有很好参考价值的文章主要介绍了数据挖掘 | 实验一 数据的清洗与预处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、目的与要求

1)了解数据质量问题、掌握常用解决方法;
2)熟练掌握数据预处理方法,并使用Python语言实现;

二、实验设备与环境

PC机 + Python3.7环境(pycharm、anaconda或其它都可以)

三、实验内容

  1. 清洗与预处理的必要性
    在实际数据挖掘过程中,我们拿到的初始数据,往往存在缺失值、重复值、异常值或者错误值,通常这类数据被称为“脏数据”,需要对其进行清洗。另外有时数据的原始变量不满足分析的要求,我们需要先对数据进行一定的处理,也就是数据的预处理。数据清洗和预处理的主要目的是提高数据质量,从而提高挖掘结果的可靠度,这是数据挖掘过程中非常必要的一个步骤。
  2. 具体要求如下:

数据清洗

(1)发现重复与冗余
设数据集如下:
{state’:[‘a’,‘b’,‘c’,‘a’,‘b’,‘c’],‘year’:[2018,2016,2017,2018,2016,2017],‘average’:[87,85,88,87,85,88]},试完成:
a) 统计所有数据全部重复的有多少?
b) 显示重复的数据是哪几个?
c) 把重复的删除,但是不要删除原始数据。
实验代码:

import pandas as pd
import numpy as np

# 导入数据
data = pd.DataFrame({'state': ['a', 'b', 'c', 'a', 'b', 'c'], 'year': [2018, 2016, 2017, 2018, 2016, 2017],
                     'average': [87, 85, 88, 87, 85, 88]})
print("原始数据如下:\n", data)
##统计重复数目
data_dulicated_num = np.sum(data.duplicated())
print("\n统计重复数目为:{}条".format(data_dulicated_num))
##显示重复数据
data_dulicated = data.loc[data.duplicated()]
print("\n重复数据如下:\n", data_dulicated)
##删除重复数据 保留第一个
data_drop = data.drop_duplicates(keep='first')
print("\n删除重复数据后的结果如下:\n", data_drop)

实验截图:
数据挖掘 | 实验一 数据的清洗与预处理
数据挖掘 | 实验一 数据的清洗与预处理

(2)处理缺失值
发现以及填充缺失值,设数据集如下:
{‘state’:[‘a’,‘b’,‘c’,np.nan,‘b’,‘c’],‘year’:[2018,2016,np.nan,2018,2016,2017],‘average’:[87,85,88,np.nan,85,88]}
请完成:
a) 统计行数及每列非空取值个数。
b) 统计每列缺失值的个数。
c) 把缺失值都填充为0。
d) 对于不同的列,动态指定不同列的填充值,第一列指定众数填充,第二列使用众数,第三列使用均值。
e) 运用自定义函数来填充, 假设自定义函数就是取众数的第一个值。
实验代码:

import pandas as pd
import numpy as np

data = pd.DataFrame({'state': ['a', 'b', 'c', np.nan, 'b', 'c'], 'year': [2018, 2016, np.nan, 2018, 2016, 2017],
                     'average': [87, 85, 88, np.nan, 85, 88]})
print("原始数据如下:\n", data)
##统计行数及每列非空取值个数
print("一共{}行".format(len(data.index)))

print("\n每列非空取值个数如下:\n", data.notnull().sum(axis=0))
##统计每列缺失值个数
print("\n每列缺失值个数:\n", data.isnull().sum(axis=0))
# 缺失值填充为0
print("\n缺失值填充为0结果如下:\n", data.fillna(0))

##4.对于不同的列,动态指定不同列的填充值,第一列指定众数填充,第二列使用众数,第三列使用均值
data['state'].fillna(data['state'].mode()[0], inplace=True)
data['year'].fillna(data['year'].mode()[0], inplace=True)
data['average'].fillna(value=data['average'].mean(), inplace=True)
print("\n动态指定不同列的填充结果如下:\n", data)


# 运用自定义函数来填充, 假设自定义函数就是取众数的第一个值


def SelfFunction(data):
    return data.mode()[0]


data['state'].fillna(value=SelfFunction(data['state']), inplace=True)
data['year'].fillna(value=SelfFunction(data['year']), inplace=True)
data['average'].fillna(value=SelfFunction(data['average']), inplace=True)
print("\n运用自定义函数来填充结果如下:\n", data)

实验截图:
数据挖掘 | 实验一 数据的清洗与预处理数据挖掘 | 实验一 数据的清洗与预处理
数据挖掘 | 实验一 数据的清洗与预处理

数据集成

设数据集如下:
dat1 = DataFrame({‘key’:[‘a’,‘b’,‘c’],
‘value1’:[1,2,3],
‘year’:[1998,1999,2001]})
dat2 = DataFrame({‘address:[‘Hangzhou’,‘Guangzhou’,‘Nanjing’],
‘type’:[‘l1’,‘l2’,‘l3’]})
dat3= DataFrame({‘key’:[‘a’,‘b’,‘c’],
‘value1’:[1,2,3],
‘year’:[1998,1999,2001]})
dat4 = DataFrame({‘key’:[‘d’,‘e’],
‘value1’:[43,32],
‘year’:[1989,1990]})
(1)将dat1与dat2列方向合并(列数增加方向),并输出。
(2)将dat3与dat4行方向合并(行数增加方向),并输出。
实验代码:

import pandas as pd

# 数据集成
dat1 = pd.DataFrame({'key': ['a', 'b', 'c'], 'value': [1, 2, 3], 'year': [1998, 1999, 2001]})
dat2 = pd.DataFrame({'address': ['zhengzhou', 'guangzhou', 'nanjing'], "type": ['11', '12', '13']})
dat3 = pd.DataFrame({'key': ['a', 'b', 'c'], 'value': [1, 2, 3], 'year': [1998, 1999, 2001]})
dat4 = pd.DataFrame({'key': ['d', 'e'], 'value': [43, 32], 'year': [1989, 1990]})
print("列合并:\n", pd.concat([dat1, dat2]))
print("行合并:\n", pd.concat([dat3, dat4], axis=0))

实验截图:
数据挖掘 | 实验一 数据的清洗与预处理

数据变换(统一格式并标准化)

设数据集如下:
{‘student’:[‘张山’,‘李尔’,‘王五’,‘赵明’,‘王迪’,‘肖晓’],
‘optional’:[3,4,2,5,3,4],
‘required’:[90,83,67,87,81,91],
‘ideology’:[‘优’,‘良’,‘良’,‘优’,‘及格’,‘优’]}
(1)将optional和required列进行归一化
(2)将optional和required列进行标准化
(3)试求各位同学的总评成绩。
其中归一化和标准化公式如下:
数据挖掘 | 实验一 数据的清洗与预处理

实验代码:

import pandas as pd
import numpy as  np

# 数据变换
# 数据输入

# 将optional和required列进行归一化
data = pd.DataFrame({'student': ['张三', '李尔', '王五', '赵明', '王迪', '肖晓'], 'option': [3, 4, 2, 5, 3, 4],
                     'required': [90, 83, 67, 87, 81, 91], 'ideology': ['优', '良', '良', '优', '及格', '优']})
print("原始数据如下:\n", data)
data2 = data.copy()
data2['option'] = (data2['option'] - min(data2['option'])) / (max(data2['option'] - min(data2['option'])))
data2['required'] = (data2['required'] - min(data2['required'])) / (max(data2['required'] - min(data2['required'])))
print("\n将optional和required列进行归一化:\n", data2)

# 将optional和required列进行标准化
data3 = data.copy()
data3['option'] = (data3['option'] - np.mean(data3['option'])) / (data3['option']).std()
data3['required'] = (data3['required'] - np.mean(data3['required'])) / (data3['required']).std()
print("\n将optional和required列进行归一化:\n", data3)

# 试求各位同学的总评成绩。

# 归一化求总评
data4 = data2.copy()
# 设置优良及格分值
data4['ideology'].loc[data2['ideology'] == '优'] = 100
data4['ideology'].loc[data2['ideology'] == '良'] = 80
data4['ideology'].loc[data2['ideology'] == '及格'] = 60
# 将ideology数据归一化
data4['ideology'] = (data4['ideology'] - min(data4['ideology'])) / (max(data4['ideology'] - min(data4['ideology'])))
list = ['option', 'required', 'ideology']
# 添加新列
data4['总评'] = data4[list].apply(lambda x: x.sum(), axis=1)
print("\n归一化求总评:\n", data4)
#
# 标准化求总评
data5 = data3.copy()
data5['ideology'].loc[data3['ideology'] == '优'] = 100
data5['ideology'].loc[data3['ideology'] == '良'] = 80
data5['ideology'].loc[data3['ideology'] == '及格'] = 60
# 将ideology数据标准化
data5['ideology'] = (data5['ideology'] - np.mean(data5['ideology'])) / (data5['ideology']).std()
# 去除姓名栏
list = ['option', 'required', 'ideology']
# 添加新列
data5['总评'] = data5[list].apply(lambda x: x.sum(), axis=1)
print("\n标准化求总评:\n", data5)

实验截图:
1)列归一化:
数据挖掘 | 实验一 数据的清洗与预处理

2)列标准化:
数据挖掘 | 实验一 数据的清洗与预处理

3)归一化求总评
数据挖掘 | 实验一 数据的清洗与预处理

4)标准化求总评
数据挖掘 | 实验一 数据的清洗与预处理

四、实验小结

总结:文章来源地址https://www.toymoban.com/news/detail-404834.html

  1. 通过本次实验我学会了数据集成、数据清洗、及数据变换等数据处理的相关操作。
  2. Pandas是一个优秀的数学库,可以实现很多功能,值得深度研究和探索。
  3. 通过使用pands对所给的数据进行了重复数据的查询,行数据统计,以及统计哪些为重复值,缺失值的处理以及填充,可以使用0进行填充,或者指定数据进行填充。
  4. 了解并掌握了数据的索引与筛选,数据缺失的处理count统计,知道如何忽略NaN,以及使用fillna进行缺失值的填充,合并数据集等常操作。
  5. Apply函数相当于一个处理过滤函数,以及Lambda表达式的巧妙使用。
  6. 数据清洗具有很强的实操性,需要多多练习和写代码来实现,才能更好的运用。

到了这里,关于数据挖掘 | 实验一 数据的清洗与预处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据挖掘(2.1)--数据预处理

    1.1基础知识 数据 是 数据对象(Data Objects)及其属性(Attributes) 的集合。 数据对象 (一条记录、一个实体、一个案例、一个样本等)是对一个事物或者物理对象的 描述 。 数据对象的 属性 则是这个对象的 性质或特征, 例如一个人的肤色、眼球颜色等是这个人的属性。 每一行为一

    2024年02月02日
    浏览(30)
  • 数据挖掘(2.2)--数据预处理

    目录   二、数据描述 1.描述数据中心趋势 1.1平均值和截断均值  1.2加权平均值 1.3中位数(Median)和众数(Mode) 2.描述数据的分散程度 2.1箱线图 2.2方差和标准差 2.3正态分布 3.数据清洗 3.1数据缺失的处理 3.2数据清洗 描述数据的方法,包括描述数据中心趋势的方法如 均值、中位

    2024年02月01日
    浏览(27)
  • 【数据挖掘 | 数据预处理】缺失值处理 & 重复值处理 & 文本处理 确定不来看看?

    🤵‍♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍 🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能硬件(虽然硬件还没开始玩,但一直

    2024年02月07日
    浏览(34)
  • 数据挖掘学习——数据预处理方法代码汇总(python)

    目录 一、归一化处理方法 (1)min-max方法(离散归一化) (2)零-均值规范化方法 (3)小数定标规范化 二、插值法 (1)拉格朗日插值法 三、相关性分析 (1)pearson相关性系数 (2)spearman相关性系数 四、主成分分析(PCA) 归一化常用方法有: (1)min-max方法(离散归一化

    2024年02月08日
    浏览(47)
  • 数据预处理在数据挖掘中的重要性

    数据挖掘作为从大量数据中提取有用信息和知识的过程,其结果的准确性和可靠性直接受到数据质量的影响。因此,数据预处理在数据挖掘中扮演着至关重要的角色。让我们探讨数据质量对数据挖掘结果的影响,并介绍常见的数据预处理方法以及它们如何提高数据挖掘的效果

    2024年03月20日
    浏览(37)
  • Python数据挖掘 数据预处理案例(以航空公司数据为例)

    1、数据清洗 2、数据集成 3、数据可视化 根据航空公司系统内的客户基本信息、乘机信息以及积分信息等详细数据,依据末次飞行日期( LAST_FLIGHT_DATE),以2014年3月31日为结束时间,选取宽度为两年的时间段作为分析观测窗口,抽取观测窗口2012年4月1日至2014年3月31日内有乘机记

    2024年02月04日
    浏览(33)
  • GEO生信数据挖掘(六)实践案例——四分类结核病基因数据预处理分析

    前面五节,我们使用阿尔兹海默症数据做了一个数据预处理案例,包括如下内容: GEO生信数据挖掘(一)数据集下载和初步观察 GEO生信数据挖掘(二)下载基因芯片平台文件及注释 GEO生信数据挖掘(三)芯片探针ID与基因名映射处理 GEO生信数据挖掘(四)数据清洗(离群值

    2024年02月07日
    浏览(45)
  • GPT-4科研实践:数据可视化、统计分析、编程、机器学习数据挖掘、数据预处理、代码优化、科研方法论

    查看原文GPT4科研实践技术与AI绘图 GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。 例如在科研编程、绘图领域 : 1、编程建议和示例代码:  无论你使用的编程语言是Python、R、MATLAB还是其他语言,都可以为你提供相关的代码示例。

    2024年02月07日
    浏览(39)
  • 数据清洗和预处理

    预计更新 一、 爬虫技术概述 1.1 什么是爬虫技术 1.2 爬虫技术的应用领域 1.3 爬虫技术的工作原理 二、 网络协议和HTTP协议 2.1 网络协议概述 2.2 HTTP协议介绍 2.3 HTTP请求和响应 三、 Python基础 3.1 Python语言概述 3.2 Python的基本数据类型 3.3 Python的流程控制语句 3.4 Python的函数和模

    2024年02月07日
    浏览(35)
  • 头歌:数据预处理之数据清洗

    本关任务:完成泰坦尼克号遇难数据的清洗。   案例背景 泰坦尼克号遭遇的灾难震惊世界,如何避免灾难甚至预测灾难呢? 要实现首先要做好泰坦尼克号的损失数据统计,才能为数据分析打下基础。 编程要求 根据提示,你需要完成: 缺失值填充 离群点检测

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包