【数据分析day04】pandas数据处理二:异常值检测和过滤&抽样

pandas数据处理二:异常值检测和过滤&抽样

  • 1. 异常值检测和过滤
    • 思路:
      • 1. 确定异常的检测标准.
      • 2. 写成条件的形式.使用条件去过滤原始数据
  • 2. 抽样
      • 无放回:permutation()
      • 有放回:

1. 异常值检测和过滤

使用describe()函数查看每一列的描述性统计量
【数据分析day04】pandas数据处理二:异常值检测和过滤&抽样_第1张图片

ddd.describe()

【数据分析day04】pandas数据处理二:异常值检测和过滤&抽样_第2张图片
上面的统计不包含字符串那两列

思路:

1. 确定异常的检测标准.

2. 写成条件的形式.使用条件去过滤原始数据

练习:
新建一个形状为10000*3的标准正态分布的DataFrame(np.random.randn),去除掉所有满足以下情况的行:其中任一元素绝对值大于3倍标准差

# randn:从标准正态分布中返回一个或多个样本值,这里是10000行
df = DataFrame(data=np.random.randn(10000, 3))
df.head()

【数据分析day04】pandas数据处理二:异常值检测和过滤&抽样_第3张图片
使用std()函数可以求得DataFrame对象每一列的标准差

df.std()

【数据分析day04】pandas数据处理二:异常值检测和过滤&抽样_第4张图片
写成条件的形式,使用条件去过滤原始数据

# 条件:其中任一元素绝对值大于3倍标准差
cond = (df.abs() > 3 * df.std()).any(axis=1)
df.loc[~cond]

【数据分析day04】pandas数据处理二:异常值检测和过滤&抽样_第5张图片
过滤掉74个

2. 抽样

  • 分为两种:“有放回” 和 “无放回”
  • 使用.take()函数排序:take就是按照指定的顺序把数据取出
  • 可以借助np.random.permutation()函数随机排序
    如:np.random.permutation([0, 1,2,3])
  • 一般数据量小使用有放回,数据量大使用无放回

无放回:permutation()

np.random.permutation 和take结合可以达到无放回抽样的效果. 数据量大的时候可以用无放回.

ddd.take(np.random.permutation([0,1,2,3]))

【数据分析day04】pandas数据处理二:异常值检测和过滤&抽样_第6张图片

有放回:

ddd.take(np.random.randint(0, 4, size=4))

【数据分析day04】pandas数据处理二:异常值检测和过滤&抽样_第7张图片

你可能感兴趣的:(数据分析)