pandas组队学习-Task7 文本数据(string类型)处理

从零构建轻量级用户匹配系统:基于Flask与标签相似度的实践指南 用户匹配与推荐系统是现代互联网应用的核心技术之一,其基本原理是通过分析用户属性、行为或兴趣标签,计算用户间的相似度,从而实现精准连接。在技术实现上,常涉及用户画像构建、相似度算法(如Jaccard相似度、协同过滤)以及实时API服务。这类系统的技术价值在于能够高效处理结构化数据,在社交、电商、内容推荐等多个场景中提升用户体验和平台粘性。本文聚焦于一个具体的应用场景:构建一个本地化、轻量级的用户匹配平台原型。我们将使用Flask框架和SQLite数据库,通过实现基于标签交集的匹配算法,来模拟一个具备用户管理、 阅读详情

目录

1. 学习内容

2. 准备工作

3. string类型的性质与转换

3.1 string类型与object类型的区别

3.2 string类型的转换

4. 拆分与拼接

4.1 str.split()方法

4.1.1 分割符与str的位置元素选取

4.1.2 其他参数

4.2 str.cat()方法

5. 替换

5.1 一般用法

5.2 子组与函数替换

5.3 注意事项

6. 子串匹配与提取

7. 常用字符串方法

8. 问题与练习

8.1 问题

8.2 练习

1. 学习内容

1. 了解string类型与object类型的区别

2. 学会string类型的各种处理方式

本项目参见https://github.com/datawhalechina/team-learning/tree/master/Pandas%E6%95%99%E7%A8%8B%EF%BC%88%E4%B8%8A%EF%BC%89

2. 准备工作

import pandas as pd
import numpy as np

3. string类型的性质与转换

3.1 string类型与object类型的区别

主要有3点:首先,string字符存取方法会返回相应数据的Nullable类型,而object会随缺失值的存在而改变返回类型;然后,某些Series方法不能在string上使用,例如Series.str.decode(),因为存储的是字符串而不是字节;最后,string类型在缺失值存储或运算时,类型会广播为pd.NA,而不是浮点型np.nan。

其余全部内容在当前版本下完全一致,但迎合pandas的发展模式,这里仍然全部用string来操作字符串。

3.2 string类型的转换

如果将一个其他类型的容器直接转换string类型可能会出错。当下正确的方法是分两部转换,先转为str型的object,再转为string类型。

pd.Series([1,'1.']).astype('str').astype('string')
0     1
1    1.
dtype: string

4. 拆分与拼接

4.1 str.split()方法

4.1.1 分割符与str的位置元素选取

s = pd.Series(['a_b_c', 'c_d_e', np.nan, 'f_g_h'], dtype = "string")
s
0    a_b_c
1    c_d_e
2     <NA>
3    f_g_h
dtype: string
s.str.split('_')
0    [a, b, c]
1    [c, d, e]
2         <NA>
3    [f, g, h]
dtype: object

这里需要注意split后的类型是object,因为现在Series中的元素已经不是string,而包含了list,且string类型只能含有字符串。

另外,对于str方法可以进行元素的选择,如果该单元格元素是列表,那么str[i]表示取出第i个元素,如果是单个元素,则先把元素转为列表再取出。

s.str.split('_').str[1]
0       b
1       d
2    <NA>
3       g
dtype: object

4.1.2 其他参数

expand参数控制了是否将列拆开,n参数代表最多分割多少次。

s.str.split('_', expand = True, n = 1)
      0     1
0     a   b_c
1     c   d_e
2  <NA>  <NA>
3     f   g_h

4.2 str.cat()方法

str.cat()方法对于不同对象的作用结果并不相同,其中的对象包括:单列、双列、多列。对于单个Series而言,就是指所有的元素进行字符合并为一个字符串。其中可选sep分隔符参数,和缺失值替代字符na_rep参数;对于两个Series合并而言,是对应索引的元素进行合并。同样也有相应参数,需要注意的是两个缺失值会被同时替换;多列拼接可以分为表的拼接和多Series拼接。

s = pd.Series(['ab', None, 'd'], dtype = 'string')
s
0      ab
1    <NA>
2       d
dtype: string
s.str.cat()
'abd'
s.str.cat(sep = ',')
'ab,d'
s.str.cat(sep = ',', na_rep = '*')
'ab,*,d'
s2 = pd.Series(['24', None, None], dtype = 'string')
s2
0      24
1    <NA>
2    <NA>
dtype: string
s.str.cat(s2)
0    ab24
1    <NA>
2    <NA>
dtype: string
s.str.cat(s2, sep = ',', na_rep = '*')
0    ab,24
1      *,*
2      d,*
dtype: string
s.str.cat(pd.DataFrame({0:['1', '3', '5'], 1:['5', 'b', None]}, \
                       dtype = 'string'), na_rep = '*')
0    ab15
1     *3b
2     d5*
dtype: string
s.str.cat([s + '0', s * 2])
0    abab0abab
1         <NA>
2        dd0dd
dtype: string
s.str.cat(s2, na_rep = '*')
0    ab24
1      **
2      d*
dtype: string

5. 替换

广义上的替换,就是指str.replace()的应用,fillna是针对缺失值的替换。提到替换,就不可避免地接触到正则表达式,这里默认读者已掌握常见正则表达式知识点。

5.1 一般用法

s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca','', np.nan, 'CABA', 'dog', 'cat'], \
              dtype = "string")
s
0       A
1       B
2       C
3    Aaba
4    Baca
5        
6    <NA>
7    CABA
8     dog
9     cat
dtype: string
s.str.replace(r'^[AB]', '***')
0       ***
1       ***
2         C
3    ***aba
4    ***aca
5          
6      <NA>
7      CABA
8       dog
9       cat
dtype: string

5.2 子组与函数替换

# 通过正整数调用子组(0返回字符本身,从1开始才是子组)
s.str.replace(r'([ABC])(\w+)', lambda x: x.group(2))
0       A
1       B
2       C
3     aba
4     aca
5        
6    <NA>
7     ABA
8     dog
9     cat
dtype: string
# 利用?P<....>表达式可以对子组命名调用
s.str.replace(r'(?P<one>[ABC])(?P<two>\w+)', lambda x: x.group('two'))
0       A
1       B
2       C
3     aba
4     aca
5        
6    <NA>
7     ABA
8     dog
9     cat
dtype: string

5.3 注意事项

要明确str.replace和replace并不是一个东西:str.replace针对的是object类型或string类型,默认是以正则表达式为操作,目前暂时不支持DataFrame上使用。replace针对的是任意类型的序列或数据框,如果要以正则表达式替换,需要设置regex=True,该方法通过字典可支持多列替换。但现在由于string类型的初步引入,用法上出现了一些问题,这些问题可能会在以后的版本中修复。

更具体具体而言:str.replace()不可输入pd.NA(当前版本不可以),可以考虑先转换为object类型最后再换回来;对于string类型Series,在使用replace函数时不能使用正则表达式替换,该bug现在还未修复;string类型序列如果存在缺失值,不能使用replace替换,而要用str.replace。

综上,除非需要赋值元素为缺失值(转为object再转回来),否则请使用str.replace()方法。

6. 子串匹配与提取

这部分对正则表达式的要求相对较高,这里先不写了。

7. 常用字符串方法

这部分的方法与python3自带的字符串类型的方法很类似。具体有:str.strip(),str.lower(),str.upper(),str.swapcase(),str.capitalize()和str.isnumeric()方法。

8. 问题与练习

8.1 问题

【问题一】 str对象方法和df/Series对象方法有什么区别?

str.replace针对的是object类型或string类型,默认是以正则表达式为操作,目前暂时不支持DataFrame上使用。

replace针对的是任意类型的序列或数据框,如果要以正则表达式替换,需要设置regex=True,该方法通过字典可支持多列替换。

【问题二】 给出一列string类型,如何判断单元格是否是数值型数据?

正则表达式或者用str.isnumeric()
【问题三】 rsplit方法的作用是什么?它在什么场合下适用?

与split功能类似,只不过只对字符串的右边有效。
【问题四】 在本章的第二到第四节分别介绍了字符串类型的5类操作,请思考它们各自应用于什么场景?

 拆分:某个字符串series里有相同的分隔符的时候,可以用split来分开。例如表示时间的数据。

​ 拼接:理解为拆分的逆操作。

​ 替换:进行数据清洗。

​ 字串匹配:检查是否存在自己需要的模式字符串。

​ 字串提取:当字符串series有一定的规律的时候,提取自己需要的模式。

8.2 练习

略。

Pandas数据分析学习打卡(二):String文本数据 Pandas数据分析学习打卡(一):String文本数据 这是Pandas数据分析学习的第二个内容——String文本数据 对它的处理主要是以下几种: 1.类型转换astype(),输入是代表不同类型的关键字,比如’str’、‘string’… 2.拆分str.split()与拼接str.cat(),前者主要根据某一字符进行分割,返回分割后的多个字符;后者可以实现将单个Series的多个字符串元素拼接、将两个Series的对应索引的元素进行合并、将多个列对应索引进行拼接,功能很丰富。 3.替换str.rep 阅读详情

相关推荐

Pybind11实战:C++嵌入Python解释器实现混合编程

在软件工程实践中,混合编程是连接不同语言生态、发挥各自优势的关键技术。其核心原理是通过语言绑定库建立类型映射与函数调用协议,实现跨语言的无缝交互。这种技术的核心价值在于,它允许开发者将C++的高性能计算能力与Python丰富的生态系统及敏捷开发特性相结合,从而在科学计算、游戏引擎、量化金融等场景中构建高效灵活的解决方案。Pybind11作为现代C++的轻量级头文件库,通过编译时类型推导和RAII资源管理,为C++嵌入Python解释器提供了简洁而强大的支持。它解决了GIL管理、内存生命周期、数据高效传递等混

weixin_33851604的博客 343

Fluent VOF造波从入门到放弃?手把手教你用k-w SST模型搞定波浪模拟

本文详细介绍了使用Fluent VOF和k-w SST模型进行波浪模拟的实战技巧,从参数设置到结果优化,帮助用户避开常见误区。通过工业项目验证的配置方案,提升波浪模拟的准确性和计算效率,特别适合处理多相流和复杂湍流场景。

weixin_27102543的博客 422

pandas 把某一列中字符串变数值_Pandas对文本数据处理

在处理数据的时候,对数值型的数据处理还是比较方便的,但是有时候数值型数据出现问题后就会比较头痛了,因为文本数据的排列组合可是有很多很多的,今天我们就学习一下如何对文本数据进行处理,这样我们接下来在工作中遇到了这些情况就可以少掉一下头发啦。一、str属性文本数据也就是我们常说的字符串,pandas为series提供了str属性,通过它可以方便对每个元素进行操作。为了防止数据被弄坏,我们先预留一个备份...

weixin_39859394的博客 3639

Linux内核4.14版本——drm框架分析(1)——drm简介

drm框架分析

yangguoyu8023的博客 1万+

数据采集卡架构与PCIe优化设计详解

数据采集卡(DAQ)作为工业自动化中的关键设备,其核心在于模数转换(ADC)和数字信号处理技术。现代系统普遍采用PCIe总线架构,通过DMA传输和时钟同步技术实现高速数据采集。在信号调理环节,可编程增益放大器(PGA)和抗混叠滤波器确保信号质量;而Σ-Δ型ADC则提供高达24位的分辨率。实际应用中,从电力监测到机床振动分析,数据采集卡需要结合具体场景优化配置。通过合理的PCB布局和EMI防护设计,可以有效提升系统在工业环境中的可靠性。

weixin_29168675的博客 908

Numpy下dtype中的str_与string_的区别

        为什么写这篇文章呢,其实简单来说就是因为搜不到别人有这类的文章呗,所以自己研究了一下。         在我的某个程序中需要将数据保存成numpy数组,数组中每个元素又必须是字符串的格式 但是当你输入dtype=numpy.str的时候,你会发现又三个相近的数据类型可选,那就是str、str_和string_了,如下图 str自然不用说,看后面就知道,builtins也就...

Runffy优快云的博客 2万+

Qwen2.5-VL模型微调实战:从零到部署的完整流程(附避坑指南)

本文详细介绍了Qwen2.5-VL视觉语言模型从零开始的完整微调与部署流程。内容涵盖使用LLaMA-Factory进行LoRA微调的关键参数配置与避坑指南,以及如何将训练好的模型权重合并,并最终利用vLLM高性能推理引擎进行部署,为开发者提供了一套可落地的实战方案。

oo7890的博客 589

python数据分析(2)Numpy库(1)

一:简介 NumPy系统,全称Numerical Python,是Python的一种开源的数值计算扩展工具(一种开源的科学计算库)。可用来存储和处理大型矩阵,比Python自身的嵌套列表要高效的多。 它是目前Python数值计算中最为重要的基础包,大多数其他数值计算包都提供了基于NumPy的科学函数功能,将Numpy的数组对象作为数据交换的媒介。 这里要向大家介绍包与库的区别:其实,我们的每个py...

ITxiaoangzai的博客 774

FPGA实现PCIe接口

PCI Express(PCIe)是一种高速串行计算机扩展总线标准,在FPGA中实现PCIe接口可以实现与主机系统的高速数据通信。以下是FPGA实现PCIe接口的关键技术要点。

whm128的博客 1458

控制科学与工程(自动化)保研经验【4】——浙大篇

控制科学与工程(自动化)保研经验【4】——浙大篇

Control Everything 1万+

Pandas基础|文本数据︱Python学习笔记

第7章 文本数据 import pandas as pd import numpy as np 一、string类型的性质 1. string与object的区别 string类型和object不同之处有三: ① 字符存取方法(string accessor methods,如str.count)会返回相应数据的Nullable类型,而object会随缺失值的存在而改变返回类型 ② 某些Series方法不能在string上使用,例如: Series.str.decode(),因为存储的是字符串而不是字节

PenguinAsHeathen 420

【100%通过率】2023华为od机试C卷【电脑病毒感染】C语言 实现

一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1.

MISAYAONE的博客 1041

pandas学习笔记(七)

一.string类型的性质 1.string与object的区别 string类型和object不同之处有三: ① 字符存取方法(string accessor methods,如str.count)会返回相应数据的Nullable类型,而object会随缺失值的存在而改变返回类型 ② 某些Series方法不能在string上使用,例如: Series.str.decode(),因为存储的是字符串而不是字节 ③ string类型在缺失值存储或运算时,类型会广播为pd.NA,而不是浮点型np.nan 2.st

weixin_52703681的博客 1595

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

pandas task-08

pandas task-08 组队学习 import numpy as np import pandas as pd str对象 str对象的设计意图 str对象为定义在Index或Series上的属性,专门用于逐元素处理文本内容,其内部定义了大量方法, pandas沿用了Python的标准库中str模块中的部分函数以保证使用上的便利 var = 'abcd' print(str.upper(var)) print('-'*50) s = pd.Series(['abcd','efg','hi']) pr

qq_41834327的博客 277

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OpenClaw-Skill:基于集体技能树搜索的LLM智能体协作框架解析

在人工智能领域,大型语言模型(LLM)智能体(Agent)正成为自动化复杂任务的关键技术。其核心原理在于通过规划、执行与观察的循环,使模型能够调用工具并处理多步骤问题。然而,单一智能体在应对长链条、跨领域的复杂场景时,常面临逻辑断裂与专业能力不足的挑战,限制了其技术价值的充分发挥。为此,业界提出了多智能体协作与模块化任务分解的解决方案,旨在提升系统的可靠性与效率。OpenClaw-Skill框架正是这一方向的典型实践,它创新性地引入了**集体搜索**机制与**技能树**的模块化设计。该框架将宏观任务分解为结

weixin_34226182的博客 404

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Python,Pandas处理csv文件常用操作总结

python中引入pandas包可以很方便的对csv格式的数据进行处理 import pandas as pd csv文件的读写 data = pd.read_csv('D:\data\train.scv',names=['ID','index'],dtype={'ID':pd.np.string_},index_col=0) #names指定列名,dtype指定读取的格式,index_col指...

weixin_39126107的博客 1万+

Pandas文本数据

一、String 类型的性质 1、string与object的区别 string类型和object不同之处有三: ① 字符存取方法(string accessor methods,如str.count)会返回相应数据的Nullable类型,而object会随缺失值的存在而改变返回类型 ② 某些Series方法不能在string上使用,例如: Series.str.decode(),因为存储的是字符串而不是字节 ③ string类型在缺失值存储或运算时,类型会广播为pd.NA,而不是浮点型np.nan,其余全

weixin_41660160的博客 226

Pandas文本数据类型及处理

Pandas文本数据类型 Pandas文本数据类型有object和string两种。 pandas1.0之前只有文本数据只有object类型,pandas1.01.0之后有了string类型。 如果一列数据中包含文本和数据,则会默认为object类型。 import pandas as pd import numpy as np df = pd.DataFrame({ 'A':['a','b','c','d'], 'B':['aa','bb','cc',np.nan], 'C':[

zilongxuan008的博客 3542

String Task

#include<iostream> using namespace std; int main() { char ch[100] = "\0"; int a[100], nl=0, ng=0; while (cin >> ch[nl]) { nl++; } for (int i = 0; i < nl; i++) { if (ch[i] !=...

weixin_43965572的博客 241

Python数据分析入门笔记2——pandas数据读取

快速入门pandas,认识pandas三大结构Series、DataFrame和Panel中的前两种,知道读取文件,并且按行或者按列有选择性地查找数据。

奥特曼打小白的专栏 7892

pandas文本数据

文章目录string类型的性质一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 string类型的性质 所有的类型都能够通过astype(‘string’)转为字符串类型 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotli.

weixin_47004138的博客 445

pandas学习下 - task2

【问题一】 str对象方法和df/Series对象方法有什么区别? str.replace针对的是object类型或string类型,默认是以正则表达式为操作,目前暂时不支持DataFrame上使用 .replace针对的是任意类型的序列或数据框,如果要以正则表达式替换,需要设置regex=True,该方法通过字典可支持多列替换 【问题二】 给出一列string类型,如何判断单元格是否是数值型数据? 无论是isnumeric, isdigit以及 isdecimal等只能判断纯数字字符,不能带小数点,负号等

qq_41760902的博客 270

datawhale组队学习——pandas基础下——文本数据

学习资源链接:pandas文本数据 一、总览 二、正则表达式 三、思考题 【问题一】 str对象方法和df/Series对象方法有什么区别? 【问题二】 给出一列string类型,如何判断单元格是否是数值型数据? 【问题三】 rsplit方法的作用是什么?它在什么场合下适用? 【问题四】 在本章的第二到第四节分别介绍了字符串类型的5类操作,请思考它们各自应用于什么场景? 四、练习题 【练习一】 现有一份关于字符串的数据集,请解决以下问题: (a)现对字符串编码存储人员信息(在编号后添加ID列),使用如下格

tangzhide123yy的博客 333

P7

知知知…

weixin_51503843的博客 363

pandas中Series对象下的str所拥有的方法(df["xx"].str)

在使用pandas的时候,经常要对DataFrame的某一列进行操作,一般都会使用df["xx"].str下的方法,但是都有哪些方法呢?我们下面来罗列并演示一下。既然是df["xx"].str,那么xx这一列必须是字符串类型,当然在pandas里面是object,不能是整形、时间类型等等。如果想对这些类型使用的话,必须先df["xx"].astype(str)转化一下,才能使用此方法。 ...

CWG2017的博客 6776
上一篇: CS224N(NLP)组队学习-L1 Introduction and Word Vectors
下一篇: pandas组队学习-Task8 分类类型
Zee_Chao
博客等级 码龄11年 168粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值