检测和过滤异常值
异常值(outlier)的过滤或变换运算在很大程度上其实就是数组运算。
排列和随机采样
利用numpy.random.permutation函数实现对Series或DataFrame的列的随机重排序。 通过需要排列的轴的长度调用permutation,可产生一个表示新顺序的整数列表: 21.png 使用take函数按照列表进行排序: 22.png 从permutation返回的数组中切下前k个元素,其中k为期望的子集大小: 23.png 通过np.random.randint得到一组随机整数,使用替换的方式产生样品: 24.png源码:
# coding: utf-8
# ### 检测和过滤异常值
# In[1]:
import numpy as np
from pandas import Series,DataFrame
import pandas as pd
# In[2]:
# 读取数据
exl_file = 'D:\\Python\\notebook\\B403 USB.xlsx'
data = pd.read_excel(exl_file)
data.describe()
# In[3]:
# 找出某列中绝对值大小超过0.3的值
col = data['P12']
col[np.abs(col) > 0.1]
# In[4]:
# 使用any方法,选出全部“超过0.1或-0.1的值”的行
data[(np.abs(data) > 0.1).any(1)]
# In[5]:
'''
将数据的范围限制在-0.1到0.1以内,
其中np.sign()返回一个由1和-1组成的数组,表示原始值的符号
'''
data[np.abs(data) > 0.1] = np.sign(data) * 0.1
data.describe()
# ### 排列和随机采样
# In[6]:
df = DataFrame(np.arange(5 * 4).reshape(5,4))
print(df)
# In[7]:
# 调用permutation产生一个表示新顺序的整数列表
sampler = np.random.permutation(5)
print(sampler)
# In[8]:
# 使用take函数按照列表进行排序
df.take(sampler)
# In[9]:
df.take(np.random.permutation(len(df))[:3])
# In[10]:
bag = np.array([5,7,-1,6,4])
sampler = np.random.randint(0,len(bag),size=10)
print(sampler)
# In[11]:
draws = bag.take(sampler)
print(draws)
网友评论