📜  如何预处理 Pandas DataFrame 中的字符串数据?(1)

📅  最后修改于: 2023-12-03 15:38:57.700000             🧑  作者: Mango

如何预处理 Pandas DataFrame 中的字符串数据?

Pandas 是一种强大的 Python 库,用于数据操作和分析,其中包含处理字符串数据的各种可靠方法。在操作和分析数据时,数据通常需要先进行预处理。在这篇文章中,我们将介绍如何在 Pandas 中处理和清洗字符串数据。

用 str 访问和处理 Pandas DataFrame 中的字符串数据

在 Pandas DataFrame 中,我们可以使用 .str 属性来访问和操作所有字符串数据。我们可以使用这个属性来调用 Pandas 内置的字符串处理函数,如 .lower().strip() 等。

示例:
import pandas as pd

data = {"Name": ["John", "Jane", "Mary", "Mark", "Will", "Jenna"],
        "City": ["New York", "Chicago", "San Francisco", "Chicago", "Boston", "Los Angeles"]}
df = pd.DataFrame(data)

#将 Name 列中的所有字符串转换为小写字母
df["Name"] = df["Name"].str.lower()

#将 City 列中的所有字符串去除左右两侧的空格
df["City"] = df["City"].str.strip()
代码说明:
  1. 首先,我们定义了一个包含姓名和城市信息的字典 data。
  2. 然后,我们使用这个字典创建了一个 Pandas DataFrame。
  3. 接下来,我们使用 df["Name"].str.lower() 方法将 Name 列中的所有字符串转换为小写字母,并将该列更新为其转换后的值。
  4. 然后,我们使用 df["City"].str.strip() 方法去除 City 列中所有字符串左右两侧的空格,并将该列更新为其处理后的值。
使用正则表达式处理 Pandas DataFrame 中的字符串数据

使用正则表达式也是一种处理 Pandas DataFrame 中字符串数据的强大方法。在 Pandas 中,我们可以使用 .str 属性配合正则表达式类似的语法来匹配和替换字符串数据。

示例:
import pandas as pd

data = {'Name': ['John', 'Jane', 'Mary-Ann', 'Mark', 'Will', 'Jen-Na', ],
        'Country': ['USA', 'USA', 'Canada', 'USA', 'USA', 'UK']}
df = pd.DataFrame(data)

#匹配所有包含连字符的字符串
df["Name_hyphen"] = df["Name"].str.extract(r'(\w+-\w+)')

#将 Country 列中所有包含 'USA' 的字符串替换为 'United States'
df["Country"] = df["Country"].str.replace('USA', 'United States')
代码说明:

1.首先,我们定义了一个包含姓名和国家信息的字典 data。 2.接着,使用这个字典来创建一个 Pandas DataFrame。 3.然后,我们使用 df["Name"].str.extract(r'(\w+-\w+)') 方法来匹配 Name 列中所有包含连字符的字符串,并将匹配结果存储到一个新的列 Name_hyphen 中。 4.接着,我们使用 df["Country"].str.replace('USA', 'United States') 方法将 Country 列中所有包含 'USA' 的字符串替换为 'United States'。

使用 apply() 自定义函数处理 Pandas DataFrame 中的字符串数据

除了内置的字符串处理方法和正则表达式外,我们还可以使用 apply() 函数和自定义函数来处理和清洗字符串数据。通过定义自己的函数,我们可以根据不同的情况和需求来处理字符串

示例:
import pandas as pd

data = {'Name': ['John','Jane','Mary','Mark','Will','Jenna'],
         'Country': ['USA', 'USA', 'Canada', 'USA', 'USA', 'UK']}
df = pd.DataFrame(data)

#create a lambda function to capitalize the first letter of each word in a string
def capitalize_string(x):
    return " ".join([i.capitalize() for i in x.split()])

#use apply() to apply the lambda function to the 'Name' column
df["Name_Capitalized"] = df["Name"].apply(capitalize_string)
代码说明:
  1. 首先,我们定义了一个包含姓名和国家信息的字典 data。
  2. 然后,使用这个字典创建了一个 Pandas DataFrame。
  3. 接着,我们定义了一个 lambda 函数,用于将字符串中的每个单词的首字母都大写。
  4. 最后,我们使用 df["Name"].apply(capitalize_string) 方法将 lambda 函数应用于 Name 列中的所有字符串,并将该列更新为其处理后的值。
总结

在这篇文章中,我们介绍了如何在 Pandas DataFrame 中预处理字符串数据。我们学习了如何通过使用 Pandas 内置的字符串处理函数、正则表达式和 apply() 函数等功能来处理,清洗和转换字符串数据。这让我们能够更轻松快捷地分析和处理数据,提高了工作效率。