开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天
一、本篇笔记重点内容:
- 数据处理
- 数据去重
- 数据复制
二、详细知识点介绍
数据在第三方库中的存储格式
- 数据集多是以Pandas中的DataFrame形式展现
- Sklearn在Numpy已有数据类型的基础上,也逐渐兼容Pandas的数据类
- ndarray是科学计算库Numpy的主要数据类型
- Scipy则兼容Numpy的数据类型,扩展了Numpy的功能
在数据分析过程中
- 导入程序的数据集,多以二维的形式展现;
- 矩阵的列代表数据集的字段;
- 矩阵的行代表数据集的观测值或者记录;
- 在数据清洗阶段,通过这个数据矩阵来对数据集进行操作;
在实际分析过程中:
通常选取数据集的若干列和若干行进行下一步的分析; 使用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)
数据去重
- 为了加深对数据的理解,需要知道数据集是否存在重复值
- 重复值的出现,有两种情况:
- 一种是个别字段的取值存在重复
- 另一种则是数据集存在重复的观测记录
观察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转换为对应的日期对象,方便计算查询