数据探索与数据预处理

提示

参考书:张良均《Python数据分析与挖掘实战》等。

数据文件:课本自带数据。

使用软件:Pycharm。

类别:实验。

温馨提示:该实验是跟张良均这本书配合使用的,代码运行于Pycharm。

一、 实验目的

1、了解数据探索基本方法。

2、了解数据预处理基本方法。

二、 实验环境

1、操作系统:Windows 10。

2、代码运行环境:Jupyter notebook或Pycharm。

三、 实验原理

1、使用数据挖掘的定义及流程。

2、使用数据挖掘基本方法,应用。

3、使用Python数据分析工具。

4、使用数据对象,属性类型,基本统计描述,可视化,相似性与相异性度量。

5、运用数据预处理基本思想,数据离散化,清洗,特征提取与特征选择。

四、 实验步骤与实验结果

4.1 实验步骤:

1、 数据探索(数据:某餐饮企业的餐饮日销售额数据表catering_sale.xls)

(1.1)对给定数据,首先查看数据基本情况,使用describe方法。

(1.2)分析集中趋势,包括均值,中位数,众数指标。

(1.3)分析离散趋势,包括极差,四分位间距等,并给出五数概况。

(1.4)以月份为单位,绘制月度销售额直方图(bar),以及按月份时间递增的销售额变化折线图(plot)。

2、 绘制词云,使用数据为《XX大学防控疫情确保开学安全工作方案》。(注意先要将文档转化为可处理的txt)

3、 数据预处理

(3.1)数据清洗-缺失值处理。给定catering_sale.xls,其中2015年2月14日数据缺失。采用合适方法进行数据增补。

(3.2)连续属性离散化。针对医学中的中医证型数据,discretization_data.xls,分别用等宽和等频进行离散化。

(3.3)主成分分析法降维。利用主成分分析法PCA,对数据principal_component.xls进行降维,要求降维后数据保留95%原数据信息即可。

4.2 实验结果:

4.2.1 数据探索

【1】温馨提示:

【2】代码:

# coding: utf-8
import pandas as pd
import matplotlib.pyplot as plt
# excel文件自行修改
xls_file = pd.read_excel("./catering_sale.xls")
df = pd.DataFrame(xls_file)
# print(df)
data1 = df['销量']
# print(data1)
des = data1.describe()
# print(des)
print("日销售额数据均值为:" + str(des['mean']))
print("日销售额数据中位数为:" + str(des['50%']))
print("日销售额数据的众位数为:" + str(data1.mode()[0]))
print("日销售额数据的极差为:" + str(des['max'] - des['min']))
print("日销售额数据的四分位间距为:" + str(des['75%']-des['25%']))
print("五数概况为:" + str(des['min'])+", " + str(des['25%']) + ", " + str(des['50%']) + ", " + str(des['75%']) + ", " + str(des['max']))# data = pd.to_datetime(df['日期'])     # 将数据类型换成日期类型
# 设置索引
data = df.set_index('日期', drop=False)
# 按月求和
data_sum = data.resample('MS').sum()
# 画统计图
pl1 = plt.bar(data_sum.index.tolist(), height=data_sum['销量'].tolist(), width=10)
plt.show()
pl2 = plt.plot(data_sum.index.tolist(), data_sum['销量'].tolist())
plt.show()

【3】运行结果:


4.2.2 绘制词云:

【2】代码:

# coding: utf-8
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
import docx
f = ' '
doc = docx.Document('./XX大学防控疫情确保开学安全工作方案.docx')
for p in doc.paragraphs:# print(type(p))  # <class 'docx.text.paragraph.Paragraph'>f = f + p.text
# print(f)
cut_txt = ' '.join(jieba.cut(f))
# font_path参数:需要自行指定字体的路径,这里本人自备楷体字体包
# 通常window操作系统的字体包的路径为C:\Windows\Fonts
wordCloud = WordCloud(font_path='simkai.ttf',background_color="white",width=1000,height=880,
).generate(cut_txt)
plt.imshow(wordCloud, interpolation="bilinear")
plt.axis("off")
plt.show()

【3】运行结果:
这里结果:根据不同的“XX大学防控疫情确保开学安全工作方案.docx”文件,对应不同的词云图。

4.2.3 题目(3.1)的数据清洗-缺失值处理

【1】温馨提示:

【2】代码:

# -*- coding: utf-8 -*-
# 拉格朗日插值代码
# 导入数据分析库Pandas
import pandas as pd
# 导入拉格朗日插值函数
from scipy.interpolate import lagrange# 销量数据路径
input_file = 'catering_sale.xls'
# 输出数据路径
output_file = 'sales.xls'
# 读入数据
data = pd.read_excel(input_file)
# data[u'销量'][(data[u'销量'] < 400) | (data[u'销量'] > 5000)] = None #过滤异常值,将其变为空值# 自定义列向量插值函数
# s为列向量,n为被插值的位置,k为取前后的数据个数,默认为5
def ployinterp_column(s, n, k=5):# 取数y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))]# 剔除空值y = y[y.notnull()]# 插值并返回插值结果return lagrange(y.index, list(y))(n)# 逐个元素判断是否需要插值
for i in data.columns:for j in range(len(data)):# 如果为空即插值if (data[i].isnull())[j]:data[i][j] = ployinterp_column(data[i], j)
# 输出结果,写入文件
data.to_excel(output_file)

【3】运行结果:

sale.xls文件

以下为其截图:

4.2.4 题目(3.2)连续属性离散化。

【1】温馨提示:

【2】代码:

# -*- coding: utf-8 -*-
# 数据规范化
import pandas as pd# 输入数据路径
datafile = 'discretization_data.xls'
# 读取数据
data = pd.read_excel(datafile)
data = data[u'肝气郁结证型系数'].copy()
k = 4
# 等宽离散化,各个类比依次命名为0,1,2,3
d1 = pd.cut(data, k, labels=range(k))# 等频率离散化
w = [1.0 * i / k for i in range(k + 1)]
# 使用describe函数自动计算分位数
w = data.describe(percentiles=w)[4:4 + k + 1]
w[0] = w[0] * (1 - 1e-10)
d2 = pd.cut(data, w, labels=range(k))# 引入KMeans
from sklearn.cluster import KMeans# 建立模型,n_jobs是并行数,一般等于CPU数较好
kmodel = KMeans(n_clusters=k, n_jobs=4)
# 训练模型
kmodel.fit(data.values.reshape((len(data), 1)))
# 输出聚类中心,并且排序(默认是随机序的)
c = pd.DataFrame(kmodel.cluster_centers_).sort_values(0)
# 相邻两项求中点,作为边界点
w = c.rolling(2).mean().iloc[1:]
# 把首末边界点加上
w = [0] + list(w[0]) + [data.max()]
d3 = pd.cut(data, w, labels=range(k))# 自定义作图函数来显示聚类结果
def cluster_plot(d, k):import matplotlib.pyplot as plt# 用来正常显示中文标签plt.rcParams['font.sans-serif'] = ['SimHei']# 用来正常显示负号plt.rcParams['axes.unicode_minus'] = Falseplt.figure(figsize=(8, 3))for j in range(0, k):plt.plot(data[d == j], [j for i in d[d == j]], 'o')plt.ylim(-0.5, k - 0.5)return pltcluster_plot(d1, k).show()
cluster_plot(d2, k).show()
cluster_plot(d3, k).show()

【3】运行结果:


4.2.5 题目(3.3)的主成分分析法降维

【1】提示:

【2】代码:

# coding: utf-8
import pandas as pd# 3.3 主成分分析法降维
# 利用主成分分析法PCA,对数据进行降维,要求降维后数据保留95%原数据信息即可。
data = pd.read_excel('principal_component.xls', header=None)
from sklearn.decomposition import PCA
# pca = PCA()
# print(pca.fit(data))
# print(pca.explained_variance_ratio_)
# 返回各个成分各自的方差百分比
# 由结果可看出前三个主成分的累积贡献值达到95%
pca = PCA(3)
pca.fit(data)
# 降低维度
low_dimension = pca.transform(data)
# 持久化保存
pd.DataFrame(low_dimension).to_excel('another_principal_component.xls')

【2】运行结果:

生成文件:another_principal_component.xls

以下该文件的截图:

五、 实验总结

通过这次实验,我了解到数据探索、数据预处理是很有趣味的,它涉及的知识面是很广的。数据探索对给定数据,首先查看数据基本情况,分析集中趋势,包括均值,中位数,众数指标。分析离散趋势,包括极差,四分位间距等,并给出五数概况。然后进行可视化,数据预处理,包括数据清洗-缺失值处理,如采用合适方法进行数据增补;连续属性离散化,如用等宽和等频进行离散化;主成分分析法降维等。若是要想好好掌握这数据处理这技能,不仅要花时间学习概率统计学理论知识,还需要知道对应Python的什么模块的什么函数,以及该函数的参数如何使用。

数据探索与数据预处理的实验报告相关推荐

  1. 第1章-数据探索(1)-数据预处理

    简介 在我们了解了业务背景,确定了需求和分析目标以后,我们接下来要面对的,就是数据的探索了.不论数据的形式是直接连到数据库.还是导出的csv.txt.json等格式,当我们把数据加载到我们的分析利器( ...

  2. 数据挖掘--数据探索与数据预处理

    文章目录 数据探索与数据预处理 数据理解 清除变量 分类型自变量 处理时间变量 异常值 极值 数据分箱 缺失数据 降维 过抽样与欠抽样 参考 黑体字为预处理相关的模型,即在使用这些模型时,需要关注到这 ...

  3. 数据竞赛专题 | 数据探索-从数据中发现隐藏价值

    为了帮助更多竞赛选手入门进阶比赛,通过数据竞赛提升理论实践能力和团队协作能力.DataFountain 和 Datawhale 联合邀请了数据挖掘,CV,NLP领域多位竞赛大咖,将从赛题理解.数据探索 ...

  4. 大数据聚类算法性能比较及实验报告

    在大数据领域这个聚类算法真是起到了十分重要的作用,只有通过有效地聚类才能得到非常直观的结果. 有一个实验要求对比两种大数据聚类算法的性能,具体的代码也不是由我实现的,我只是改了一部分,主要还是博客大佬 ...

  5. 数据结c语言约瑟夫环实验报告,数据结构约瑟夫环实验报告.doc

    数据结构约瑟夫环实验报告.doc 数据结构与算法设计约瑟夫环实验报告实验一专业物联网工程班级物联网1班学号15180118姓名刘沛航一. 实验目的 1.熟悉VC环境,学习使用C语言利用链表的存储结构解 ...

  6. 数据预处理—-(数据探索、数据清理、数据集成、数据规约、数据变换)

    数据挖掘概念与技术 定义挖掘目标–>数据取样–>数据探索–>数据预处理–>挖掘建模–>模型评价 第一章.数据 挖掘的数据类型:时间序列,序列,数据流,时间空间数据,多媒体 ...

  7. 决策树模型回归可视化分析_商业分析过程与数据探索

    通常,商业模型以历史数据构建,一旦对模型精确度感到满意,就可以将模型部署到生产中进行实时数据分析. 第一阶段,理解商业问题 在项目初始阶段,重点是从商业角度理解商业问题,商业目标和商业要求,然后将这种 ...

  8. 数据探索、数据清洗学习笔记

    目录 1.说明 2.作文目的 3.数据探索 3-1.定义 3-2.意义 3-3.方法 3-3-1.数据质量分析 3-3-1-1.定义 3-3-1-2.意义 3-3-1-3.判别(分析)方法 3-3-1 ...

  9. 数据挖掘实战—餐饮行业的数据挖掘之数据探索(EDA)

    文章目录 引言 一.前期准备 1.目标定义与任务理解 二.数据采集与抽样 三.数据探索 1.数据质量分析 1.1缺失值分析 1.1.1缺失值可视化 1.1.2描述性统计 1.1.3统计缺失数与缺失率 ...

最新文章

  1. Python自然语言处理实战
  2. 软件测试——JUnit中的参数化测试
  3. android 调试技巧
  4. linux改文件系统类型,linux文件系统类型及mount
  5. 2019支持c99吗_德国LYNX携手北京十方融科科技有限公司成功中标2019年中国联通北京市分公司4K超高清视频信号传输设备购置项目...
  6. MySQL8.0卸载教程
  7. net.sz.framework 框架 ORM 消消乐超过亿条数据排行榜分析 天王盖地虎
  8. Modular Inverse(zoj3609+欧几里德)
  9. 微信开发者工具使用bug
  10. Win11截图键无法使用怎么办?Win11截图键无法使用的解决方法
  11. C/C++ C语言定义结构体的几种方法
  12. win10插入耳机还是外放
  13. python实用30个小技巧
  14. matlab拟合度R方,...1),问题是什么是拟合优度?、R^2大于多少说明拟合度很好,R^2在...-拟合度-数学-冀群是同学...
  15. 组装台式计算机的过程,学习电脑装机全过程 组装台式机图解教程(6)
  16. STM32不能进入睡眠模式
  17. 为Excel工作表单元格命名的两种方法
  18. 牛客练习赛10 B栈和排序【思维】
  19. 建模语言UML在软件开发中的应用
  20. 《管理信息系统》考研复试整理

热门文章

  1. C语言身份证信息查询系统(可验证输入身份证是否合法)
  2. Webplus网站群管理平台介绍
  3. 论文Pyramid Attention Network for Semantic Segmentation笔记
  4. 二进制与十进制的换算
  5. 数字图像处理(第四版)胡学龙:编程实现图3.5中不同采样率图像的显示效果
  6. 去除chrome自动填充黄底样式
  7. 2021年美赛C题思路
  8. uml:什么是数据流图
  9. 你写注释她帮你写代码
  10. linux 内核 课程,Linux内核分析课程-全面剖析Linux内核技术 揭开Linux内核的面纱 Linux内核学习视频教 ......