当前位置: 首页 > 后端技术 > Python

5个示例学习Pandas中的字符串过滤

时间:2023-03-26 13:46:48 Python

与数字数据相比,处理文本数据需要更多的清理步骤。为了提取有用和信息丰富的文本数据,通常需要执行几个预处理和过滤步骤。Pandas库有许多函数和方法可以轻松简单地处理文本数据。在本文中,我将学习5种可用于过滤文本数据(即字符串)的不同方法:是否包含字符序列查找字符串的长度确定它是否以特定字符序列开始或结束确定是否一个字符是数字或字母数字查找特定字符序列的出现首先我们将库和数据导入pandasaspddf=pd.read_csv("example.csv")df我们的示例DataFrame包含6行和4列。我们将使用不同的方法来处理DataFrame中的行。第一个过滤操作检查字符串是否包含特定单词或字符序列,使用contains方法查找描述字段包含“二手车”的行。但是要获取pandas中的字符串,需要通过pandas的str访问器,代码如下:df[df["description"].str.contains("usedcar")]但是为了找到所有usedcars在这个DataFrame中,我们需要分别查找“used”和“car”这两个词,因为这两个词可能一起出现,但没有连接起来:df[df["description"].str.contains("used")&df["description"].str.contains("car")]可以看到最后一行包含了“car”和“used”,但是没有在一起。下一个方法是根据字符串的长度进行过滤。假设我们只对超过15个字符的描述感兴趣。可以使用内置的len函数来实现,如下所示:df[df["description"].apply(lambdax:len(x)>15)]在这里,你需要编写一个lambda表达式,通过expression在公式中,使用len函数获取长度,并使用apply函数将其应用于每一行。更常见和有效的方法是通过str访问器:df[df["description"].str.len()>15]我们可以使用startswith和endswith基于字符串的第一个或最后一个字母来过滤。df[df["lot"].str.startswith("A")]方法还检查前n个字符。例如,我们可以选择以“A-0”开头的行:df[df["lot"].str.startswith("A-0")]Python内置的字符串函数都可以应用于PandasDataFrames。例如,在价格栏中,有一些非数字字符,如$和k。我们可以使用isnumeric函数过滤掉。df[df["price"].apply(lambdax:x.isnumeric()==True)]同样,如果需要保留字母数字(即只保留字母和数字),可以使用isalphanum函数,该函数同上。count方法计算单个字符或字符序列的出现次数。例如,查找单词或字符出现的次数。这里统计description栏中“used”的出现次数:df["description"].str.count("used")#结果011021314150Name:description,dtype:int64如果你想用它做条件过滤,只需要和一个值比较,像这样:df[df["description"].str.count("used")<1]很简单。5个不同的PandasDataFrame用于字符串值。虽然通常我们更关注数字数据,但文本数据同样重要,包含很多有价值的信息。能够清理和预处理文本数据对于数据分析和建模至关重要。https://avoid.overfit.cn/post/636266a8e77644f6b18cb0077fcccfe2