数据探索与数据预处理的实验报告 Posted 2023-04-11 xu_yushu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据探索与数据预处理的实验报告相关的知识,希望对你有一定的参考价值。
数据探索与数据预处理
提示
参考书 :张良均《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】代码:
import pandas as pd
import matplotlib. pyplot as plt
xls_file = pd. read_excel( "./catering_sale.xls" )
df = pd. DataFrame( xls_file)
data1 = df[ '销量' ]
des = data1. describe( )
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 = 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】代码:
from wordcloud import WordCloud
import matplotlib. pyplot as plt
import jieba
import docx
f = ' '
doc = docx. Document( './XX大学防控疫情确保开学安全工作方案.docx' )
for p in doc. paragraphs:
f = f + p. text
cut_txt = ' ' . join( jieba. cut( f) )
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】代码:
import pandas as pd
from scipy. interpolate import lagrange
input_file = 'catering_sale.xls'
output_file = 'sales.xls'
data = pd. read_excel( input_file)
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】代码:
import pandas as pd
datafile = 'discretization_data.xls'
data = pd. read_excel( datafile)
data = data[ u'肝气郁结证型系数' ] . copy( )
k = 4
d1 = pd. cut( data, k, labels= range ( k) )
w = [ 1.0 * i / k for i in range ( k + 1 ) ]
w = data. describe( percentiles= w) [ 4 : 4 + k + 1 ]
w[ 0 ] = w[ 0 ] * ( 1 - 1e-10 )
d2 = pd. cut( data, w, labels= range ( k) )
from sklearn. cluster import KMeans
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' ] = False
plt. 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 plt
cluster_plot( d1, k) . show( )
cluster_plot( d2, k) . show( )
cluster_plot( d3, k) . show( )
【3】运行结果:
4.2.5 题目(3.3)的主成分分析法降维
【1】提示:
【2】代码:
import pandas as pd
data = pd. read_excel( 'principal_component.xls' , header= None )
from sklearn. decomposition import PCA
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的什么模块的什么函数,以及该函数的参数如何使用。
20172317 《程序设计与数据结构》实验一实验报告
20172317 2017-2018-2 《程序设计与数据结构》实验一报告
课程:《程序设计与数据结构》
班级: 1723
姓名: 蒋子行
学号:20172317
实验教师:王志强
实验日期:2018年3月21日
必修/选修: 必修
1.实验内容
下载IDEA,并且成功的配置了IDEA
完成PP2.5,PP3.3,PP3.5,PP3.8,不过这些不是本来就是第三周作业么
把编程工程导入IDEA中
2.实验过程及结果
过程:首先是到处查找关于本次试验的资料...然后到处下载IDEA....然后想办法怎样让自己的IDEA变成免费软件.....然后把那几个编程项目再做一遍,尽管之前就已经做好了....
结果:实验要求悉数完成,但是可能配置的并不完善,需要后续的补足
3.实验过程中遇到的问题和解决过程
问题1:为什么就多了一个目录
问题1解决方案:
啊,是的是的,恼人程度不亚于晨跑,这就是配置IDEA
所以,按照正常的步骤来(或者说某种意义上是正常的步骤),在打开了这玩意之后,然后是新建项目,然后要到file>new>project from version control>git,然后把码云那些乱七八糟的东西设置在这上面,然后....就给我搞成这样了
嘛,嘛,至少往好处想,我的代码量的瞬间增长就是因为这个多出来的目录搞的鬼,尽管如此,其他人似乎并没有出现这种情况,看来是我某一步做错了,于是删掉了那个目录,从头再来
接下来接下来....重新打开的时候就不选"creat new project"了,直接选"open",然后竟然就没问题了,耶.....
问题2:为什么这目录又出现了
问题2解决方案:
转念一想,不对,那个啥码云乱七八糟的东西是不是应该继续设置在上面?反正我通过直接"open"就把原来的目录打开了,这时候再通过那个乱七八糟的步骤总该可以了吧?
.....很好很好,这个目录又出现了,仿佛就像是一个复苏的僵尸一样,而且它做的第一件事就是对你竖了一个大大的中指。
删了删了,但是这样的话真的对码云没什么影响么?等有空余时间我得仔细研究下开发环境、git、码云之间的关系....
问题3:为什么没有「New」->「Java Class」
问题3解决方案:
所以,我再次删掉了那个多出来的目录,懒得再管那个小玩意了,抱着“以后再去干掉那个混蛋的”心态,按照步骤 继续去做,首先是在src目录那里右键然后...
......我估计是因为前面码云和git啥的没弄好所以才会出现这个情况,不过反正新建文件只要后缀名是.java一样没啥问题,管他的
其他(感悟、思考等)
稀烂的加载速度,奇烂的写代码手感,一堆华而不实的小工具,糟糕透顶的响应速度,无法理解的用户界面,无法用语言描述的操作笨拙感
真的?以后都要用这个玩意写代码?算了,杀了我吧
我承认我不会用,但是这~~暂时~~不会改变我认为IDEA实在是用不来的观念,也许以后真的不得不要去用的时候我再去把IDEA从头到尾通透的搞懂吧
以上是关于数据探索与数据预处理的实验报告的主要内容,如果未能解决你的问题,请参考以下文章
20172307 2018-2019-1 《程序设计与数据结构》实验1报告
20172307 2018-2019-1 《程序设计与数据结构》实验2报告
20182309 2019-2020-1 《数据结构与面向对象程序设计》实验五报告
实现房价预测及计算过程中相关实验数据可视化
# 20182304 实验八 《数据结构与面向对象程序设计》实验报告
20182332 实验五《数据结构与面向对象程序设计》实验报告