学习目标

  • 了解Numpy与Pandas的不同
  • 说明Pandas的Series与Dataframe两种结构的区别
  • 了解Pandas的MultiIndex与panel结构
  • 应用Pandas实现基本数据操作
  • 应用Pandas实现数据的合并
  • 应用crosstab和pivot_table实现交叉表与透视表
  • 应用groupby和聚合函数实现数据的分组与聚合
  • 了解Pandas的plot画图功能
  • 应用Pandas实现数据的读取和存储

    纪要

    5.1Pandas介绍

    1.pandas概念

    1. 开源的数据挖掘库<br /> 用于数据探索<br /> 封装了matplotlib,numpy

    2.案例知识点

    1.创建DataFrame
    1. pd.DataFrame(ndarray)
    2.创建日期
    1. pd.date_range()<br /> start -- 开始日期<br /> end -- 结束日期<br /> periods -- 时间跨度<br /> freq -- 统计时间方式

    3.DataFrame介绍 — 类比二维数组[*]

    1.dataframe属性
    1. 对象.shape<br /> 对象.index<br /> 对象.columns<br /> 对象.values<br /> 对象.T<br /> 对象.head()<br /> 对象.tail()
    2.dataframe设置索引
    1.修改行列索引
    1. 必须整行或者整列去进行修改
    2.重设索引
    1. 对象.reset_index()
    3.设置新索引
    1. 对象.set_index()<br /> 如果设置索引是两个的时候就是multiIndex

    4.MultiIndex和panel — 类比三维数组[**]

    1.MultiIndex
    1. 对象.index<br /> 对象.index.names
    2.panel — 已经弃用,了解
    1. 直接没法进行查看里面的值,需要通过索引获取<br /> 对象[:, :, ""]

    5.Series — 一维数组[**]

    1.创建
    1. 通过ndarray创建<br /> 指定索引创建<br /> 通过字典创建
    2.属性
    1. 对象.index<br /> 对象.values

    5.2 基本数据操作

    1.索引操作

    1. 1.直接 -- 先列后行<br /> 2.loc -- 先行后列,索引值<br /> 3.iloc -- 先行后列,索引值的下标<br /> 4.ix -- 先行后列,混合索引

    2.赋值操作

    1. 1.对象[""]<br /> 2.对象.close

    3.排序

    1. 1.dataframe<br /> 对象.sort_values()<br /> by -- 按照什么排序<br /> ascending -- 升降序<br /> 对象.sort_index()<br /> 注意:by这个参数可以接受多个值,优先按照第一个索引排序,如果相同,按照后面的<br /> 2.series<br /> 对象.sort_values()<br /> 对象.sort_index()

    5.3 DataFrame运算

    1.算术运算

    1. 直接使用方法, add, sub ...<br /> 也可以用符号

    2.逻辑运算

    1. 2.1 逻辑运算符号<、 >、|、 &<br /> 直接判断<br /> 2.2 逻辑运算函数<br /> 对象.query("")<br /> 对象.isin([])

    3.统计函数

    1. 对象.describe()<br /> 统计函数<br /> sum<br /> mean<br /> ...<br /> mode -- 众数<br /> idxmax -- 最大值的索引<br /> idxmin -- 最小值的索引

    4.累计统计函数

    1. 函数 作用<br /> cumsum 计算前1/2/3/…/n个数的和<br /> cummax 计算前1/2/3/…/n个数的最大值<br /> cummin 计算前1/2/3/…/n个数的最小值<br /> cumprod 计算前1/2/3/…/n个数的积

    5.自定义运算[*]

    1. apply(func, axis=)<br /> func -- 自己定义的函数

    5.4 Pandas画图

    对象.plot()
    kind —
    line — 折线图
    bar
    barh — 条形图旋转
    hist
    pie
    scatter

    5.5 文件读取与存储

    1.csv

    1. 1.读取-- pd.read_csv<br /> 参数:<br /> usecols -- 需要哪列<br /> 2.存储 -- 对象.to_csv<br /> 参数:<br /> columns -- 保存哪列

    2.hdf

    1. 1.读取 -- pd.read_hdf()<br /> 2.写入 -- 对象.to_hdf()<br /> 注意:保存文件是****.h5

    3.json

    1. 1.读取 -- pd.read_json()<br /> 2.写入 -- 对象.to_josn()<br /> 参数:<br /> orient -- 按照什么方式进行读取或者写入<br /> lines -- 是否按照行读取和写入

    4.推荐使用hdf

    1. 1.压缩方式,读取效率快<br /> 2.压缩后,节省空间<br /> 3.支持跨平台

    5.6 高级处理-缺失值处理[*]

    判断数据是否为NaN:

    1. np.any(pd.isnull(movie)) # 里面如果有一个缺失值,就返回True<br /> np.all(pd.notnull(movie)) # 里面如果有一个缺失值,就返回False

    处理方式:

    1. 存在缺失值nan,并且是np.nan:<br /> 1、删除存在缺失值的:dropna(axis='rows')<br /> 注:不会修改原数据,需要接受返回值<br /> 2、替换缺失值:fillna(value, inplace=True)<br /> value:替换成的值<br /> inplace:True:会修改原数据,False:不替换修改原数据,生成新的对象

    不是缺失值nan,有默认标记的

    1. 对象.replace()<br /> to_replace -- 替换前的值<br /> value -- 替换后的值

    5.7 高级处理-数据离散化

    1.什么是数据离散化

    1. 把一些数据分到某个区间,最后用不同的符号或者数字表达

    2.数据离散化api

    1. pd.qcut() -- 把数据大致分为数量相等的几类<br /> pd.cut() -- 指定分组间隔<br /> 数量统计:<br /> 对象.value_counts()

    3.one-hot编码

    1. 就是把数据转换成为0,1统计类型<br /> 别名:哑变量,热独编码<br /> api:<br /> pd.get_dummies()

    5.8 高级处理-合并

    pd.concat()
    axis=
    pd.merge()
    left — 左表
    right — 右表
    on — 指定键
    how — 按照什么方式进行拼接

    5.9 高级处理-交叉表与透视表

    1.什么交叉表,透视表

    1. 就是探索两列数据之间的关系

    2.pd.crosstab()

    1. 返回具体数量

    3.对象.pivot_table()

    1. 返回占比情况

    5.10 高级处理-分组与聚合

    1.api

    1. 对象.groupby()<br /> 参数:as_index -- 是否进行索引<br /> 注意:可以对数据进行对此分组,需要里面传递一个列表进行完成.