如何清理给定 Pandas DataFrame 中的字符串数据?
Pandas 是一个用于数据分析和处理的 Python 库。它提供了许多用于清理和格式化数据的函数。
在本文中,我们将学习如何清理给定 Pandas DataFrame 中的字符串数据。我们将介绍以下主题:
删除前导和尾随空格
替换特殊字符
转换为小写
删除重复值
将字符串拆分为列
合并列
验证数据
删除前导和尾随空格
strip() 方法可用于从字符串中删除前导和尾随空格。
例如,以下代码将从 Name 列中删除前导和尾随空格:
代码
df['Name'] = df['Name'].str.strip()
替换特殊字符
replace() 方法可用于替换字符串中的特殊字符。
例如,以下代码将用空字符串替换 Name 列中的逗号:
代码
df['Name'] = df['Name'].str.replace(',', '')
转换为小写
lower() 方法可用于将字符串转换为小写。
例如,以下代码将 Name 列转换为小写:
代码
df['Name'] = df['Name'].str.lower()
删除重复值
drop_duplicates() 方法可以可用于从 DataFrame 中删除重复值。
例如,以下代码将从 Name 列中删除重复值:
代码
df = df.drop_duplicates('Name')
将字符串拆分为列
split() 方法可用于将字符串拆分为列。
例如,以下代码将 Name 列拆分为两列,即 First Name 和 Last Name:
代码
df[['First Name', 'Last Name']] = df['Name'].str.split(' ', expand=True)
合并列
merge() 方法可用于将两列合并为一列。
例如,以下代码将 First Name 和 Last Name 列合并为单个 Name 列:
代码
df['Name'] = df['First Name'] + ' ' + df['Last Name']
验证数据
isna() 方法可用于检查值是否缺失。
例如,以下代码将检查 Age 列中是否有任何值缺失:
代码
df['Age'].isna().any()
fillna()方法可用于使用默认值填充缺失值。
例如,以下代码将使用值 0 填充 Age 列中的缺失值:
代码
df['Age'].fillna(0, inplace=True)
现在让我们考虑一个代码,我们将在其中使用上面提到的所有方法。
考虑下面显示的代码。
示例
import pandas as pd # 步骤 1:导入必要的模块 # 步骤 2:使用字符串数据加载 DataFrame data = {'Name': [' John Doe ', 'Jane Smith', ' Mary Johnson '], 'Email': ['john@example.com', 'jane@example.com', 'mary@example.com'], 'Phone': ['123-456-7890', '555-123-4567', ''], 'Address': ['New York', 'Los Angeles', None]} df = pd.DataFrame(data) # 步骤 3:识别和处理缺失值 df['Address'] = df['Address'].fillna('Unknown') # 步骤 4:应用字符串清理操作 df['Name'] = df['Name'].str.strip() df['Name'] = df['Name'].str.lower() df['Phone'] = df['Phone'].str.replace('-', '') df['Email'] = df['Email'].str.split('@').str[1] # 步骤 5:验证清理后的数据 print(df)
说明
我们首先将 pandas 模块导入为 pd,它提供了强大的数据操作功能。
在示例中,我们创建了一个 DataFrame df,其中包含字符串数据。每列代表不同的属性,例如姓名、电子邮件、电话和地址。
我们使用 fillna() 方法将"地址"列中的 None 值替换为字符串"未知",从而处理缺失值。
然后使用各种字符串方法将字符串清理操作应用于特定列:
str.strip() 从"姓名"列中删除前导和尾随空格。
str.lower() 将"姓名"列值转换为小写。
str.replace('-', '') 从"电话"列中删除连字符。
str.split('@').str[1] 在"@"符号处拆分"电子邮件"列值并检索第二部分(域名称)。
输出
Name Email Phone Address 0 john doe example.com 1234567890 New York 1 jane smith example.com 5551234567 Los Angeles 2 mary johnson example.com Unknown
结论
总之,清理 Pandas DataFrame 中的字符串数据是数据预处理和分析中必不可少的步骤。本文提供了全面的指南,逐步介绍了清理字符串数据的过程,并附有代码示例、说明和示例输出。
我们首先了解了清理字符串数据的重要性以及所涉及的常见任务,例如删除空格、处理缺失值和转换数据格式。然后,我们演示了如何将这些清理操作应用于 Pandas DataFrame。