数据探索与数据预处理的实验报告

数据探索与数据预处理

提示

参考书:张良均《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的什么模块的什么函数,以及该函数的参数如何使用。

Original: https://blog.csdn.net/xu_yushu/article/details/124554064
Author: xu_yushu
Title: 数据探索与数据预处理的实验报告

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/638411/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球