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

103 阅读3分钟

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

一、本篇笔记重点内容:

  • 数据处理
  • 数据去重
  • 数据复制

二、详细知识点介绍

数据在第三方库中的存储格式

  • 数据集多是以Pandas中的DataFrame形式展现
  • Sklearn在Numpy已有数据类型的基础上,也逐渐兼容Pandas的数据类
  • ndarray是科学计算库Numpy的主要数据类型
  • Scipy则兼容Numpy的数据类型,扩展了Numpy的功能

image.png

在数据分析过程中

  • 导入程序的数据集,多以二维的形式展现;
  • 矩阵的列代表数据集的字段;
  • 矩阵的行代表数据集的观测值或者记录;
  • 在数据清洗阶段,通过这个数据矩阵来对数据集进行操作;

在实际分析过程中:

通常选取数据集的若干列和若干行进行下一步的分析; 使用Numpy,载入birthrate样例数据集,介绍如何对一个数据矩阵进行切片操作;

import numpy as np
np.set_printoptions(formatter={'float': '{: 0.3f}'.format}) # 设置数据的精度
data = np.loadtxt('./input/birthrate.csv', delimiter=',', skiprows=1, usecols=[1,2,3,4])
print ("数据集有" + str(data.shape[0]) + "行," + str(data.shape[1]) + "列,具体内容如下:\n")
print (data)

数据去重

  • 为了加深对数据的理解,需要知道数据集是否存在重复值
  • 重复值的出现,有两种情况:
  1. 一种是个别字段的取值存在重复
  2. 另一种则是数据集存在重复的观测记录

观察birthrate样例数据集,发现数据集的proportion_of_population_farming
字段存在重复值,用unique()函数实现去重

unique_value = np.unique(data[:,2])
print ("字段拥有" + str(len(unique_value)) + "个不同的取值\n")
print (unique_value)

  • duplicated()返回一个布尔型数组,True代表出现重复值;False 则代表没有出现重复值。
  • drop_duplicates()直接舍弃重复值,返回一个不含重复行的新DataFrame对象,包含的数据与data的内容保持一致。

数据复制

  • 在处理矩阵与向量之间运算的时候,有时需要填补向量的维数,使之与矩阵匹配,避免循环的繁杂。
  • 在birthrate样例数据集中,得到了data的均值向量,如果要做数据中心化的操
  • 作,则需要复制均值向量mean_vector
  • 计算均值向量mean_vector

使用repeat()函数复制均值向量mean_vector

mean_vector.repeat(2, axis = 0)

repeat()函数可以复制数组中的元素,”2“表示将mean_vector中的每个元素复制2次,作用等同于”[2,2,2,2]“

如果想把数组看作是一个整体进行复制,可以使用tile()函数;

new_vector = np.tile(mean_vector,(2,2))
new_vector

除此之外,Numpy还提供了专门的函数来“精确”实现rempat()的功能

import numpy.matlib
np.matlib.repeat(new_vector,2,1)

日期类型表示

  • 日期属性的取值通常以字符串的形式存在 比如“2017-01-01 12:00:00”,或者 “2017/01/01 12:00:00”
  • 以时间戳的形式存在 也是一串数字,比如“1483243200”
  • 这三种时间格式都代表一个日期,即2017年1月1日中午12点

时间戳

  • 也称Unix时间戳,是指以特定的时刻为参照点,以秒为单位来计算的偏移量;
  • 这个时刻为1970-01-01 00:00:00;
  • 时间戳是唯一的;

以字符串形式存在的日期数据

通过Python标准库time和datetime转换为对应的日期对象,方便计算查询 image.png