1. 处理缺失数值
string_data = pd.Series(['aardvark', 'artichoke', np.nan, 'avocado'])
string_data
string_data[0] = None
string_data.isnull()
1.1 过滤缺失值
对于Series来说,直接通过series.dropna()对于DataFrame,frame.dropna()会删除含有NaN的行,axis=1即可改为丢弃列,默认how = 'any'通过thresh = 2仅删除超过包含两个非NaN的行或列,df.dropna(thresh = 2)inplace = True 就地删除,返回空
1.2 填充缺失数据
df.fillna(0) 通过0替换缺失值df.fillna( {1:0.5, 2:0} ),字典调用,对不同列填充不同数据df.fillna( method='ffill', limit = 2 ) 自动复制上一个数填充,如果第一个为空则后一个填充也为空,限制limit为2个
2. 数据转换
2.1 移除重复数据
df.duplicated() 重复的行会Truedf.drop_duplicates( ['k1', 'k2'] ) 根据某几列或一列判定是否重复并移除重复的,默认为匹配所有列,保留第一个重复的
2.2 利用函数或映射进行数据转换
data['animal'] = lowercased.map(meat_to_animal) 其中lowercased是DataFrame和 meat_to_animal字典的索引 对应数值形成成一列
2.3 替换某些数值为默认值
data.replace(-999, np.nan)单一替换,替换数值为-999的为NaNdata.replace([-999, -1000], np.nan) 多对一data.replace({-999: np.nan, -1000: 0})多对多
2.4 对轴索引修改
transform = lambda x: x[:4].upper(), data.index = data.index.map(transform)对轴索引映射修改data.rename(index=str.title, columns=str.upper)直接通过rename修改data.rename(index={'OHIO': 'INDIANA'}, columns={'three': 'peekaboo'} , inplace=True)就地修改
2.5 离散数据的统计划分
数据统计划分,根据区间划分,默认左开右闭(通过right=False修改为左闭右开),bins = [18, 25, 35, 60, 100] ,cats = pd.cut(ages, bins)将age划分成多个年龄段对于cut划分的结果cats属性有:cats.codes将每个具体的值转化为第几个类别[0 0 0 1 0 0 2 1 3 2 2 1], cats.categories属性显示划分的种类区间, pd.value_counts(cats)属性显示分类统计的结果对分属类别命名label = group_names:group_names = ['Youth', 'YoungAdult', 'MiddleAged', 'Senior'], pd.cut(ages, bins, labels=group_names)等分数据,设置精确度precision=2:pd.cut(data, 4, precision=2)
2.6 对超出范围的数据修改
data = pd.DataFrame(np.random.randn(1000, 4))查看数据基本信息: data.describe()查找某列中绝对值⼤⼩超过3的值:col = data[2], col[np.abs(col) > 3]设置any(1)则各行中某列存在绝对值大于3即可 data[(np.abs(data) > 3).any(1)]np.sign(data)将数据正的转为1,负的转为-1
转载请注明原文地址:https://blackberry.8miu.com/read-2198.html