8段Python数据清洗代码:从删除列到时间戳转换
本文整理了8段高效Python数据清洗代码,涵盖删除多列、内存优化、分类变量数值化、缺失值检查、字符串清理及时间戳转换等核心场景。所有代码均封装为独立函数,无需修改参数即可直接复用,旨在帮助数据科学家和开发者快速提升数据处理效率。
Python数据清洗代码概览
近期,大数据工程师Kin Lim Lee在Medium平台发布了一篇技术文章,详细分享了8段用于数据清洗的Python代码片段。
数据清洗是数据分析流程及模型训练前的关键环节,同时也是数据科学家与程序员投入精力最多的工作领域。
这套代码库具备两大优势:首先,所有逻辑均封装为函数,用户无需调整参数即可直接调用;其次,代码简洁易懂,即便包含详细注释,最长段落也不超过11行。Lee在介绍每段代码时均明确了其适用场景,并在代码内部添加了注释说明。建议读者将此文章收藏,作为日常开发的数据处理工具箱。
覆盖8大典型场景的数据清洗代码示例
上述数据清洗代码共涉及8个具体应用场景,具体包括:
删除多列、更改数据类型、将分类变量转换为数值变量、检查缺失数据、删除列中的特定字符串、删除列中的首尾空格、有条件地连接两列字符串、以及将字符串格式的时间戳转换为日期时间格式。
删除多列与内存优化
删除多列
在数据分析过程中,并非所有数据列都具有分析价值。利用df.drop方法可以便捷地移除指定的列。
def drop_multiple_col(col_names_list, df):
AIM -> Drop multiple columns based on their column names
INPUT -> List of column names, df
OUTPUT -> updated df with dropped columns
------
df.drop(col_names_list, axis=1, inplace=True)
return df
转换数据类型
随着数据集规模的扩大,通过转换数据类型来降低内存占用成为必要操作。
def change_dtypes(col_int, col_float, df):
AIM -> Changing dtypes to save memory
INPUT -> List of column names (int, float), df
OUTPUT -> updated df with smaller memory
------
df[col_int] = df[col_int].astype( int32 )
df[col_float] = df[col_float].astype( float32 )
分类变量数值化与缺失值检查
将分类变量转换为数值变量
部分机器学习算法要求输入变量必须为数值格式,因此需要将分类变量转换为数值。此外,保留原始分类变量也有助于后续的数据可视化分析。
def convert_cat2num(df):
# Convert categorical variable to numerical variable
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):
# check for any missing data in the df (display in descending order)
return df.isnull().sum().sort_values(ascending=False)
字符串清理与空格处理
删除列中的字符串
当字符串列中出现新字符或异常符号时,可以使用df['col_1'].replace方法轻松处理这些干扰项。
def remove_col_str(df):
# remove a portion of string in a dataframe column - col_1
df[ col_1 ].replace(, , regex=True, inplace=True)
# remove all the characters after &# (including &#) for column - col_1
df[ col_1 ].replace( &#.* , , regex=True, inplace=True)
删除列中的空格
数据质量参差不齐时,字符串开头常包含多余空格。以下代码在清理列中字符串前导空格时非常有效。
def remove_col_white_space(df):
# remove white space at the beginning of string
df[col] = df[col].str.lstrip()
条件字符串连接与时间戳转换
用字符串连接两列(带条件)
当需要根据条件将两列字符串连接时,此代码十分实用。例如,可以设定第一列末尾的特定字母作为连接标志,并与第二列拼接。连接完成后,可根据需要移除末尾的特定字母。
def concat_col_str_condition(df):
# concat 2 columns with strings if the last 3 letters of the first column are pil
mask = df[ col_1 ].str.endswith( pil , na=False)
col_new = df[mask][ col_1 ] + df[mask][ col_2 ]
col_new.replace( pil , , regex=True, inplace=True) # replace the pil with emtpy space
转换时间戳(从字符串到日期时间格式)
处理时间序列数据时,常遇到以字符串格式存储的时间戳列。为了进行有意义的分析,需将其转换为日期时间格式(或根据需求指定的其他格式)。
def convert_str_datetime(df):
AIM -> Convert datetime(String) to datetime(format we want)
INPUT -> df
OUTPUT -> updated df with new datetime format
------
df.insert(loc=2, column= timestamp , value=pd.to_datetime(df.transdate, format= %Y-%m-%d
以上即为本文的全部内容,希望对读者的学习有所帮助,也欢迎大家继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













