bootstraptable中responsehandle获取数据缺失_Python中的向量化字符串操作

Python的一个使用优势是它在处理和操作字符串数据方面相对容易。

在此基础上Pandas提供了一套全面的向量化字符串操作(vectorized string operation),这些操作成为处理现实世界数据时所需的必不可少的功能。

在本文中,我们将介绍一些Pandas的字符串操作,然后学习如何使用它们来部分清理从互联网上收集的一个杂乱无章的食谱数据集进行局部清洗。

Pandas字符串操作介绍

我们在前面的章节中看到了像NumPy和Pandas这样的工具是如何将算术运算泛化的,这样我们就可以轻松快速地对多个数组元素进行相同的运算。例如

6410c111b52aec2dff775bff3f8a3fa2.png

这种向量化操作简化了对数据数组的操作语法:我们不再需要担心数组的长度或维度,而只需要担心我们所需要的操作。

然而,对于字符串数组,NumPy并没有提供这样简单的接口访问方式。所以我们只能使用比较占内存的for循环语法来解决问题。

c0f5e37686e0441153dfd06bd4f254a8.png

这也许足以有效应付一些数据,但如果数据中有任何缺失的值,那这样就会引起异常。例如:

476923f7dbfa5fb627a2f22fdd085736.png

Pandas的str属性堪称两全其美的方法。

它既可以做向量化的字符串操作的需求,也可以处理好缺失的数据。举个例子,假设我们用这个数据创建一个Pandas Series:

3559c7d70e345f6ffe52814275b7079b.png

现在我们可以调用转换大写方法capitalize( ),将所有字符串变成大写,同时跳过缺失值:

a035f94756c79a915ff3b63ff9ce1d24.png

在这个str属性上使用tab键(基础文章有概括如何使用tab键查看python方法)列出所有Pandas可用的向量化字符串方法

Pandas字符串方法列表

如果你对Python中的字符串操作很熟悉的话,那么就会发现Pandas绝大多数的字符串语法都是足够直观的,甚至可以列出一个可用的表格。从这里开始,我们将使用以下一系列名称来演示:

f7ed9de434c2a1f4efabe0084801af7f.png

  • 与Python字符串方法相似的方法

几乎所有Python内置的字符串方法都被复制到Pandas的向量化字符串方法中。下面是一个Pandas的str方法镜像Python字符串方法的列表:

0d872c2219630b11a2bdfb2c24399243.png

需要注意的是,这些函数有不同的返回值,比如 lower( ) 方法返回一个字符串Series:

f32148bc37fefae4128ff5ffdd551d6f.png

但还有些方法来返回数值:

96a717a34f183375cc79ba86d26c484f.png

有些方法可以返回布尔值:

a1212c5dfa5b2e5d61163e353a4b4028.png

还有一些则返回每个元素的列表或其他复合值的方法:

71193f729d5f3c1bc304d481c84df7df.png

我们将在接下来的讨论中,进一步来学习这类由列表元素构成的Series (series-of-lists)对象。

  • 使用正则表达式的方法

此外,还有一些支持正则表达式的方法可以用来处理每个字符串元素。下面表中内容是Pandas向量化字符串方法根据并遵循 Python标准库的re模块函数实现的API。

7a45d9974d1b7301524f08234a685bec.png

有了这些方法,你就可以进行各种有趣的操作了。例如,我们可以通过提取每个元素的前面的一组连续的字符来作为每个人的名字(first name):

8f0b8688718d371ef8a4176c7118f65e.png

我们也可以实现一些更复杂的操作,比如找到所有以辅音开头和结尾的名字——这可以利用字符串开始符号(^)和字符串结尾符号($)的正则表达式字符来实现:

ab7d44306745000cfd5db58cb8a37087.png

能够将正则表达式应用到Series与DataFrame之中的话,就有可能实现更多的数据分析和清洗方法。

  • 其他字符串方法

还有其他一些方法也可以实现方便的操作,如下表所列:

6683034f2ddbba2cb56a1744cd8078b2.png

  1. 向量化字符串的取值与切片操作。

需要特别指出的是,get( )和slice( )操作可以实现从每个字符串数组中获取向量化元素。例如,我们可以使用str.slice(0, 3)来获取每个字符串数组的前三个字符。通过Python的标准取值方法也可以取得同样的效果,例如,

df.str.slice(0,3)等价于df.str[0:3]:

defeab17d92e23c64a2246f45ef3274d.png

通过df.str.get(i)和df.str[i]进行索引也有同样类似的效果。

get( )和slice( )的操作还可以让你在split( )操作之后使用。例如,要提取每个名字的姓,我们可以结合使用split( )和get( ):

6a86eddd99d116722f738f3eed9a6d01.png

       2. 指标变量

另一个需要多花点时间额外解释的是get_dummies()方法。当你的数据中有一列包含了某种已被编码的指标(coded indicator)时,这个方法就派上用处了。例如,我们有一个数据集,其中包含了某种编码信息的数据集,如A="出生在美国",B="出生在英国",C="喜欢奶酪",D="喜欢垃圾邮件":

796ba494dcb829ce4dc6c6b2e8c7fd94.png

get_dummies( )方法可以让你快速将这些指标变量拆分到DataFrame中。

e1d30e95e61a7e41279c8fa3d20a9a2c.png

通过Pandas自带的这些字符串操作方法,你可以建立一个功能强大的字符串处理程序来清理数据了。

食谱数据库的案例

前面介绍的这些向量化字符串操作方法,在清理混乱的现实数据的过程中变得非常有用。

下面我将通过一个从网络上获取的公开食谱数据库例子进行讲解。

我们的目标将是把这些食谱数据解析成配料表,这样我们就可以根据我们手头的一些配料来快速找到一个食谱了。

获取数据的原文件可以在 https://github.com/fictivekin/openrecipes 上找到,当前最新版本的数据库链接也可以在那里找到。

截至2016年春季,这个数据库大约有30MB,可以用这些命令下载并解压:

568dad4d00afe091d59a931ce7ce6d5a.png

这个数据库是JSON格式的,所以我们将尝试通过 pd.read_json 来读取数据:

109b97e49c784160d00c0c1feafa46ad.png

我们竟然得到了一个提示数据里有"trailing data"(数据断行)的ValueError错误。

在CSDN上搜索这个错误的含义,知道原因是由于使用了一个文件,其中每一行本身就是一个有效的JSON对象,但完整的文件却不是这样的。我们来看看这个解释是否属实:

891b824eb55a144887bd77eca4f2a46c.png

显然每一行都是一个有效的JSON,所以我们需要将这些字符串连接起来。我们可以做到这一点的一种方法是构建一个包含所有这些JSON条目的字符串表示,然后再用 pd.read_json 来读取所有数据:

72a56587e266637388bfc5b79a14ed2e.png

我们看到有近20万个菜谱,还有17列。我们来抽一行看看具体内容:

c9c35055b79fb6e539dc644519581cf6.png

6546136fb1389b4777d1caf078fe9007.png

这里有很多信息,而且其中很多信息都是以一种非常混乱的形式存在,这是从网络上抓取的典型数据。

尤其是配料表是字符串格式的,我们要仔细提取我们感兴趣的信息。

我们先来仔细看看配料表:

15aaf91112b9bcfb0366f260def01132.png

食材表平均长250个字符,最短的字符串为0,最长的竟然有近万个字符!

出于好奇,我们来看看哪种配方的配料表最长:

6120987389bc4fb5c2afb905937b5483.png

这看起来肯定是一个绝对复杂的食谱。

我们还可以再做一些其他的探索;比如,我们看看有多少食谱是早餐类的:

eac51aae8384c4c89fe5af48b46e1b4d.png

或者说有多少食谱把肉桂(cinnamon)列为原料:

20631da1d8298d6c51900e06a9e6b4c5.png

我们甚至可以看看是否有食谱将原料拼错为 "cinamon":

bc4da93b03bff70576a3f9295916b47a.png

这是用Pandas字符串工具可以实现的基本数据探索类型。Python非常适合进行类似的数据清理工作。

  1.  制作简单的美食推荐系统

让我们更进一步,开始研究一个简单的菜谱推荐系统:给定一个食材清单,系统会推荐使用了所有这些食材的菜谱。

虽然概念上很简单,但由于大量不规则数据(heterogeneity)的存在,这个任务变得很复杂:例如,并没有一个简单直接的操作,可以从每一行中提取一个干净的食材列表。

因此,我们在这里简单处理一下:

首先,我们将从一个常见的成分列表开始,通过简单搜索,来看看它们是否在每个食谱的成分列表中。

为了简单起见,我们暂且只说香料和调味料:

83c9320e0b04f12ae164e9e841312396.png

然后,我们可以建立一个由True和False值组成的布尔类型 DataFrame,来判断这个原料是否出现在食谱列表中:

0f4cd9059818006cd334ace644ebccf4.png

现在,举个例子,假设我们想找到一个使用欧芹parsley、辣椒粉paprika和龙蒿tarragon这三种食材的食谱。

我们可以使用DataFrames的query( )方法来快速地计算出来。

b4d14f7721f5201d1eb0e058e1e98572.png

我们只找到了10个同时包含这个组合的菜谱,我们用这个选择返回的索引来发现含有这个组合的菜谱名称:

0bf3611218678fc00c98ce63de2472ce.png

现在,我们已经将食谱选择范围缩小到了原来近2万份食谱的两千分之一了,这样就可以更明智地决定我们中意的食谱了。

     2. 继续完善美食推荐系统

希望这个例子能让你对Pandas字符串方法可以高效解决哪些数据清问题有个初步概念。

当然,如果要建立一个非常强大稳定的菜谱推荐系统,还需要更多大量的工作!

从每个食谱中提取完整的配料表,将是一个这个任务的重中之重。

不过,由于使用的格式种类繁多,解析它们将是一个相对耗时的过程。

这也说明在数据分析中,对真实世界数据的清洗和整理工作往往会占据大部分的工作时间,而Pandas提供的工具可以帮助你高效地完成这项工作。

持续关注我们,了解如何使用Pandas高效完成这些工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

15 载专注视频增强技术,小而美的 Imint 蕴藏大匠心

如今视频已深深融入我们的生活和工作中,据 CNNIC 数据显示,截止 2021 年 6 月,我国网民的规模达 10.11 亿,其中短视频用户规模 8.88 亿,占网民整体的 87.8%。 这表明我们正步入“视频社会化”时代,随着人们…

Serverless Devs 2.0 全新发布,让 Serverless 应用开发更简单

简介: 2020 年 10 月 23日,阿里巴巴正式宣布开源其首个 Serverless 开发者平台 Serverless Devs。历经近一年精心打磨,今天 Serverless Devs 2.0 正式版全新发布。Serverless Devs 2.0 在平台能力、应用模板以及开发者套件方面能力提升&#…

疫情防控“漫入调查系统”上线 SENSORO 助力提升筛查效率及精准度

连日来,国内多地报告新增病例,加上因春节临近导致的人员流动和聚集增加,基层防疫面临着比平时更大的挑战。为快速、高效地解决大规模漫入信息筛查任务,缓解一线疫情防控压力,SENSORO(北京升哲科技有限公司&…

程序媛如何自我突破?

简介: 很多时候人们是被自己内心的偏见所打败的。作为一名程序媛,保持一种对世界、对人生的不同看法,可以帮助我们树立自己的参照系,不被外部轻易左右。或许我们无法像一些伟人那样打破、推动如此重大的社会认知,但是我…

如何基于Dataphin实现敏感数据保护

简介: 在企业的发展过程中,如果不重视敏感数据的保护,和数据安全体系的建设,那么一旦发生了敏感数据泄漏事件,轻则企业口碑受损,业务受影响;重则会直接触法律,受到主管部门的处罚和制…

百度研究院发布2022科技趋势预测:大模型实用化、AI助力深空探测成热门

1月25日,百度研究院发布2022年科技趋势预测,这是其连续第三年发布对前沿科技趋势的展望。 今年上榜的科技趋势预测涵盖了AI核心技术、交叉学科与跨领域研究,以及AI的产业及社会价值三个层面,包括预训练大模型、AI for Science&am…

计算机操作员技术特长,计算机及应用专业自我鉴定(通用5篇)

计算机及应用专业自我鉴定(通用5篇)自我鉴定是个人在一个阶段的自我总结,自我鉴定可以总结出具体的经验,因此我们是时候写一份自我鉴定了。自我鉴定一般是怎么写的呢?以下是小编收集整理的计算机及应用专业自我鉴定(通用5篇),仅供…

5 款阿里常用代码检测工具,免费用!

简介: 5 款阿里常用代码检测工具免费体验,仅需 2 步,Cherry键盘、公仔抱回家,100%拿奖! 作者 | 喻阳 面临问题 在日常研发过程中,我们通常面临的代码资产问题主要分为两大类:代码质量问题和代…

查看topic信息_如何规划的你博客文章主题(Topic)

产品有了, 写手有了。该写哪些主题,就成问题了。这篇文章,会结合真实案例,告诉大家,该如何规划自己的博客主题。(注意这里不是标题)。以我最近的一个项目, 游泳池产品为例。关键词叫…

DataWorks功能实践速览 — 参数透传

简介: DataWorks功能实践系列,帮助您解析业务实现过程中的痛点,提高业务功能使用效率! 往期回顾: DataWorks 功能实践速览01期——数据同步解决方案:为您介绍不同场景下可选的数据同步方案。DataWorks 功能…

GPU还是IPU?IPU 芯片厂商 Graphcore 的 2021

作者 | 宋慧 出品 | CSDN 云计算&AI 科技大本营 AI 人工智能毋庸置疑是目前最火的 IT 技术领域之一,而主攻图形计算的 NVIDIA GPU(图形处理器)又是现今 AI 领域的当红炸子鸡。不过 AI 芯片领域又迎来了新的挑战者,2016 年创立…

云原生大数据架构中实时计算维表和结果表的选型实践

简介: 随着互联网技术的日渐发展、数据规模的扩大与复杂的需求场景的产生,传统的大数据架构无法承载。 作者 | 志羽 来源 | 阿里技术公众号 一 前言 传统的大数据技术起源于 Google 三架马车 GFS、MapReduce、Bigtable,以及其衍生的开源分布…

冬奥开幕在即,现场通信网络技术深度揭秘!

作者 | 小枣君来源 | 鲜枣课堂还有9天,举世瞩目的北京冬奥会就将拉开大幕。本次冬奥会,是继2008年之后,中国再一次承办这种世界最顶级体育盛会。这两年全球疫情肆虐,抗疫形势波折多变。北京冬奥能够如期举办,意义极为重…

Flink 在 58 同城的应用与实践

简介: 58 同城的实时 SQL 建设以及如何从 Storm 迁移至 Flink。 本文整理自 58 同城实时计算平台负责人冯海涛在 Flink Forward Asia 2020 分享的议题《Flink 在 58 同城应用与实践》,内容包括: 实时计算平台架构实时 SQL 建设Storm 迁移 Fli…

当云原生遇到混合云:如何实现“求变”与“求稳”的平衡

简介: 多年来,随着云计算技术的蓬勃发展和落地,越来越多的企业选择采用云计算技术来帮助自己快速完成业务数字化转型,以便能更好地适应市场变化,进而赢得更大的市场空间。 作者|郝树伟 Flexera 的《RightScale2021 云…

之前写的 JSX 的条件语句竟然存在那么多 Bug?

作者 | 零一来源 | 前端印象今天的主题是&#xff1a;关于 JSX 的条件语句&#xff0c;你不知道3件事一、&&隐藏大坑在 JSX 里写条件语句&#xff0c;&& 应该是用的最多的了&#xff0c;例如&#xff1a;function Demo () {// ...省略一些代码return (<div&…

如何高效学习 Kubernetes 知识图谱?

简介&#xff1a; Kubernetes 知识图谱遵循云原生人才学习路径搭建课程体系框架&#xff0c;及人才发展路线设置不同阶段&#xff0c;由浅入深&#xff0c;帮助云原生人才学习容器基础、Kuternetes 网络、存储、资源对象、服务发现、应用编排与管理等 Kubernetes 完整技术栈内容…

中科院信工所经验_2021中科院信息工程研究所电子信息专业考研经验指导分享...

一、在计算机如此火热的今天&#xff0c;为什么选择要读研&#xff1f;我是一个乐观主义者&#xff0c;上大学以来我一直庆幸自己在高考结束填志愿的时候选择了计算机专业&#xff0c;更庆幸报考了湖南大学信息科学与工程学院&#xff0c;高考仅仅一分的优势把我送到了最美的学…

极验创始人吴渊:恶意流量威胁新趋势,揭秘网络黑产3大核心本质

记者 | 邓晓娟出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;天下没有免费的午餐&#xff0c;更没有免费的流量。以电商为例&#xff0c;最疯狂的时候&#xff0c;某电商平台单个获客成本接近400元。作为互联网的稀缺资源&#xff0c;流量的成本不断冲击着…

如何将一棵LSM-Tree塞进NVM

简介&#xff1a; 随着非易失内存产品的商业化推广&#xff0c;我们对于其在云原生数据库中大规模推广的潜力越来越有兴趣。X-Engine是阿里云数据库产品事业部PolarDB新型存储引擎团队研发的一个LSM-tree存储引擎&#xff0c;目前在阿里云PolarDB产品上提供对外服务。我们以X-E…