离散化和分箱
ages=[20,22,25,27,21,23,37,31,61,45,41,32]
bins=[18,25,35,60,100]
cats=pd.cut(ages,bins)
print(cats)
print(cats.codes) # 分箱的箱子数(0,1,2...)
print(cats.categories)
cc=pd.value_counts(cats) # 每个箱子的个数
print(cc)
group_name=['Youth','YoungAdult','MiddleAged','Senior']
pp=pd.cut(ages,bins,labels=group_name)
print(pp)
data=np.random.rand(20)
dd=pd.cut(data,4,precision=2) # 只是分成四份,数量不一定相等
print(dd)
qcut:分箱密切相关的函数:分位数,整数则分成同数量的几等分区间,分位数(0-1之间)分位点数
data=np.random.randn(1000)
ss=pd.qcut(data,4)
print(ss)
sc=pd.value_counts(ss)
print(sc)
检测和过滤异常值
data=pd.DataFrame(np.random.randn(1000,4))
print(data.describe())
col=data[2]
g=col[np.abs(col)>3]
print(g)
#如果要选择所有值大于3 or 小于-3的行,使用any方法
print(data[(np.abs(data)>3).any(1)])
置换和随机抽样
使用np.random.permutation对DataFrame和Series进行置换
df=pd.DataFrame(np.arange(5*4).reshape((5,4)))
sampler=np.random.permutation(5)
print(sampler)
print(df)
qq=df.take(sampler)
print(qq)
choices=pd.Series([-7,5,7,4,3,2])
draws=choices.sample(n=20,replace=True)
print(draws)