学习周记03# 基于pandas和numpy:数据清洗的常用操作

这篇博客介绍了如何使用Pandas的cut函数进行数据分箱,包括不同参数的使用方式,如bins、right、labels等。还提到了数据清洗中的索引排序、矩阵拓展、数值类型列筛选等操作。此外,讨论了离散化编码,特别是one-hot编码的应用。最后,讲解了样本抽取方法和DataFrame的sample函数。

分箱:数据离散化

pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False)

     参数说明:

     x   :进行划分的一维数组

     bins :

1)正整数x,即将x划分为多少个等间距的区间

         In[1]:pd.cut(np.array([0.2,1.4,2.5,6.2,9.7,2.1]),3,retbins=True)

        Out[1]: ([(0.19, 3.367], (0.19, 3.367], (0.19, 3.367], (3.367,6.533], (6.533,9.7], (0.19, 3.367]] Categories (3, interval[float64]): [(0.19,3.367] < (3.367, 6.533] < (6.533, 9.7]],array([ 0.1905    , 3.36666667,  6.53333333,  9.7 ]))

2) 序列—将x划分在指定的序列中,若不在该序列中,则是NaN

           In[2]:pd.cut(np.array([0.2,1.4,2.5,6.2,9.7,2.1]),[1,2,3],retbins=True)

           Out[2]: ([NaN, (1, 2], (2, 3], NaN, NaN, (2, 3]] Categories(2, interval[int64]): [(1, 2] < (2, 3]], array([1, 2, 3]))

     right :是否包含右端点

     labels :是否用标记来代替返回的bins

          In[3]:pd.cut([1,2,3,4],4,labels=['one','two','three','four'])

          Out[3]: [one, two, three, four]Categories (4, object): [one

     precision:精度

     include_lowest:是否包含左端点

 

     返回值:

     如果retbins = False 则返回x中每个值对应的bin的列表,否者则返回x中每个值对应的bin的列表和对应的bins

 

np.argsort   索引排序

np.tile  矩阵拓展

 

df._get_numeric_data()只保留一个含有数值类型的列的dataframe

df.columns获得列名称,是一个index

df.columns.values是个array

array.tolist

 

关于删除操作:

pop(index)

按指定的 索引号删除列表中对应的 一个元素,并返回该元素。参数为空时删除列表的最后一个元素;

remove(value)

删除列表中指定的 一个值,没有返回值。若在列表中没有找到对应的值,则抛出异常,其参数不能为空;

del()

删除列表中一个连续N个元素,类似pop(),但具有切片功能,可以删除多个元素,也可以删除所有元素。

dropna()

不传入参数,默认删除含有空数据的全部行

若dropna(axis=1),删除含有空数据的全部列;若传入dropna(subset=["age", "sex"]),删除在age和sex中含有空数据的全部行

 

 

离散化编码:

for feature in feature_ls:
    df_refined = pd.concat([df_refined, pd.get_dummies(df[feature], prefix = feature)], axis=1) 

生成新列。

pd.get_dummies(df['size'],prefix = 'sss') 是对具体的某个列的不同数据 进行one-hot编码, prefix指定生成的列表头名称'sss_1\sss_2\sss_3'有几类就有几个'sss'列

 

更新、表合并等操作,一般用到的方法有concat、join、merge。详见:https://blog.youkuaiyun.com/stevenkwong/article/details/52528616

 

样本抽取:

pd.DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)

n是要抽取的行数。(例如n=20000时,抽取其中的2W行)

frac是抽取的比列。(有一些时候,我们并对具体抽取的行数不关系,我们想抽取其中的百分比,这个时候就可以选择使用frac,例如frac=0.8,就是抽取其中80%)

replace:是否为有放回抽样,取replace=True时为有放回抽样。

weights这个是每个样本的权重,具体可以看官方文档说明。

random_state这个在之前的文章已经介绍过了。

axis是选择抽取数据的行还是列。axis=0的时是抽取行,axis=1时是抽取列(也就是说axis=1时,在列中随机抽取n列,在axis=0时,在行中随机抽取n行)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值