当前位置:   article > 正文

pyhton基础学习8【drop_duplicates去重、corr()、找缺失值、dropna()、fillna()、插值法(拉格朗日、样条)异常检测(拉依达原则和箱线图)】_drop duplicates

drop duplicates

检测与处理重复值

记录重复,即一个或者多个特征某几个记录的值完全相同。

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()#蓝色的点就是原始的点,45对应78

拉格朗日插值:

from scipy.interpolate import lagrange#拉格朗日插值f_lag = lagrange(x,y)f_lag([4,5])#缺了45,用拉格朗日得到的数
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()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/759820
推荐阅读
相关标签
  

闽ICP备14008679号