对于类型特征重复的判断
sim_dis=pf.Dataframe([],index=['counts','amounts'],columns=['counts','amounts']
for i in ['counts','amounts']:
for j in ['counts','amounts']:
sim_dis.loc[i,j]=data[i].equals(data[j])
print( sim_dis)
3、检测和处理缺失值
可以用上面学习的describe
也可以利用isnull或notnull确定是否存在缺失值
data.isnull().sum()
4、处理缺失值
(1)删除法
dropna函数
2、替换法
是用一个特定的值替换缺失值
通常用均值、中位数、众数确认趋势
3、插值法
适合缺失值占比小时应用
(1)线性插值(2)多项式插值(3)样条插值
x=np.array([1,2,3,6,7])
y=np.array([3,5,6,9,13])
from scipy.interpolate import interpld
model=interpld(x,y,kind='linear')
#使用线性插值
>>>model([4,5])
>array([7,8])
from scipy.interpolate import lagrange
f_lag=lagrange(x,y)
f_lag([4,5])
#拉格朗日插值
from scipy.interpolate import BSpline
y_bs=BSpline(x,y,k=1)
>>>y_bs([4,5])
>array([5.333333,5.666667])
>#样条插值
4、异常值
只适用于符合正态分布的数据,其他分布则无效
u=data['counts'].mean()
o=data['counts'].std()
data['counts'].apply(lambda x:x>u+3*o orx<u-3*o).sum()
#显示false代表都不是异常值
(2)箱象图绘制
import matplotlib.pyplot as plt
plt.boxplot(data['counts'])
plt.show()
#提取异常值
p['fliers'][0].get_ydata()
#0表示第一个箱子图
标准化数据
发
def minmaxscale(data):
return(data-data.min())/(data.max()-data.min())
2、标准差标准化
的
def standscale(data):
return(data-data.mean())/data.std()
3、小数定标标准化
的
def decimalscale(data):
return data/10**(np.ceil(np.log10(data.abs().max())))
转换数据
1、哑变量处理类型数据
的
离散化连续型数据
1、等宽法
pd.cut(data['amounts'],bin=5).value_counts()
2、等频法
def samefreq(data,k):
w=data.quantile(np.range(0,1+1/k,1/k))
return pd.cut(data,w)
3、聚类分析法