Pandas相关内容

本文最后更新于:3 年前

是Pandas鸭!


Pandas官网嗷

Series类型:(一维数据类型)

  • 一组数据和其索引构成:

    • import pandas as pd
      b = pd.Series([9,8,7,6],index=['a','b','c','d'])
      
    • index为自定义索引

    • 如果不定义index的话系统会自动从0开始帮你定义

  • 创建:

    • 从标量值创建(要给个index,对应的是同一个标量)

    • 从字典类型创建(直接传递给Series就好了)

      • 也可以重新给一个index, index与字典中的key相匹配,多余的赋值为NaN(None)

      可以看作index从字典中挑选相关的元素来构造了一个index的Series类型

    • 列表(上面就是例子)

    • ndarray(这个也可以,只要你构造好)

    • 其他函数

  • 基本操作:

    • .index获得索引
    • .values获得数据
    • 索引有两个:默认的为从零开始的自动索引,另一个是你定义的索引,都可以使用,但是不能够混用。
    • 其余特点:
      • 索引方式都是用【】
      • numpy中运算和操作可作用于Series类型
      • 可以通过自定义索引的列表进行切片。
      • 自动索引和自定义索引会一同被切片
    • 对于Series类型的处Series理得到的都是Series类型,本质上是对于value进行处理,不改变index的对应关系
    • 可以使用字典中的 in / .get(index) / .
  • 对齐问题:

    • Series + Series
    • 在两个索引中都存在的,value相加,只有一个存在,则index对应的值为NaN
  • name属性:

    • series的对象和索引都可以有一个名字,名字存在.name和.index.name中
  • Series对象可以随时修改并且立即生效

  • Series本质是一维带“标签”的数组,操作时根据索引对齐。

DataFrame类型:(二维数据类型)

  • 索引+多列数据(index+column),时一个表格型的数据类型,行索引为index,列索引为axis

  • 创建:

    • 二维ndarray
    • 一维ndarray, 列表,字典,元组或者Series构成的字典
    • Series类型
    • 其他DataFrame类型
    • 也可以从列表类型的字典创建(列表类型的字典每一个元素就是一列,然后根据元素个数去设置横向的index个数,不足的话也会自动补齐)

    反正就是两个维度上设置index嘛,方便读取数据,index就是行索引,columns则是设置的列索引,数据会根据行列索引自动补齐。

  • 一些数值的读取:

    • .index
    • .columns
    • .values
    • d[‘column’]
    • d.ix[‘index’]
    • d[‘column’][‘index’]
  • DataFrame本质上时二维带 “标签” 数组

以上两个东西的一个总结提高:

  • 如何改变Series和DataFrame对象?
  • 重新索引:
    • reindex(),直接给出你想要的index和column顺序即可
    • fill_value: 用于填充缺失位置的值
    • method: 填充方法
    • .columns.insert(pos,value)
  • 索引类型的常用方法:
    • .append(idx)
    • .diff(idx)
    • .intersection(idx)
    • .union(idx)
    • .delete()
  • 面向对象的方法:a.columns.operation() / a.index.operation()
  • .drop()可以删除Series和DataFrame指定行或列的索引

Pandas库中的运算:

  • 运算规则: 根据补齐后的数据进行运算,运算默认产生浮点数。

  • 有一些运算方法:

    • .add
    • .sub
    • .mul
    • .div

    采用这些方法可以很有效的添加一些参数,例如fill_value,使得多样性得以实现

  • 不同维度的运算为广播运算,一维Series默认在轴1参与运算。如过要其他的与之进项运算的话,要用add后则会sub方法才能实现,应该写成axis = 0,就是每一列都减去对应的一列。

  • 比较运算:

    • 只有同维度才能进行比较运算
    • 比较运算若在不同维度则为广播运算,默认在1轴上
  • Series = index + 一维数据

  • DataFrame = 行列索引 + 二维数据

  • 数据的排序:

    • 数据的理解:从数据中摘要得到想要的数据:
      • 基本统计
      • 分布/累计统计
      • 数据特征:相关性,周期性等
      • 数据挖掘(形成知识)
    • 排序方法:
      • .sort_index():对于索引进行排序(axis),默认升序(ascending)(默认为0轴,也就是纵向方向)
      • Series.sort_values(axis,ascending)
      • DataFrame.sort_values(by,axis,ascending),by时通过某个索引进行排序
      • NaN同意放在排序的末尾
  • 基本统计分析:

    • .sum .count .mean() .median() .var() .std() .max() .min()
    • 默认操作于0轴,可以这么理解,Series只有一个维度默认时零维,所以DataFrame有两个维度但是默认操作的也是零维度,所以是纵向的。
    • .argmin(),argmax() 计算最大/最小的索引(自动索引)
    • .idxmin(),idxmax() 计算最大/最小的索引(自定义索引)
    • .describe() 返回多维的统计信息,如果是series就返回series,如果是dataframe就返回dataframe.

Pandas中累计统计分析函数:

  • 统计分析函数:

    • .cumsum(): 计算和
    • .cumprod():计算积
    • .cummax():计算最大值
    • .cummin(): 计算最小值
  • 滚动计算函数:

    • .rolling(w).sum(): 相邻w个元素的和
    • .rolling(w).mean(): 相邻w个元素的算数平均值
    • .rolling(w).var(): 相邻w个元素的方差
    • .rolling(w).std(): 相邻w个元素的标准差
    • .rolling(w).min().max(): 相邻w个元素的最小值和最大值

    默认都是从零轴开始广播运算,就是纵向的运算。

数据的相关分析:

  • 相关性:正相关,负相关,不相关

  • 原理:协方差 => Pearson相关系数

  • 计算方法:

    • .cov(): 计算协方差矩阵
    • .corr(): 计算相关系数矩阵

    用series/dataframe.corr()就可以计算出对应的相关系数


Pandas相关内容
https://alexanderliu-creator.github.io/2021/02/20/python-shu-ju-fen-xi-yu-zhan-shi-pandas/
作者
Alexander Liu
发布于
2021年2月20日
许可协议