8段Python数据清洗代码:从删除列到时间戳转换

Hazel
Hazel
发布时间:2026-10-13| 6人浏览过
原创

本文整理了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

以上即为本文的全部内容,希望对读者的学习有所帮助,也欢迎大家继续支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。