• 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中,抛开聚合谈分组,无意义
  • 相关阅读:
    清晰还原31年前现场,火山引擎超清修复Beyond经典演唱会
    【广州华锐互动】鱼类授精繁殖VR虚拟仿真实训系统
    Android入门第34天-Android的Menu组件使用大全
    6、堆(新生区,永久区,堆内存调优(jvm调优))
    汇编语言(6)使用JCC指令构造分支与循环
    Spring @Autowire注解源码详解
    快速排序 sort
    【力扣刷题】Day30——DP专题
    (74)MIPI DSI LLP介绍(十四)
    【23考研】408代码题参考模板——栈和队列(C++STL)
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126159932