pandas数据清理和准备(二)

一、重命名索引值

DataFrameobj.rename(index=None, columns=None, **kwargs)

index=字典:索引与字典键相同的将被替换为值;函数名:对行索引执行函数

columns同index

inplace:True|False:是否替换原先的df

另一种方式:

df.index|columns = [ 列表]  #直接替换为一个列表,列表长度与索引长度一致

df.index|columns = df.index|columns.map(Function) #对索引值使用函数进行转换

二、离散数据分组

1、普通分组:cut

 

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

 

 Return indices of half-open bins to which each value of `x` belongs.

x:必须是一维数据或series等arraylike对象

bins:整数:将x按照取值范围整分为相等的取值区间

  序列:按照序列区间分隔x

right:True代表包含右边界,Fasle标示包含左边界

labels:被切分的值将不再以区间标示,而是替换为labels,labels的长度应该和取值区间个数一致

retbins :True返回区分的区间数组,Fasle不返回

priecison:区间取值的小数点个数

注意:如果x没有在bins的取值范围内,则返回Nan

cats.code:返回一个数组,代表x在bins出现的顺序

cats.categories:返回分组区间

pd.value_counts(cats):返回分组的统计结果

2、等分:qcut

cats = pd.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')

q:整数:根据x的长度,将x等分为q份

    :区间:代表等分的比例区间如【0,0.25,0.5,0.75,1】

三、检测和过滤极端值

DataFrameobj.describe():输出df对应的描述信息

df[(np.abs(df)>3).any(1)]:输出有数值大于3的df中的所有行

data[np.abs(data) > 3] = np.sign(data) * 3  :np.sign(data):针对每个元素如果大于0则结果为1,等于0结果为0,小于0结果为-1;将绝对值大于3的值转换为+3或-3

四、随机序列和抽样

1、sampler = np.random.permutation(x)

x:整数:代表随机生成一个np.arange(x)

  序列:代表将给序列的顺序随机打乱

2.DataFrameobj.take(sampler) 

按照sampler对DataFrameobj的行索引进行排序,sampler的长度必须和DataFrameobj的行索引index长度一致

3.DataFrameobj.sample(n=3)

随机取出DataFrameobj的三行

注意:n的值可以大于DataFrameobj的length,超过的将重复从DataFrameobj的行中取值

五、生成虚拟变量:又称虚设变量、名义变量或哑变量,是量化了的质变量,通常取值为0或1

 

pd.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False)

目的:将一个分类变量转变为一个虚拟矩阵,数值变量不转换。

 

data:可以是array,Series,DataFrame,

prefix:是否增加前缀

prefix_sep:与前缀之间的分隔符,默认为下划线

dummy_na:False:忽略Nan值,True,将Nan值单独作为一列标示。

注意:

df[columnname]:标示一个Series

df[[columnname]]:标示一个DataFrame

DataFrame可以用join函数进行拼接,而Series则不行

六。df拼接:join

 

df.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

将df 和other按列合并,

on:None代表是按照索引index进行匹配合并

  columnsname:按照列进行合并,other列表需要将columnsname设置为索引set_index(columnsname)

 how:left,right,outer,join:类似数据库操作

    lsuffix:代表如果df和other有重名的columnname,则增加后缀在df

   rsuffix:代表如果df和other有重名的columnname,则增加后缀在other

 七、操作字符串

1.是否包含

obj.str.contains('str1'):  返回一个bool类型,如果包含str1返回True,否则返回False

2.查找

obj.str.findall(pattern,flags=re.IGNORECASE)

pattern:正则表达式

flags:是否忽略大小写

obj.str.match(pattern,flags=re.IGNORECASE)

返回一个bool数值

3.切片

obj.str[:5]  #字符串前5个

obj.str.get(4)#获取第4个字符

obj.str[4] #获取第四个字符

 

 

 

 

 

 

 

 

 

 

 

posted @ 2017-12-16 20:02  tutu_python  阅读(478)  评论(0)    收藏  举报