Pandas(二)进阶

李先生 2020年07月18日 63次浏览

Pandas进阶

1. Series与DataFrame中的索引

  • pandas的索引对象负责 管理轴标签和其他元数据 (比如轴名称等)。构建 Series或Data frame时, 所用到的任何数组或其他 序列的标签都会被转换成 一个 Index

  • Index对象是不可修改的 ( immutable),因此用户 不能对其进行修改

    image20200718011558325.png

  • 索引的删除

    image20200718012404042.png

image20200718012631146.png

  • 索引的选取和过滤

    image20200718013252221.png

  • 索引的切片选取数据
    利用标签的切片运 算与普通的Python切 片运算不同,其末端 是包含的

    image20200718013736194.png

总结:

  • 选取某列或选取某行或某几行

image20200718014543700.png

image20200718014954787.png

2.pandas中的数据运算与算术对齐

  • pandas最重要的一个 功能是,它可以对不同索 引的对象进行算术运算。 在将对象相加时,如果存 在不同的索引|对,则结 果的索引就是该索引对 的并集.
  • 对于DataFrame,对齐 会同时发生在行和列上, 两个DataFrame对象相 加后,其索引(行)和 列会取并集,如右代码 所示:
  • 在算术方法中的填充值
    在对不同索引的对象进 行算术运算时,你可能希望 当一个对象中某个轴标签 在另一个对象中找不到时 填充一个特殊值(比如0)

image20200718015509988.png

image20200718015523617.png

image20200718015534489.png
image20200718015601901.png

3. DataFrame与Series之间的运算

默认情况下, Dataframe和 Series 之间的算术运算会将 Series的索引匹配到 Dataframe的列,然后 沿着行一直向下广播

image20200718015931793.png

4. 函数应用和映射

  • Numpy的ufuncs(元 素级数组方法)也可 用于操作pandas对象
  • 另一个常见的操作是, 将函数应用到由各列 或行所形成的一维数 组上。 Dataframe的 apply方法即可实现 此功能
  • 此外,元素级的 Python 函数也是可以用的。假 如你想得到 frame中各 个浮点值的格式化字符 串,使用 applymap即可
  • Series 也有一个用于 元素级别函数的map方 法

image20200718021017987.png

image20200718021046715.png

image20200718021245088.png

5. 排序和排名

  • 根据条件对数据集排序 ( sorting)也是一种重要 的内置运算。要对行或 列索引进行排序按字典 顺序),可使用 sort_index 方法,它将返回一个已排 序的新对象
  • 在 Dataframe上,你可能 希望根据一个或多个列 中的值进行排序。将一 个或多个列的名字传递 给by选项即可达到该目 的

image20200718091216447.png

image20200718091404190.png

image20200718091443382.png

6. 查重

  • 虽然pandas强调索引是 唯一的,但这不是强制 的,如何快速判定索引 的值是否重复呢

  • Series索引如此, DataFrame的索引也是
    image20200718091909889.png

image20200718092256964.png

7. 汇总计算描述统计

  • pandas对象拥有一组常用的 数学和统计方法。它们大部分 都属于约简和汇总统计,用于 从 Series中提取单个值(如 sum或mean)或从 Dataframe 的行或列中提取一个 Series。 跟对应的 Numpy数组方法相 比,它们都是基于没有缺失数 据的假设而构建的。
  • NA值会自动被排除,除非整个 切片(这里指的是行或列)都是 NA。通过 skipna选项可以禁 用该功能
  • 有些方法是累积型的,如: cumsum (累积求和)
  • 还有些方法即不是间接统计型 的也不是累积型的,比如: describe
    image20200718093243780.png

image20200718093338375.png

image20200718093416246.png

8. 唯一值、频率统计

  • Pandas中有一些方法可以用于 从一组数中抽取唯一值,如: unique函数

  • 返回的值是无序的,如果需要 排序,可以用uniques.sort()

  • value_counts用于计算一个 Series中各值出现的频率,默 认情部下,Series统计出来的 值是按降序排列的

  • value_counts还有一个顶级的 pandas方法,可用于任何的数 组或序列

  • isin用于判断每个元素是否在所给序列中,传入参数可以是数组、序列、字典、DataFrame对象

    • 其中 如果是数组和序列,则判断每个元素是否在序列中,如果在,返回true,反之返回false

         + 如果是字典,则首先判断DataFrame中该列是否在字典的键序列中,如果在,继续匹配DataFrame中该列的每一元素是否在字典中对应键后面的值序列中,在返回true,反正返回false。如果DF中的某列的列名不在字典的键序列中,则该列全部返回false
         + 如果传入参数是DataFrame对象,则行列位置对应判断,相同返回true,反之返回false
      
  • 将value_counts与apply结合起 来应用

image20200718100940416.png

image20200718101153634.png

image20200718101250761.png

image20200718101431753.png

9.缺失值

  • 缺失数据( missing data)在大 部分数据分析应用中都很常见。 pandas的设计目标之一就是让 缺失数据的处理任务尽量轻松。 例如, pandas对象上的所有描 述统计都排除了缺失数据
  • pandas内置的none值也会当做 缺失值处理
  • 利用dropna() 过滤掉缺失值
  • dropna返回的是非空数据 和索引值的Series
  • DataFrame中dropna的处理 要更复杂一些,默认丢弃包含NA的行
  • 传入how = ‘all’ ,将只丢弃全为 NA的行
  • DataFrame中dropna只删除 全部为NA的某列的话,只需 要再传入一个:axis=1 即可
  • 你可能不想滤除缺失数据(有 可能会丢弃跟它有关的其他 数据),而是希望通过其他方式 填补那些“空洞”。对于大 多数情况而言,fi11na方法是最 主要的函数。通过一个常数 调用f1lna就会将缺失值替换 为那个常数值
  • 若是通过一个字典调用fillna, 可以实现对不同列填充不同的值
  • Fillna默认会返回新对象,但 也可以实现对原对象的修改

image20200718103123549.png

image20200718103142821.png

image20200718103156085.png

image20200718103210682.png