使用 Python 从文本(在 CSV 文件中)中提取数据

绒毛猫

我正在帮助一个狗救援小组分析他们收到的收养申请。所有的申请都通过一个在线系统提交,每个申请都有一个自动生成的表格 ID。然后将申请分配给不同的志愿者进行处理。

大多数信息都很简单,我可以使用 Pandas 轻松处理。部分分析是关于每个申请的处理时间。这意味着从申请创建之日起(表格状态为“已提交”)到狗被采用(表格状态为“已采用”)。当我导出表单数据时,状态更改和一般评论混合在一个名为“评论(内联)”的标题下。

以下是一个应用程序的状态更改/评论的缩略示例。

一个应用程序的缩略视图

文本遵循一些基本模式。

一般评论:CURRENT_PERSON(名字)写于 DATE:文本

志愿者的变化:CURRENT_PERSON(名字)写于 DATE:分配表格给 NEW_PERSON(first last)

表单状态更改:CURRENT_PERSON(名字)写于 DATE:已将状态从 CURRENT_STATUS 更改为 NEW_STATUS

我是 python 的新手(~3mos)。想到的第一件事是使用python和正则表达式来解析文本,提取数据,并将它们分成两组(一组用于一般评论,一组用于状态更改)。这将需要一些时间,因为我仍在学习,但这似乎是可行的。最终结果将是这样的。

可能的结果

可以多次分配相同的状态,因此我需要给它们一个编号。然后我可以将处理时间计算为 Adapted-01 和 Submitted-01 之间的天数。

但是,从我到目前为止所了解的情况来看,使用这种类型的迭代(for 循环)似乎很慢,不推荐使用。到目前为止,我有大约 1500 份表格,而且数量只会增加。

我应该继续使用python和re吗?或者有没有更好的方法来获得我所描述的?我坚信有一种更好的方法,我只是还不够了解。

非常感谢您的建议。

更新

此处为 CSV 文件中的示例数据此处为 XML 文件中的示例数据

你会在里面找到四个名字:Jenny White、Rose Burk、Kerry James、Henry Woods。

我意识到文本 CSV 文件并不像我想象的那么干净。评论或状态更改之间没有空格。即使有模式,也并不总是一致的(只有名字与全名)。我更新了模式。导出为 CSV 后,您将看到以下内容

Henry 于 2020 年 9 月 22 日写道:将表格分配给 Rose Burk Rose 于 2020 年 9 月 22 日写道:发送介绍电子邮件。

变成了

Henry 于 2020 年 9 月 22 日写道:将表格分配给 Rose BurkRose 于 2020 年 9 月 22 日写道:发送介绍电子邮件。

现在我还需要更多地考虑清理数据。谢谢参观。

绒毛猫

所以我想出了如何使用正则表达式来处理基于模式的评论。

下面这个可以获取所有不同的日期和所有状态,因为它们都有“更改状态自”部分,我可以将单个组与旧状态还是新状态进行匹配。

regex = r"(\d{1,2}\/\d{1,2}\/\d{4})\:\sChanged\sStatus\sfrom\s([A-Z][a-z]+(\s[a-z]+)?(\s[A-Z][a-z]+)?)\sto\s([A-Z][a-z]+(\s[a-z]+)?(\s[A-Z][a-z]+)?)"

如果我只关注已采用,这个可以抓住我需要的日期。

regex = r"(\d{1,2}\/\d{1,2}\/\d{4})\:\sChanged\sStatus\sfrom\s([A-Z][a-z]+(\s[a-z]+)?(\s[A-Z][a-z]+)?)\sto\sAdopted(?!\sElsewhere)

另外,我不需要使用 for 循环。在关注采用日期的特定情况下,我可以使用以下内容将采用日期添加到 Jupyter 笔记本中的数据框中。

df['Adopted']=df['Comments (inline)'].str.extract(r'(\d{1,2}\/\d{1,2}\/\d{4})\:\sChanged\sStatus\sfrom\s[A-Z][a-z]+(\s[a-z]+)?(\s[A-Z][a-z]+)?\sto\sAdopted(?!\sElsewhere)')

这也意味着我可以只使用原始 CSV 文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Python从文本文件中提取特定数据并写入CSV

使用python中的PDFMiner从PDF文件中提取文本?

使用Python从HTML文件中提取文本

使用python3中的tarfile模块从tar中提取文本文件

使用PowerShell从CSV文件中提取数据

在Python中使用URLLIB从在线CSV文件中提取数据

使用Python从大型非结构化文本文件中提取数据元素

使用python从csv文件中提取部分数据

使用BeautifulSoup / Python从html文件中提取文本

如何使用findall函数从python中的文本文件中提取特定的url

使用Python从CSV文件中提取列数据

使用python从多个元数据文件中提取特定文本

使用Python从文本文件中提取数据并写入新文件

从文本文件中提取数据到csv

使用Python从CSV文件中提取变量名称和数据

如何使用python从字节文件中提取文本

使用python从多个文本文件中提取数据

使用Python从文本文件中提取数值

使用Python将文本中的部分数据提取到csv中

使用Python从JATS XML文件中提取文本

从python 3中的文本文件中提取数据

使用Python从多个文本文件中的多个字典中提取键值对

使用 Python 从 CSV 文件中提取信息/清理数据

使用python从文本文件中提取数据

如何使用python将每行文本提取到数据框或csv中

如何使用python从文件夹中的pdf中提取文本并将它们保存在数据框中?

使用python从文本/javascript中提取数据

使用python从文本文件中的特定模式中提取文本

如何从 PDF 文件中提取文本并使用 python 保存为 CSV