pyhton基础学习8【drop_duplicates去重、corr()、找缺失值、dropna()、fillna()、插值法(拉格朗日、样条)异常检测(拉依达原则和箱线图)】
检测与处理重复值
记录重复,即一个或者多个特征某几个记录的值完全相同。
list列表去重和集合set去重:(list自定义去重,set的元素是唯一的特性去重)
上面两种方法:方法一代码冗长,方法二代码简单,但会导致数据的排序发生改变。

pandas提供的drop_duplicates方法去重:
该方法只对dataframe或者series类型有效。这种方法不会改变数据原始排列,并且兼具代码简介和运行稳定的特点。不仅支持单一特性的数据去重,还能依据dataframe的其中一个或者几个特征进行去重操作。
实操:
data['dishes_name']#查看

data['dishes_name'].drop_duplicates()#去重


特征重复
data[['counts','amounts']].corr()#data.corr()表示了data中的两个变量之间的相关性,取值范围为[-1,1],取值接近-1,表示反相关,类似反比例函数,取值接近1,表正相关。

sim_dis=pd.DataFrame([],index=['counts','amounts','dishes_name'],#sim_dis:相似度columns = ['counts','amounts','dishes_name'])for i in ['counts','amounts','dishes_name']:for j in ['counts','amounts','dishes_name']:#两两比较计算相似度sim_dis.loc[i,j] = data[i].equals(data[j])print(sim_dis)

利用isnull或者notnull找到缺失值
数据中的某个或某些特征的值是不完整的,这些值称为缺失值;
isnull和notnull之间结果正好相反,因此使用任意一个都可以判断数据中缺失值的位置。



删除法:
分为删除观测记录和删除特征两种,它属于利用减少样本量来换取信息完整度的一种方法,是一种最简单的缺失值处理方法。
dropna()函数:删除缺失值,可以删除观测记录,也可以删除特征。
实操:

a.dropna()



替换法:
指用一个特定的值替换缺失值;可分为数值型和类别型。
fillna()函数:
a['cpu'].fillna('i7')#将cpu上的缺失值填补为i7

dis1={'id':list(range(1,10)),'cpu':[7,7,np.nan,5,4,6,np.nan,np.nan,7]}b = pd.DataFrame(dis1)b['cpu'].fillna(b['cpu'].mean())

插值法
删除法简单易行,但是会引起数据结构变动,样本减少;替换法使用难度较低,但是会影响数据的标准差,导致信息量变动。在面对数据缺失问题时,除了这两种方法之外,还有一种插值法。
Scipy库中的interpolate模块
实操:
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')#线性

报错了解决一下:
看到这个报错我真的很想吐槽哈哈,那个单词interpld不是interpld,而是interp1d。
import matplotlib.pyplot as pltplt.scatter(x,y)#开始的x,yplt.plot(x,model(x),'r-')#插值后的点plt.show()#蓝色的点就是原始的点,4,5对应7,8

拉格朗日插值:
from scipy.interpolate import lagrange#拉格朗日插值f_lag = lagrange(x,y)f_lag([4,5])#缺了4,5,用拉格朗日得到的数
import matplotlib.pyplot as pltplt.scatter(x,y)#开始的x,yplt.scatter([4,5],model([4,5]))#散点plt.scatter([4,5],f_lag([4,5]))#散点#plt.plot(x,model(x),'r-')#插值后的点plt.plot(x,f_lag(x),'g-')#插值后的点plt.show()

样条插值
from scipy.interpolate import BSpliney_bs = BSpline(x,y,k=1)y_bs([4,5])

异常值检测

3sheta原则又称为拉依达法则。

实操:
u = data['counts'].mean()#均值o = data['counts'].std()#标准差data['counts'].apply(lambda x:x>u+3*o or x<u-3*o)


箱线图分析:
提供了识别异常值的一个标准,即异常值通常被定义为小于QL-1.5IOQ
import matplotlib.pyplot as pltplt.boxplot(data['counts'])plt.show()



魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)