数据改写-数据科学导论

一、Pandas数据处理

数据科学过程:数据获取、数据改写、数据分析、数据可视化

数据改写
对分析和实验过程中不适合的数据格式,使用一系列基本的python数据结构和命令处理所有的问题数据,为数据科学过程下一阶段提供典型的数据矩阵,矩阵的行和列中分别存储观测数据和变量

数据分析
包括简单统计和报表,统计分析,数据挖掘,机器学习方法等

Pandas数据处理:

  • pandas可以从文件加载表格数据
  • pandas是基于Numpy的一种工具,该工具是为了解决数据分析任务而创建的
  • 默认情况下,pandas会将数据存储到一个专门的数据结构中,这个数据结构能够实现按行索引、通过自定义的分隔符分割变量、推断每一列的正确数据类型,转换数据,以及解析日期,缺失值和出错数据
  • pandas中有两大核心数据结构
    ——Series(一维数据)
    ——Dataframe(数据框,多特征数据,既有行索引,又有列索引)
  • 使用Pandas进行数据加载和预处理

数据加载
1>数据加载:pandas.read_csv
2>显示数据前五行:文件名.head()-默认前五行
3>显示数据后五行:文件名.tail()-默认后五行
4>显示数据列名称:文件名.columns

处理问题数据
1>数据替换:.fillna()-括号内指定替换后的数值
替换为列均值(axis=0“按列操作”,axis=1“按行操作”)
2>数据集格式错误,可以在数据加载过程进行控制(error_bad_lines=False)

处理大数据集

  • 如果要加载的数据集过大而采用的内存不适用,可以采用批处理机器学习算法,一次只使用部分数据
  • 使用Python可以记载数据到区块(chunk),使数据集以连续流的形式流入数据框或其他的数据结构中
  • 使用pandas,有两种方式进行文件区块划分和加载
    第一种方式是加载数据集到相同大小的区块中。每个区块是数据集的一部分,包含数据的所有列,区块的行数则在函数调用中使用chunksize参数进行设置。
    另一种方式是为它专门申请一个迭代器,可以动态的决定每一个pandas数据框的长度(即多少行)

访问其他数据格式
到目前为止,我们处理的都是CSV文件。pandas库提供了类似的功能来加载MS Excel、HDFS、SQL、HTML和Stata等类型的数据集。
pandas数据框可以通过合并Series或其他类似列表来创建
标量转换成列表的方式如下:

import pandas as pd
my_own_dataset=pd.DataFrame({'col1':range(6),'col2':[1.0]*6,'col3':1.0,'col4':'Hello world!'})
print(my_own_dataset)

数据预处理

  • 如果想了解每个特征的统计数据,可以响应的对每列进行分组操作
  • 如果需要使用函数对观测值进行排序,可以使用.sort()方法
  • 如果数据集包含时间序列(如类别用数字表示),需要对它使用rolling操作
  • Pandas apply()方法能够通过编程执行任何按行或按列的操作
    如果按元素操作,应使用applymap()

数据选择
.loc

使用分类数据和文本数据

1、通常情况下,我们主要处理两种类型的数据:分类数据和数值数据

  • 数值数据都是可比较的,可以使用等于、大于、小于等二进制操作符
  • 数据数据具有统计属性,这不适用于其他类别
  • 分类数据表示一种可以测量的属性,通常可以划分为几个等级
  • 布尔数据是分类数据与数值数据的一个补充,可以将类属特征编码成数值

2、Scikit-Learn

  • Scikit-Learn是Python专门针对机器学习应用发展的一款开源框架
  • 功能:分类,回归,聚类,数据降维,模型选择和数据预处理等
  • OneHotEncoder:独热编码,又称一位编码,即使用N位状态寄存器堆N个状态进行编码,每个状态有独立发寄存器位,且只有一位有效;
  • LabelEncoder:标签编码,将原文本类别转换成整形数值,这种情况下数值仍然是一个分类变量,对它排序没有意义

特殊的数据类型——文本

  • 处理文本最常用的方法是使用词袋—bag of words

  • 在这种方法中,每一个单词都变成了特征,文本就成了包含其自身特征非零元素的向量(如单词)
    查看文件的地址:.filenames
    查看文件的标签:.target
    查看文件的内容:.data

  • 处理文本最简单的方法是将数据集的主体转换成词语序列
    词数统计:
    CountVectorizer:

  • 一个文本特征提取方法,对于每一个训练文本,其只考虑每种词汇在该训练文本中出现的频率

  • 将文本中的词语转换为词频矩阵,通过fil_transform函数计算各个词语出现的词数
    (行数:样本数、列数:特征数(数据集中的单词数))
    词频统计:
    TF:词频
    IDF:逆向文件频率。有些词可能在文本中频繁出现,但并不重要,即信息量很小,如is、of、that这些单词。这些单词在语料库中出现的频率也非常大,我们就可以利用这点,降低其权重。IDF(w)=log_e(语料库的总文档数)/(语料库中词w出现的文档数)
    TF-IDF:TF*IDF
    TF-IDF:TF-IDF词频-逆向文件频率。在处理文本时,如何将

二、Numpy数据处理

使用Numpy进行数据处理
对于加载的数据,必须进行进一步的处理,为后继的监督学习和无监督学习过程准备合适的数据矩阵。

  • 第一个阶段:数据是异质数据时(数据类型是数字和符号的混合)
  • 第二个阶段:数据为数值表格,表中的行表表示实例,列表示实例的观测特征,也就是变量
  • Pandas:数据框(DataFrame)
  • Numpy:多维数组(ndarray)

Numpy中的N维数组
Python中列表可以按顺序存储异质对象
Python中字典允许访问复杂内容、多维数据的数据结构

  • 存在内存和速度等方面问题
  • 善于存储数据确不善于操作数据
    • 处理数据时,必须先自定义函数,对列表和字典元素进行迭代和映射,不适用于大数据处理

1>ndarray类的属性
-内存最优(以内存块的最佳布局传送数据)

  • 允许快速线性代数计算(矢量),不需要使用循环迭代就能进行逐元素的操作
  • 是Scipy和Scikit-learn等重要库的数据结构,作为他们函数的输入
  • 通常存储单一的、事先定义好的特定数据类型
  • 初始化之后,数组的大小就固定了

2>Numpy ndarray对象基础

  • Python中,数组在每个索引位置,数组存储指定类型的数据,且数据一开始就确定类型,根据类型来分配内存空间
  • 数组创建程序可以保留确切的内存空间以存储所有的数据
  • 尽管数据的大小固定,也不能在结构上发生变化,数组元素
  • Numpy数组缺点是不方便数据更改,插入和删除数据时需要重新创建一个数组
  • 列表数据结构在表示多维数据时,只能将自己转换成嵌套列表,导致访问数据增加时间开销和内存碎片
  • 查看数组,数据结构中的数据转换成其他形式,但原数组不变
  • 复制数组,创建了一个具有不同结构的新数组
  • Pandas所有的数据框实际上都是一维的Numpy数组组成
  • 按列操作,每列都是一个Numpy数组,继承了ndarray快速和高效的内存
  • 按行操作,需要访问不同的列,即不同的Numpy数组
  • Numpy数组使用整数作为位置索引,pandas索引需要将索引转换成对应的位置再操作
  • 位置索引比pandas索引速度快

你可能感兴趣的:(数据科学导论)