Python酷库之旅-第三方库Pandas(077)

目录

一、用法精讲

pandas.DataFrame.to_csv%E5%87%BD%E6%95%B0-toc" style="margin-left:120px;">316、pandas.Series.str.findall方法

316-1、语法

316-2、参数

316-3、功能

316-4、返回值

316-5、说明

316-6、用法

316-6-1、数据准备

316-6-2、代码示例

316-6-3、结果输出

pandas.DataFrame.to_csv%E5%87%BD%E6%95%B0-toc" style="margin-left:120px;">317、pandas.Series.str.fullmatch方法

317-1、语法

317-2、参数

317-3、功能

317-4、返回值

317-5、说明

317-6、用法

317-6-1、数据准备

317-6-2、代码示例

317-6-3、结果输出

pandas.DataFrame.to_csv%E5%87%BD%E6%95%B0-toc" style="margin-left:120px;">318、pandas.Series.str.get方法

318-1、语法

318-2、参数

318-3、功能

318-4、返回值

318-5、说明

318-6、用法

318-6-1、数据准备

318-6-2、代码示例

318-6-3、结果输出

pandas.DataFrame.to_csv%E5%87%BD%E6%95%B0-toc" style="margin-left:120px;">319、pandas.Series.str.index方法

319-1、语法

319-2、参数

319-3、功能

319-4、返回值

319-5、说明

319-6、用法

319-6-1、数据准备

319-6-2、代码示例

319-6-3、结果输出

pandas.DataFrame.to_csv%E5%87%BD%E6%95%B0-toc" style="margin-left:120px;">320、pandas.Series.str.join方法

320-1、语法

320-2、参数

320-3、功能

320-4、返回值

320-5、说明

320-6、用法

320-6-1、数据准备

320-6-2、代码示例

320-6-3、结果输出

一、用法精讲

pandas.DataFrame.to_csv%E5%87%BD%E6%95%B0">316、pandas.Series.str.findall方法
316-1、语法
python"># 316、pandas.Series.str.findall方法
pandas.Series.str.findall(pat, flags=0)
Find all occurrences of pattern or regular expression in the Series/Index.Equivalent to applying re.findall() to all the elements in the Series/Index.Parameters:
pat
str
Pattern or regular expression.flags
int, default 0
Flags from re module, e.g. re.IGNORECASE (default is 0, which means no flags).Returns:
Series/Index of lists of strings
All non-overlapping matches of pattern or regular expression in each string of this Series/Index.
316-2、参数

316-2-1、pat(必须)字符串或正则表达式,表示要查找的正则表达式模式,可以是简单的字符串或复杂的正则表达式。

316-2-2、flags(可选,默认值为0)整数,用于控制正则表达式匹配的标志。例如,可以使用re.IGNORECASE来进行大小写不敏感匹配,可以使用re模块中的任何标志。

316-3、功能

        将在每个字符串中查找与正则表达式模式匹配的所有子字符串,并将匹配结果以列表的形式返回。

316-4、返回值

        返回一个Series对象,其中每个元素都是一个列表,表示在原字符串中匹配的所有子字符串,如果某个字符串中没有匹配项,返回一个空列表。

316-5、说明

        使用场景:

316-5-1、文本数据分析:当你需要深入分析文本内容以提取特定信息时,比如从用户评论中提取关键字、实体或模式。

316-5-2、数据清洗:可以用于清洗数据,提取数据集中的特定格式。例如,从包含日期和时间的字符串中提取日期部分。

316-5-3、模式匹配和数据提取:在数据挖掘和特征提取任务中,当你需要从复杂字符串中提取特定模式(如电子邮件地址、URLs、电话号码等)时,该方法非常方便。

316-5-4、文档和报告生成:在自动生成报告或文档时,可以提取特定的段落或句子,以及统计特定词汇的出现频率。

316-5-5、机器学习特征工程:通过提取文本中的特征(如单词频率、特定词组等),可以为机器学习模型构建新的特征。

316-5-6、数据可视化:在数据可视化之前可以通过这个方法提取信息,以便更好地展示数据中的模式和趋势。

316-6、用法
316-6-1、数据准备
python">无
316-6-2、代码示例
python"># 316、pandas.Series.str.findall方法
# 316-1、文本数据分析
import pandas as pd
# 创建示例数据
data = {'comments': ["这个产品真的很好,很满意!","太差了,完全不值得买。","优质服务,让我感到惊喜。","质量一般,但性价比高。","一分价钱一分货,差强人意。"]
}
df = pd.DataFrame(data)
# 使用findall提取关键词
df['good_bad'] = df['comments'].str.findall(r'优|差')
print(df, end='\n\n')# 316-2、数据清洗
import pandas as pd
# 创建示例数据
data = {'timestamps': ["2023-10-01 12:30:00","2023-10-02 14:45:00","2023-10-03 09:15:00","Invalid data","2023-10-04 18:00:00"]
}
df = pd.DataFrame(data)
# 使用findall提取日期
df['date'] = df['timestamps'].str.findall(r'\d{4}-\d{2}-\d{2}')
print(df, end='\n\n')# 316-3、模式匹配和数据提取
import pandas as pd
# 创建示例数据
data = {'emails': ["请联系 support@example.com 进行咨询。","info@domain.org 是我们的支持邮箱。","invalid-email@com 是无效的邮箱。","邮件可以发送到 admin123@my-site.co.uk。","没有邮箱的文本。"]
}
df = pd.DataFrame(data)
# 使用findall提取电子邮件
df['extracted_emails'] = df['emails'].str.findall(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}')
print(df, end='\n\n')# 316-4、数据可视化
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
# 配置字体,确保中文字符正常显示
matplotlib.rcParams['font.sans-serif'] = ['Microsoft YaHei']
matplotlib.rcParams['axes.unicode_minus'] = False  # 确保负号显示正常
# 创建示例数据
data = {'comments': ["这个产品真的很好,很满意!","太差了,完全不值得买。","优质服务,让我感到惊喜。","质量一般,但性价比高。","一分价钱一分货,差强人意。"]
}
df = pd.DataFrame(data)
# 使用findall提取关键词
df['good_bad'] = df['comments'].str.findall(r'优|差')
# 统计关键词出现次数
# 使用列表推导式来检查每个列表中是否包含'差'
count_bad = sum(1 for lst in df['good_bad'] if '差' in lst)
# '优'的数量可以直接通过长度计算(假设每个列表最多包含一个'优')
count_good = sum(len(lst) for lst in df['good_bad'] if '优' in lst)
# 或者更简单地,因为findall已经返回了匹配项列表,我们可以直接计算所有列表中'优'的总数
# count_good = sum('优' in lst for lst in df['good_bad'])
# 可视化
labels = ['好', '差']
sizes = [count_good, count_bad]
plt.bar(labels, sizes, color='purple')
plt.title('关键词出现次数')
plt.xlabel('关键词')
plt.ylabel('次数')
plt.show()
316-6-3、结果输出
python"># 316、pandas.Series.str.findall方法
# 316-1、文本数据分析
#         comments good_bad
# 0  这个产品真的很好,很满意!       []
# 1    太差了,完全不值得买。      [差]
# 2   优质服务,让我感到惊喜。      [优]
# 3    质量一般,但性价比高。       []
# 4  一分价钱一分货,差强人意。      [差]# 316-2、数据清洗
#             timestamps          date
# 0  2023-10-01 12:30:00  [2023-10-01]
# 1  2023-10-02 14:45:00  [2023-10-02]
# 2  2023-10-03 09:15:00  [2023-10-03]
# 3         Invalid data            []
# 4  2023-10-04 18:00:00  [2023-10-04]# 316-3、模式匹配和数据提取
#                             emails          extracted_emails
# 0    请联系 support@example.com 进行咨询。     [support@example.com]
# 1        info@domain.org 是我们的支持邮箱。         [info@domain.org]
# 2        invalid-email@com 是无效的邮箱。                        []
# 3  邮件可以发送到 admin123@my-site.co.uk。  [admin123@my-site.co.uk]
# 4                         没有邮箱的文本。                        []# 316-4、数据可视化
# 见图1

图1:

 

317、pandas.Series.str.fullmatch方法
317-1、语法
python"># 317、pandas.Series.str.fullmatch方法
pandas.Series.str.fullmatch(pat, case=True, flags=0, na=None)
Determine if each string entirely matches a regular expression.Parameters:
pat
str
Character sequence or regular expression.case
bool, default True
If True, case sensitive.flags
int, default 0 (no flags)
Regex module flags, e.g. re.IGNORECASE.na
scalar, optional
Fill value for missing values. The default depends on dtype of the array. For object-dtype, numpy.nan is used. For StringDtype, pandas.NA is used.Returns:
Series/Index/array of boolean values.
317-2、参数

317-2-1、pat(必须)字符串或正则表达式,表示要查找的正则表达式模式,可以是简单的字符串或复杂的正则表达式。

317-2-2、case(可选,默认值为True)布尔值,如果为True,则匹配时区分大小写;如果为False,则不区分大小写。

317-2-3、flags(可选,默认值为0)整数,正则表达式的标志(如re.IGNORECASE等),用于修改正则表达式的功能,例如使匹配不区分大小写,该参数与case参数配合使用。

317-2-4、na(可选,默认值为None)用于指定当输入数据为NaN时返回的值,可以设置为任何对象,以替代缺失值的返回结果。

317-3、功能

        用于逐元素检查Series中的每个字符串是否完全匹配给定的正则表达式或字符串模式,它可以用来验证字符串是否符合特定格式。

317-4、返回值

        返回一个布尔型Series,其中每个元素对应于原始Series中每个字符串的匹配结果:

  • 如果字符串完全匹配给定模式,则返回True。
  • 如果字符串不匹配或为NaN(且na参数未设置),则返回Fasle。
  • 如果na参数被设置,当对应元素为NaN时返回na的值。
317-5、说明

        无

317-6、用法
317-6-1、数据准备
python">无
317-6-2、代码示例
python"># 317、pandas.Series.str.fullmatch方法
import pandas as pd
# 创建一个Series
s = pd.Series(['abc', '123', 'abc123', None])
# 使用fullmatch验证是否完全匹配字母串'abc'
result = s.str.fullmatch('abc')
print(result)
317-6-3、结果输出
python"># 317、pandas.Series.str.fullmatch方法
# 0     True
# 1    False
# 2    False
# 3     None
# dtype: object
318、pandas.Series.str.get方法
318-1、语法
python"># 318、pandas.Series.str.get方法
pandas.Series.str.get(i)
Extract element from each component at specified position or with specified key.Extract element from lists, tuples, dict, or strings in each element in the Series/Index.Parameters:
i
int or hashable dict label
Position or key of element to extract.Returns:
Series or Index.
318-2、参数

318-2-1、i(必须)整数,指定要获取字符的位置(索引),可以是正整数(从字符串开始计数)或负整数(从字符串结束计数)。

318-3、功能

        用于从每个字符串中提取指定索引位置的字符,对于长度不足的字符串,返回值为NaN,可以用于访问字符串的特定字符,常见于数据清洗或提取特定信息的场景。

318-4、返回值

        返回一个Series,其中包含对应位置字符的值:

  • 如果指定位置的字符存在,则返回该字符。
  • 如果指定的位置超出了字符串的长度,则返回NaN。
  • 返回的Series与输入的Series具有相同的索引。
318-5、说明

        无

318-6、用法
318-6-1、数据准备
python">无
318-6-2、代码示例
python"># 318、pandas.Series.str.get方法
import pandas as pd
# 创建一个Series
s = pd.Series(['apple', 'banana', 'cherry', None])
# 使用get方法获取每个字符串的第一个字符
result = s.str.get(0)
print(result)
318-6-3、结果输出
python"># 318、pandas.Series.str.get方法
# 0       a
# 1       b
# 2       c
# 3    None
# dtype: object
319、pandas.Series.str.index方法
319-1、语法
python"># 319、pandas.Series.str.index方法
pandas.Series.str.index(sub, start=0, end=None)
Return lowest indexes in each string in Series/Index.Each of the returned indexes corresponds to the position where the substring is fully contained between [start:end]. This is the same as str.find except instead of returning -1, it raises a ValueError when the substring is not found. Equivalent to standard str.index.Parameters:
sub
str
Substring being searched.start
int
Left edge index.end
int
Right edge index.Returns:
Series or Index of object.
319-2、参数

319-2-1、sub(必须)字符串,表示要查找的子字符串。

319-2-2、start(可选,默认值为0)整数,表示开始查找的起始位置(索引),默认为0,表示从字符串的开头开始查找。

319-2-3、end(可选,默认值为None)整数,表示结束查找的位置(索引),默认为None,表示查找到字符串的末尾。

319-3、功能

        用于在每个字符串中查找指定子字符串sub的第一个出现位置,如果找到,则返回该位置的索引;如果没有找到子字符串,则会抛出异常。

319-4、返回值

        返回一个Series,其中包含对应子字符串的起始索引位置:

  • 如果子字符串在对应的字符串中存在,则返回该子字符串第一次出现的起始位置。
  • 如果子字符串在字符串中不存在,则会引发ValueError。
  • 返回的Series与输入的Series具有相同的索引。
319-5、说明

        无

319-6、用法
319-6-1、数据准备
python">无
319-6-2、代码示例
python"># 319、pandas.Series.str.index方法
import pandas as pd
# 创建一个Series
s = pd.Series(['apple', 'banana', 'cherry', None])
result = []
for item in s:try:if item is not None:index = item.index('na')result.append(index)else:result.append(None)  # 或者使用NaN,如果Series是pandas的except ValueError:result.append(None)  # 或使用NaNexcept AttributeError:result.append(None)  # 处理非字符串类型
# 如果result需要是pandas Series
result = pd.Series(result, index=s.index)
print(result)
319-6-3、结果输出
python"># 319、pandas.Series.str.index方法
# 0    NaN
# 1    2.0
# 2    NaN
# 3    NaN
# dtype: float64
320、pandas.Series.str.join方法
320-1、语法
python"># 320、pandas.Series.str.join方法
pandas.Series.str.join(sep)
Join lists contained as elements in the Series/Index with passed delimiter.If the elements of a Series are lists themselves, join the content of these lists using the delimiter passed to the function. This function is an equivalent to str.join().Parameters:
sep
str
Delimiter to use between list entries.Returns:
Series/Index: object
The list entries concatenated by intervening occurrences of the delimiter.Raises:
AttributeError
If the supplied Series contains neither strings nor lists.
320-2、参数

320-2-1、sep(必须)字符串,一个分隔符字符串,指定用来连接每个Series元素的字符或字符串,在实际操作中,它可以是任意字符串,比如空格、逗号、换行符等。

320-3、功能

        用于将Series中的每个元素(通常是字符串或可以被转换为字符串的对象)连接成一个新的字符串,它特别有用当你有一个包含多个字符串的Series,并且希望将它们合并成一个单一的字符串,使用指定的分隔符进行分隔。

320-4、返回值

        返回一个新的Series,其中每个元素都是通过sep将原Series中对应元素连接而成的字符串。

320-5、说明

        无

320-6、用法
320-6-1、数据准备
python">无
320-6-2、代码示例
python"># 320、pandas.Series.str.join方法
import pandas as pd
# 创建一个示例Series
s = pd.Series(['a', 'b', 'c'])
# 使用str.join连接Series元素
result = s.str.join('-')
print(result)
320-6-3、结果输出
python"># 320、pandas.Series.str.join方法
# 0    a
# 1    b
# 2    c
# dtype: object

http://www.ppmy.cn/devtools/93777.html

相关文章

【Linux】MySQL安装教程

Linux中MySQL安装教程 Step1:卸载系统自带的mysqlStep2:下载mysql8安装包Step3:上传mysql压缩包到 /opt 然后解压Step4:解压后按照如下顺序安装Step5:对mysql进行初始化Step6:修改mysql安装目录的所有用户和…

使用Anaconda安装多个版本的Python并与Pycharm进行对接

1、参考链接 Anaconda安装使用教程解决多Python版本问题_anaconda安装多个python版本-CSDN博客 基于上面的一篇博客的提示,我做了尝试。并在Pycharm的对接上做了拓展。 2、首先安装Anaconda 这个比较简单,直接安装即可: 3、设置conda.exe的…

NPM包管理高级技巧:使用版本范围测试锁定

引言 在JavaScript项目开发中,依赖管理是保证项目稳定性和可维护性的关键环节。NPM(Node Package Manager)作为Node.js的包管理器,提供了一套灵活的版本控制机制,允许开发者精确控制依赖包的版本。版本范围测试锁定是…

腾讯开源VITA!全方位对标GPT4o,全能多模态交互大模型!

腾讯优图实验室联合南京大学、厦门大学和中国科学院自动化研究所推出了VITA,一个开源的多模态大型语言模型。该模型擅长同时处理和分析视频、图像、文本和音频模态,并通过非唤醒交互和音频中断交互实现先进的多模态交互体验。 作者表示:所有训…

SQL Server端口设置完整详细步骤

​ 大家好,我是程序员小羊! 前言: 前面是对SQLserver服务器一些介绍,不想了解的可直接点击目录跳入正题,谢谢!!! SQL Server 是由微软公司开发的关系数据库管理系统 (RDBMS)。它主要…

Linux Vim教程

Linux Vim 教程 Vim(Vi IMproved)是一个强大的文本编辑器,广泛用于编程和系统管理。本文将带你全面了解 Vim 的基础使用、常用命令、高级功能等。 1. 安装 Vim 在大多数 Linux 发行版中,Vim 已经预装。如果没有,可以…

PostgreSQL JSON 字段操作指南

PostgreSQL JSON 字段操作指南 介绍 PostgreSQL 提供了强大的 JSON 和 JSONB 数据类型支持,允许存储和处理结构化的 JSON 数据。在实际应用中,我们经常需要从 JSON 字段中提取多层嵌套的属性或处理数组中的数据。本文将详细介绍如何在 PostgreSQL 中获…

three.js 模型高亮效果实现说明(结合react)

three.js react 实现鼠标移入模型高亮选中效果 使用EffectComposer和其附加的渲染效果Passes(如RenderPass和OutlinePass)来实现高级渲染效果。首先创建EffectComposer实例,并添加RenderPass和OutlinePass,最后在渲染循环中调用…

堆的实现(偷懒版)

🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 目录 前言 一、堆的实现 1.1 堆的向下调整算法 思路: 1.2 堆的向上调整算法 1.3 堆的创建 1.4 堆的复杂度计算 向下调整建堆的复杂度…

年化26.4%,quantlab5.5发布——多任务机器学习组合优化,可视化策略生成向导(代码+数据)

原创文章第615篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 本次代码主要更新: 1、主界面gui应大家要求加回来了,同时更加易用了。包括因子轮动策略,信号策略下周再加进来。 2、时间序列分析界面。 3、…

rsocket-java 高效的服务间通讯

参考: rsocket 官方文档 rsocket-java demo示例 - request/response模式下的路由请求 SpringBoot整合RSocket实时数据通信 spring官方文档介绍rsocket 集成spring-rsocket spring官方集成rsocket高级配置 一、背景 大型分布式系统通常由不同的团队使用各种技术和编程语言以模…

无字母数字webshell之命令执行

文章目录 无字母数字的webshell构造技巧php7下简单解决问题php5下解决问题glob开始操作 无字母数字的webshell构造技巧 <?php if(isset($_GET[code])){$code $_GET[code];if(strlen($code)>35){die("Long.");}if(preg_match("/[A-Za-z0-9_$]/",$c…

Otter Go 语言编写的非竞争式缓存库

Otter 是一个用 Go 语言编写的非竞争式缓存库&#xff0c;旨在提供高效的缓存解决方案。以下是 Otter 的一些关键特点和优势&#xff1a; 主要特点 高吞吐量&#xff1a;Otter 专为高性能而设计&#xff0c;能够在高并发的环境下提供出色的吞吐量。这使其非常适合需要快速缓存…

MongoDB学习记录

1、初识Mongo 概述&#xff1a;与关系型数据库不同&#xff0c;MongoDB 的数据以类似于 JSON 格式的二进制文档存储&#xff0c;通常称这种格式为Bson&#xff0c;Bson不仅支持JSON中已有的数据类型&#xff0c;还增加了一些额外的数据类型&#xff0c;例如日期和二进制数据&a…

【iOS】暑假第二周——网易云APP 仿写

目录 前言首页关于UINavigationBarAppearance “我的”账号夜间模式——多界面传值遇到的问题所用到的其他知识整理NSNotificationreloadData各种键盘模式 总结 前言 有了之前仿写ZARA的基础&#xff0c;本周我们仿写了网易云APP&#xff0c;在这里对多界面传值进行了首次应用—…

day15:一文弄懂名称空间与作用域

1. 命名关键字参数&#xff08;了解&#xff09; 命名关键字参数&#xff1a;在定义函数时&#xff0c;*后定义的参数&#xff0c;如下所示&#xff0c;称之为命名关键字参数 特点&#xff1a;①命名关键字实参必须按照keyvalue的形式为其传值 def func(x,y,*,a,b): # 其中&…

JS常用的5个时间插件

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

爬虫解析代码结构

在设计中加入一个顶层接口是有益的&#xff0c;特别是当您希望实现统一的接口来处理所有类型的排行榜数据时。这样做可以提供更好的灵活性和扩展性&#xff0c;同时保持代码的整洁和易于维护。 设计概述 接口: 定义一个 RankingDataCollector 接口&#xff0c;它定义了所有数…

【机器学习之深度学习】深度学习和机器学习的关系以及深度学习的应用场景

引言 深度学习和机器学习是人工智能领域的两个重要分支&#xff0c;它们之间既有联系也有区别 文章目录 引言一、深度学习和机器学习的关系1.1 联系1.2 区别1.2.1 模型复杂度1.2.2 数据需求1.2.3 特征提取1.2.4 训练速度和计算资源 二、深度学习有哪些应用场景2.1 计算机视觉2.…

编程-设计模式 3:单例模式

设计模式 3&#xff1a;单例模式 定义与目的 定义&#xff1a;单例模式确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。目的&#xff1a;这种模式通常用于那些需要频繁访问且只需一个实例的对象&#xff0c;例如配置管理器、日志记录器等。 实现示例…