首页 > 其他分享 >Pandas教程之三十二:Pandas 处理文本数据

Pandas教程之三十二:Pandas 处理文本数据

时间:2024-12-18 18:32:37浏览次数:11  
标签:三十二 教程 pd df pandas str 字符串 data Pandas

Python | Pandas 处理文本数据

Series 和 Indexes 配备了一组字符串处理方法,可以轻松对数组的每个元素进行操作。也许最重要的是,这些方法会自动排除缺失/NA 值。这些方法可通过 str 属性访问,并且通常具有与等效(标量)内置字符串方法匹配的名称。

将数据转换为小写和大写

为了将数据转换为小写,我们使用 str.lower(), 该函数将所有大写字符转换为小写。如果不存在大写字符,则返回原始字符串。为了将数据转换为大写,我们使用 str.upper(), 该函数将所有小写字符转换为大写。如果不存在小写字符,则返回原始字符串。

代码 #1:

Python

# Import pandas package 
import pandas as pd 
   
# Define a dictionary containing employee data 
data = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 
        'Age':[27, 24, 22, 32], 
        'Address':['Delhi', 'Kanpur', 'Allahabad', 'Kannauj'], 
        'Qualification':['Msc', 'MA', 'MCA', 'Phd']} 
   
# Convert the dictionary into DataFrame  
df = pd.DataFrame(data) 
   
# converting and overwriting values in column 
df["Name"]= df["Name"].str.lower()
 
print(df)

输出:
如数据框的输出图像所示,名称列中的所有值都已转换为小写。

在这个例子中,我们使用  文件。nba.csv

代码 #2:

Python

# importing pandas package 
import pandas as pd 
   
# making data frame from csv file 
data = pd.read_csv("nba.csv") 
   
# converting and overwriting values in column 
data["Team"]= data["Team"].str.upper() 
   
# display 
data

输出:
如数据框输出图像所示,Team 列中的所有值都已转换为大写。

拆分和替换数据

为了分割数据,我们使用 str.split(), 该函数在用指定的分隔符分隔给定的字符串后返回一个字符串列表,但它只能应用于单个字符串。Pandas str.split() 方法可以应用于整个系列。 每次调用此方法之前都必须加上.str 前缀,以将其与 Python 的默认函数区分开来,否则将引发错误。为了替换数据,我们使用 str.replace(), 该函数仅像 Python 方法一样工作,但它也适用于 Series。在调用 Pandas 系列  之前 ,必须加上.str 前缀,以将其与 Python 的默认替换方法区分开来。 .replace().replace()

代码 #1:

Python

# importing pandas module  
import pandas as pd 
     
# Define a dictionary containing employee data 
data = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 
        'Age':[27, 24, 22, 32], 
        'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Knnuaj'], 
        'Qualification':['Msc', 'MA', 'MCA', 'Phd']} 
 
# Convert the dictionary into DataFrame  
df = pd.DataFrame(data) 
    
# dropping null value columns to avoid errors 
df.dropna(inplace = True) 
    
# new data frame with split value columns 
df["Address"]= df["Address"].str.split("a", n = 1, expand = True) 
   
# df display 
print(df)

输出 :

如输出图像所示,地址列在第一次出现“a”时被分隔,而没有在后面出现时被分隔,因为 n 参数设置为 1(字符串中最多 1 个分隔符)。

代码 #2:

Python

# importing pandas module 
import pandas as pd
 
# reading csv file from url
data = pd.read_csv("nba.csv")
 
# overwriting column with replaced value of age
data["Age"]= data["Age"].replace(25.0, "Twenty five")
 
# creating a filter for age column 
# where age = "Twenty five"
filter = data["Age"]=="Twenty five"
 
# printing only filtered columns
data.where(filter).dropna()

输出:
如输出图所示,Age 列中所有 age=25.0 的值都已被“Twenty five”替换。

数据连接

为了连接一个系列或索引,我们使用 str.cat(), 此函数用于将字符串连接到传递的调用者字符串系列。可以传递来自不同系列的不同值,但两个系列的长度必须相同。必须添加 .str 前缀以将其与 Python 的默认方法区分开来。

代码 #1:

Python

# importing pandas module 
import pandas as pd 
   
# Define a dictionary containing employee data 
data = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 
        'Age':[27, 24, 22, 32], 
        'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 
        'Qualification':['Msc', 'MA', 'MCA', 'Phd']} 
 
# Convert the dictionary into DataFrame  
df = pd.DataFrame(data) 
 
# making copy of address column 
new = df["Address"].copy() 
   
# concatenating address with name column 
# overwriting name column 
df["Name"]= df["Name"].str.cat(new, sep =", ") 
   
# display 
print(df)

输出 :

如输出图所示,Address 列中每个与 Name 列中的字符串具有相同索引的字符串都已用分隔符连接起来 “, “。

代码 #2:

Python

# importing pandas module
import pandas as pd
 
# importing csv from link
data = pd.read_csv("nba.csv")
 
# making copy of team column
new = data["Team"].copy()
 
# concatenating team with name column
# overwriting name column
data["Name"]= data["Name"].str.cat(new, sep =", ")
 
# display
data

输出:
如输出图所示,Team 列中每个与 Name 列中的字符串具有相同索引的字符串都用分隔符“, ”连接起来。

删除数据中的空格

为了删除空格,我们使用 str.strip()、  str.rstrip()、  str.lstrip() 这些函数来处理任何文本数据中的空格(包括换行符)。从名称可以看出,str.lstrip() 用于从字符串左侧删除空格,str.rstrip() 用于从字符串右侧删除空格,str.strip() 用于从两侧删除空格。由于这些是与 Python 默认函数同名的 pandas 函数,因此必须加上 .str 前缀以告诉编译器正在调用 Pandas 函数。

代码 #1:

Python

# importing pandas module 
import pandas as pd 
   
# Define a dictionary containing employee data 
data = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 
        'Age':[27, 24, 22, 32], 
        'Address':['Nagpur junction', 'Kanpur junction', 
                   'Nagpur junction', 'Kannuaj junction'], 
        'Qualification':['Msc', 'MA', 'MCA', 'Phd']} 
 
# Convert the dictionary into DataFrame  
df = pd.DataFrame(data)
   
# replacing address name and adding spaces in start and end 
new = df["Address"].replace("Nagpur junction", "  Nagpur junction  ").copy() 
   
# checking with custom string 
print(new.str.strip()==" Nagpur junction")
print(new.str.strip()=="Nagpur junction ")
print(new.str.strip()==" Nagpur junction ")

输出:
如输出图所示,比较对所有 3 个条件都返回 False,这意味着成功从两侧删除空格,并且字符串不再有空格。

代码 #2:

Python

# importing pandas module 
import pandas as pd 
   
# making data frame 
data = pd.read_csv("nba.csv") 
   
# replacing team name and adding spaces in start and end 
new = data["Team"].replace("Boston Celtics", "  Boston Celtics  ").copy() 
   
# checking with custom removed space string 
new.str.lstrip()=="Boston Celtics  "

输出 :

如输出图像所示,删除左侧空格后比较结果为真。

提取数据

为了提取数据,我们使用 str.extract(),此函数接受至少包含一个捕获组的正则表达式。提取包含多个组的正则表达式将返回一个 DataFrame,每个组有一列。不匹配的元素将返回一行,填充为 NaN。

代码 #1:

Python

# importing pandas module 
import pandas as pd 
 
# creating a series 
s = pd.Series(['a1', 'b2', 'c3'])
 
# Extracting a data
n= s.str.extract(r'([ab])(\d)')
 
print(n)

输出:
如输出图所示,这两个组将返回一个包含两列的 DataFrame。不匹配将为 NaN。

代码 #2:

Python

# importing pandas module 
import pandas as pd 
 
# creating a series 
s = pd.Series(['a1', 'b2', 'c3'])
 
# Extracting a data
n = s.str.extract(r'(?P<Geeks>[ab])(?P<For>\d)')
 
print(n)

输出:
如输出图所示,该命名组将成为结果中的列名。

Pandas  str 方法:

功能

描述

str.lower()

将字符串的字符转换为小写的方法

str.upper()

将字符串的字符转换为大写的方法

str.find()

方法用于在一系列字符串中搜索子字符串

str.rfind()

方法用于从右侧搜索一系列字符串中存在的每个子字符串

str.findall()

方法还用于查找一系列字符串中每个字符串的子字符串或分隔符

str.isalpha()

方法用于检查系列中每个字符串中的所有字符是否都是字母(az/AZ)

str. isdecimal()

方法用于检查字符串中的所有字符是否都是十进制

str.title()

将字符串中每个单词的首字母大写的方法

str.len()

方法返回字符串中字符的数量

str.replace()

方法将字符串中的子字符串替换为用户提供的另一个值

str.contains()

方法测试模式或正则表达式是否包含在系列或索引的字符串中

str.extract()

从正则表达式模式的第一个匹配中提取组。

str.startswith()

方法测试每个字符串元素的开头是否与模式匹配

str.endswith()

方法测试每个字符串元素的结尾是否与模式匹配

str.isdigit()

方法用于检查序列中每个字符串中的所有字符是否都是数字

str.lstrip()

方法删除字符串左侧(开头)的空格

str.rstrip()

方法删除字符串右侧(末尾)的空格

str.strip()

从字符串中删除前导和尾随空格的方法

str.split()

方法根据用户指定的值的出现情况拆分字符串值

str.join()

方法用于将列表中存在的元素与传递的分隔符连接起来

str.cat()

方法用于将字符串连接到传递的调用者字符串系列。

str.repeat()

方法用于在传递的系列本身的相同位置重复字符串值

str.get()

方法用于获取传递位置处的元素

str.partition()

与 str.split() 不同,该方法仅在第一次出现时拆分字符串

str.rpartition()

方法仅拆分字符串一次,并且反向拆分。其工作方式与 str.partition() 和 str.split() 类似

str.pad()

向一系列字符串中的每个元素添加填充(空格或其他字符)的方法

str.swapcase()

交换一系列字符串中每个字符串的大小写的方法

标签:三十二,教程,pd,df,pandas,str,字符串,data,Pandas
From: https://blog.csdn.net/xt14327/article/details/144549571

相关文章

  • Spring Boot教程之三十二:自定义 Jackson ObjectMapper
    SpringBoot–自定义JacksonObjectMapper当使用JSON格式时,SpringBoot将使用ObjectMapper实例来序列化响应并反序列化请求。在本文中,我们将介绍配置序列化和反序列化选项的最常用方法。让我们来看看默认配置。默认情况下,SpringBoot配置如下:禁用MapperFeature.DE......
  • 2024 DataGrip安装使用教程(附激活,以及常见问题处理)
    第一步:下载DataGrip安装包访问DataGrip官网,下载DataGrip第二步:安装DataGrip下载完成后,进行安装,next,安装完成点击xx关掉程序!第三步:下载补丁DataGrip补丁文件点击获取补丁下载成功后,打开标注的文件文件夹,进入到文件夹/jetbra注意:这个文件夹单独copy一份......
  • 【亲测能用】专业科学图形和数据分析软件:OriginPro 2024(附绿色补丁+安装教程)
    软件介绍OriginPro2024是一款先进的数据分析和图形绘制工具,它在科研、工程、商业和生物医学等多个领域中被广泛采用。这款软件支持导入和导出多种数据格式,例如Excel、CSV和文本文件,使得数据处理变得简单快捷。它不仅提供数据清洗、转换和统计分析功能,以提升数据的准确性和分析深......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-7-元素基础定位方式-下篇 (详细教
    1.简介上一篇主要是讲解我们日常工作中在使用Playwright进行元素定位的一些比较常用的基础定位方式的理论基础知识以及在什么情况下推荐使用。今天这一篇讲解和分享一下剩下部分的基础定位方式。2.过滤器定位例如以下DOM结构,我们要在其中单击第二个产品卡的购买按钮。我们有几......
  • nodejs安装及环境配置详细教程
    ‌Node.js的安装和环境配置可以通过以下步骤完成‌:‌下载和安装Node.js‌:首先,访问[Node.js官网](https:odejs.org/)下载适合您操作系统的安装包。对于Windows系统,可以选择.exe文件进行安装。安装时,可以选择自定义安装路径,通常建议将其安装在非系统盘以避免占用C盘空间。‌......
  • 【VScode】编程工具入门教程:CodeMoss & ChatGPT中文版超详细入门教程!
    文章目录摘要一、环境介绍VSvode安装步骤IDER(Pycharm)安装步骤Web使用步骤二、Moss9大功能讲解1、AI问答对话2、文件上传功能3、自定义AI助手4、AI联网助手5、AI图片识别6、思维链思维链的简单介绍使用CodeMoss思维链7、AI图片生成图片生成效果8、图片生成代码9、......
  • 黑客入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
       这篇文章没有什么套路。就是一套自学理论和方向,具体的需要配合网络黑白去学习。毕竟是有网络才会有黑白!有自学也有培训!1.打死也不要相信什么分分钟钟教你成为大黑阔的,各种包教包会的教程,就算打不死也不要去购买那些所谓的盗号软件之类的东西。2,我之前让你们在没有目......
  • 剪映草稿自动化批量导出教程,剪映草稿自动化导出
    如何批量自动导出草稿?1.首先打开芒果速剪 2.导出路径请自行选择文件夹,点击复制,3. 粘贴到统一路径点击保存按钮 4.这里填写导出的草稿数量 5.设置好后点击批量导出草稿6.开始自动化导出草稿,注意这个过程中不要动鼠标和键盘,注意事项:1.点击批量导出按钮后,请不要触......
  • 2024最详细Python、Pycharm安装教程来了!
    在开始安装Python之前,让我们先准备好以下内容:一台电脑(Windows、Mac或Linux系统)稳定的网络连接【安装包领取方式在文末!!】一、进入Python官网首页,下载Python选择Python3.10.5,下载64位的版本 二、下载完成后,进行安装1.双击Python-3.10.5-amd64.exe2.选择Custom......
  • DevExpress WinForms中文教程:Grid View - 如何实现固定列?
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!GridViews允许您使用类似于MicrosoftExcel中的冻......