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] #获取第四个字符
浙公网安备 33010602011771号