分箱:数据离散化
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行)