pandas

4. pandas

4.1 pandas介绍

2008年WesMcKinney开发出的库

专门用于数据挖掘的开源python库

以Numpy为基础,借力Numpy模块在计算方面性能高的优势

基于matplotlib,能够简便的画图

独特的数据结构

4.2 使用pandas的原因

  • 增强图表可读性

  • 便捷的数据处理能力

  • 读取文件方便

  • 封装了Matplotlib、Numpy的画图和计算

4.3 pandas数据结构

4.3.1 Series
  • 一维数据结构,类似于一维数组

    • 能够保存任何类型的数据
    • 由一组数据和与之相关的索引两部分构成
  • 创建

    • pd.Series(data=None, index=None, dtype=None)

      • data:传入的数据,可以是ndarray、list等
      • index:索引,必须是唯一的,且与数据的长度相等。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。
      • dtype:数据的类型
    • 通过已有数据创建

      • 指定内容,默认索引
      • 指定内容,指定索引
    • 通过字典数据创建

  • 属性

    • index
    • values
4.3.2 DataFrame
  • 二维表格型数据结构,类似于二维数组或表格

    • 行索引

      • 表明不同行。横向索引,叫index,0轴,axis = 0
    • 列索引

      • 表明不同列。纵向索引,叫columns,1轴,axis = 1
  • 创建

    • pd.DataFrame(data=None, index=None, columns=None)

      • index:行标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。
      • columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。
    • 通过已有数据创建

  • 属性

    • shape

    • index

      • dataframe的行索引列表
    • columns

      • dataframe的列索引列表
    • values

      • 直接获取其中array的值
    • T

      • 转置
    • .head(5)

      • 显示前5行内容,不补充参数,默认5行,填入参数则显示前N行
    • .tail(5)

      • 显示后5行内容,不补充参数,默认5行,填入参数则显示后N行
  • 索引的设置

    • 修改行列索引值

      • 必须整体全部修改
    • 重设索引

      • reset_index(drop=False)

        • drop:默认为False,不删除原来索引,如果为True,删除原来的索引值
    • 以某列值设置为新的索引

      • set_index(keys, drop=True)

        • keys : 列索引名成或者列索引名称的列表
        • drop : boolean, default True.当做新的索引,删除原来的列
4.3.3 MuliIndex
  • 三维数据结构

  • 多级或分层索引对象

    • index属性

      • names:levels的名称
      • levels:每个level的元组值
  • 创建

    • pd.MultiIndex.from_arrays()
4.3.4 panel
  • 存储3维数组

  • class pandas.Panel(data=None, items=None, major_axis=None, minor_axis=None)

    • data : ndarray或者dataframe
    • items : 索引或类似数组的对象,axis=0
    • major_axis : 索引或类似数组的对象,axis=1
    • minor_axis : 索引或类似数组的对象,axis=2
  • panel数据要是想看到,则需要进行索引到dataframe或者series才可以

4.4 基本数据操作

4.4.1 索引操作
  • 直接使用行列索引(先列后行)

  • 结合loc或者iloc使用索引

    • 使用loc:只能指定行列索引的名字
    • 使用iloc可以通过索引的下标去获取
  • 使用ix组合索引

    • 使用ix进行下表和名称组合做引
4.4.2 赋值操作
  • 对DataFrame当中的close列进行重新赋值为1

    • data[‘close’] = 1
    • data.close = 1
4.4.3 排序
  • 形式

    • 对于索引进行排序
    • 对于内容进行排序
  • dataframe排序

    • df.sort_values(by=, ascending=) , 单个键或者多个键进行排序

      • by:指定排序参考的键

      • ascending:默认升序

        • ascending=False:降序
        • ascending=True:升序
    • df.sort_index给索引进行排序

  • Series排序

    • series.sort_values(ascending=True)
    • series.sort_index()

4.5 DataFrame 运算

4.5.1 算术运算
  • add
  • sub
4.5.2 逻辑运算
  • >

  • 多个逻辑 &

  • 逻辑运算函数

    • query(expr)

      • expr:查询字符串
    • isin(values)

      • 是否为某(些)值
4.5.3 统计运算
  • describe

    • 综合分析: 能够直接得出很多统计结果,count, mean, std, min, max 等
  • 统计函数

    • 在这里插入图片描述

    • max(0 代表列求结果,1代表行求统计结果)

    • std() → 标准差

    • var() → 方差

    • median() → 中位数

    • idxmax() 求最大值的位置

    • idxmin() 求最小值的位置

    • 累计统计函数

      • 在这里插入图片描述
4.5.4 自定义运算
  • apply(func, axis=0)

    • func:自定义函数
    • axis=0:默认是列,axis=1为行进行运算

4.6 pandas画图

4.6.1 pandas.DataFrame.plot(kind=“line”)
  • kind

    • ‘line’ : line plot (default)
    • ‘bar’ : vertical bar plot
    • ‘barh’ : horizontal bar plot
    • ‘hist’ : histogram
    • ‘pie’ : pie plot
    • ‘scatter’ : scatter plot
4.6.2 pandas.Series.plot

4.7 文件读取与存储

4.7.1 CSV
  • pandas.read_csv(filepath_or_buffer, sep =‘,’, usecols )

    • filepath_or_buffer:文件路径
    • sep :分隔符,默认用","隔开
    • usecols:指定读取的列名,列表形式
  • DataFrame.to_csv(path_or_buf=None, sep=', ’, columns=None, header=True, index=True, mode=‘w’, encoding=None)

    • path_or_buf :文件路径
    • sep :分隔符,默认用","隔开
    • columns :选择需要的列索引
    • header :boolean or list of string, default True,是否写进列索引值
    • index:是否写进行索引
    • mode:‘w’:重写, ‘a’ 追加
4.7.2 HDF5
  • HDF5文件的读取和存储需要指定一个键,值为要存储的DataFrame

  • pandas.read_hdf(path_or_buf,key =None,** kwargs)

    • path_or_buffer:文件路径
    • key:读取的键
    • return:Theselected object
  • DataFrame.to_hdf(path_or_buf, key, \kwargs)

  • 优先选择使用HDF5文件存储

    • HDF5在存储的时候支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的
    • 使用压缩可以提磁盘利用率,节省空间
    • HDF5还是跨平台的,可以轻松迁移到hadoop 上面
4.7.3 JSON
  • pandas.read_json(path_or_buf=None, orient=None, typ=‘frame’, lines=False)

    • 将JSON格式准换成默认的Pandas DataFrame格式
  • DataFrame.to_json(path_or_buf=None, orient=None, lines=False)

    • 将Pandas 对象存储为json格式

4.8 高级处理

4.8.1 缺失值处理
  • 如何处理nan

    • 获取缺失值的标记方式

      • NAN

        • 判断数据中是否包含nan

          • 存在nan

            • 删除,dropna(axis=‘rows’)
            • 替换,fillna(value, inplace=True)
          • 没有使用nan

            • 先替换为nan,再继续处理
          • pd.isnull(df)

          • pd.notnull(df)

4.8.2 数据离散化
  • 减少给定连续属性值的个数

  • 连续属性的离散化就是在连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数 值代表落在每个子区间中的属性值

  • qcut、cut实现数据分组

    • qcut:大致分为相同的几组
    • cut:自定义分组区间
  • get_dummies实现哑变量矩阵

4.8.3 合并
  • pd.concat([data1, data2], axis=1)

    • 按照行或列进行合并,axis=0为列索引,axis=1为行索引
  • pd.merge(left, right, how=‘inner’, on=None)

    • 可以指定按照两组数据的共同键值对合并或者左右各自

      • left: DataFrame
      • right: 另一个DataFrame
      • on: 指定的共同键
      • how:按照什么方式连接
4.8.4 交叉表与透视表
  • 交叉表

    • 计算一列数据对于另外一列数据的分组个数
  • 透视表

    • 指定某一列对另一列的关系
4.8.5 分组与聚合
  • 分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况
  • pandas中,抛开聚合谈分组,无意义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祝我天天开心,平安健康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值