本文章参考资kin lim lee在medium上的文章
8个数据清洗代码
分别包括:
删除多行
在进行数据分析的时候,并非所有的列都是有用的,使用pandas中drop方法,可以方便地删除指定的列
def drop_multiple_col(col_names_list, df):
'''
axis=1表示采用index来删除列,axis=1表示按照列名来删除
inplace返回None,默认False
'''
df.drop(col_names_list, axis=1, inplace=True)
return df
'''
df.drop(columns = [col_names_list], inplace = True) #需要查看pandas的版本,比较前的版本不识别columns关键字
'''
更改数据类型
当数据集变大的时候,需要转换数据类型来节省内存
def change_dtype(col_int, col_float, df):
df[col_int] = df[col_int].astype('int32')
df[col_float] = df[col_float].astype('float32')
将分类变量转换为数字变量
在进行机器学习的时候,模型要求的变量通常是要数据格式。这个时候将分类变量转换为数值变量。同时,也可以保留分类变量,以便进行数据可视化
def convert_cat2num(df):
num_encode = {'col_1': {'YES':1, 'NO':0},
'col_2' :{'WON':1, 'LOSE':0, 'DRAW':0}}
df.replace(num_encode, inplace=True)
检查缺失数据
检查每列缺失数据的数量
def check_missing_data(df):
return df.isnull().sum().sort_values(ascending=False)
删除列中的字符串
在字符串中可能会出现一些奇怪的字符或者新的字符,可以使用 df[‘col_1’].repalce 很简单就处理掉了
def remove_col_str(df):
#
df['col_1'].repalce('\n','',regex=True,inplace=True)
#删除该列所有
df['col_1'].repalce(' &#.*', '', regex=True,inplace=True)
删除列中的空格
数据混乱什么都可能发生,删除列中字符串开头的空格是,可以
def remove_col_white_space(df):
df[col] = df[col].str.lstrip()
用字符串连接两列(带条件)
比如,在第一列结尾处设定某些字母,然后用它们与第二列连接在一起。根据需要,结尾处的字母也可以在连接完成后删除。
def concat_col_str_condition(df):
#如果第一列字符串最后三个字符是‘pil’,连接两列
mask = df['col_1'].str.endswith('pil',na=False)
col_new = df[mask]['col_1'] + df[mask]['col_2']
#将pil替换为空
col_new.replace('pil', ' ', regex=True, inplace=True)
转换时间戳(从字符串到日期到格式)
将字符串格式的日期,转为日期时间格式,以便进行有意义的数据分析
def convert_str_datetime(df):
df.insert(loc=2, column = 'timestamp', value=pd.to_datetime(df.transdate, format='%Y-%m-%d %H:%M:%S.%f'))