数据预处理基础知识(一) | 「掘金日新计划 · 12 月更文挑战」

145 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天

一、本篇笔记重点内容:

  • 数据可视化
  • 数据整合
  • 数据分组
  • 数据不均衡

二、详细知识点介绍

数据可视化

  • 数据可视化借助图形,图标等手段,从数据集中抽取有效信息,并对其进行展现

  • 从视觉上快速感知、了解数据集

  • 多维度观察“平面”数据

Matplotlib

  • 采集数据
  • 数据可视化了解数据统计特征
  • 可绘制散点图,折线图,分布图,盒图(箱线图)等
  • 充分了解数据,再进行数据分析

设置折线图的颜色、线型、标签、显示图例

ax1.plot(iris['sepal_length'], 'k--', label='sepal_length')
ax1.legend(loc='best')

image.png 设置散点图的颜色和线型

ax3.scatter(range(len(iris['petal_width'])),iris['petal_width'] , label= 'petal_width')
ax3.legend(loc='best')

image.png

绘制直方图并设置条形bin的个数

a = ax2.hist(iris['sepal_width'],bins =10, label='sepal_width')
ax2.legend(loc='best’)

image.png 箱线图

whis指定离群点分割线

 ax.boxplot(iris['sepal_length'], whis=2)

plt.title()设置标题

 plt.title('box plot’)

plt.ylable()设置坐标轴名称

 plt.ylabel('data content')

image.png

画图工具 Seaborn

  • Seaborn是基于Matplotlib的一个Python作图模块
  • 配色更加好看,种类更多,但函数和操作比较简单
  • Seaborn有自带的数据集可供练习

数据整合

  • 使用Pandas库中的merge()函数合并数据集
  • 建立两个数据集df1和df2
df1=DataFrame({'lkey':['b','b','a','c'], 'data1':range(4)})
df2=DataFrame({'rkey':['a','b','b','d'], 'data2':range(4)})

image.png

  • 默认情况下merge()会根据重叠列的列名进行合并
  • merge()从左至右进行合并,用left_on和right_on指定
  • 从df1开始,找Ikey与rkey相同的值,进行合并

数据分组

数据分组是数据分析过程中的一个重要环节 例如

  • 对大学生成绩数据求平均,查看大学生的平均水平
  • 对不同专业的学生进行分组,分别计算不同专业学生成绩的平均值
  • 使用Pandas库中groupby()函数,对数据进行分组

数据不均衡

考虑数据集不均衡,关注数据集的类别所属问题

对于分类问题,在本身观测记录X的基础上,数据集还会添加一列字段数据y,表 示观测记录的类别, 那么该标注数据集表示为(X, y)

非标注数据集适用于聚类问题,通过学习算法,来获取事先未知的类别信息

解决数据不均衡-欠采样

  • 从多数的负类样本中,随机选择与正类样本数量相当的数据样本,组成新的数据集,这种方法称为欠采样
  • 正类样本数量过少,欠采样会直接导致样本容量大幅度减少,损失过多的有效信息

解决数据不均衡-过采样

  • 与欠采样不同,过采样随机从少量的正类样本中重采样,来扩充样本正类的数量,和负类样本的数量相当
  • 过采样可以让样本数量增加,消除不均衡,但会导致严重的过度拟合

解决数据不均衡-阈值移动

在Logistic回归分类问题中,针对每一个要分类的数据记录,使用Simgod函数作为激励函数,输出一个对应的数值y,作为判定类别的概率

在阈值移动方法中,预先设置阈值a 如果y > a,数据归属类A 反之,数据归属类B

为解决数据不均衡,可以改变阈值来调节数据集中类别的比例,适当增加少数类样本的数量