查看原文
其他

使用流水线pipeline模式设计并处理数据

大邓 大邓和他的Python
2024-09-09

一、任务

在jupyter内进行数据分析,大家都有一种流水线的感觉。从上往下,每一行(坨)代码会解决一个小问题,最终联合在一起解决一个大问题。

例如文本分析,这里仅以text一句话为例,完整的预处理流程

  1. 大写转小写
  2. 剔除回车
  3. 剔除开头结尾的空格

这个预处理任务很简单, 实现方法有以下三种


二、实现方法

  1. 一坨代码一锅端
  2. 只为你量身定做一个函数
  3. 可拆可组装的流水线

2.1 一坨代码一锅端

刚刚学编程,写数据分析代码都是这种style, 可阅读性差,代码扩展性最差。如果遇到的任务像今天这样简单,是最高效的解决办法。但是如果任务变复杂,可扩展性就降低了,会返回造轮子。

text = " Python is powerful, so let's go!\n "

#大写转小写
text = text.lower()

#剔除回车
text = text.replace('\n''')

#剔除开头结尾的空格
text = text.strip()

text

Run

"python is powerful, so let's go!"

2.2 一个函数搞定

相比一坨代码,一个函数的可阅读性更高一些。代码能够复用的可能,但是遇到复杂任务时, 可扩展性依然较低。

text = " Python is powerful, so let's go!\n"

def clean(text):
    #大写转小写
    text = text.lower()
    #剔除回车
    text = text.replace('\n''')
    #剔除开头结尾的空格
    text = text.strip()
    return text

clean(text)

Run

 "python is powerful, so let's go!"

2.3 设计成流水线

拆解成三个环节函数,并组织成一个流水线。可读性和代码可扩展性大大提高,能轻松应对不同复杂度任务。代价仅仅是多写几行代码。首先需要安装一个实现流水线功能的fastcore库。

安装命令

!pip3 install fastcore

设计的三个环节函数,使用fastcore库的Pipeline来组织成一个流水线。代码

from fastcore.transform import Pipeline


def lower(text):
    #变小写
    return text.lower()

def remove_(text):
    #剔除回车
    return text.replace('\n''')

def strip(text):
    #剔除开头结尾的空格
    return text.strip()

text = " Python is powerful, so let's go!\n"

#将环节函数组织成一个流水线
pipe = Pipeline([lower, remove_, strip])
pipe(text)

Run

"python is powerful, so let's go!"

三、快速响应

如果预处理任务只需要lower和strip, 新的流水线可以快速装配需要的环节函数, 以应对新的预处理任务。

text = " Python is powerful, so let's go!"

#将环节函数组织成一个流水线
pipe2 = Pipeline([lower, strip])
pipe2(text)

Run

"python is powerful, so let's go!"


精选文章

管理世界 | 使用文本分析词构建并测量短视主义

管理世界 | 使用 「经营讨论与分析」 测量 「企业数字化指标」

支持开票 | Python实证指标构建与文本分析

PNAS | 文本网络分析&文化桥梁Python代码实现

PNAS | 使用语义距离测量一个人的「创新力(发散思维)得分

MS | 使用网络算法识别『创新的颠覆性与否

金融研究 | 文本相似度计算与可视化

金融研究 | 使用Python构建「关键审计事项信息含量」

视频分享 | 文本分析在经管研究中的应用

转载 | 金融学文本大数据挖掘方法与研究进展

文本分析 | 「MD&A信息含量」指标构建代码实现

可视化 | 绘制《三体》人物关系网络图

长期征稿 | 欢迎各位前来投稿

17G数据集 | 深交所企业社会责任报告

70G数据集 | 上市公司定期报告数据集

27G数据集 | 使用Python对27G招股说明书进行文本分析

数据集 | 585w企业工商注册信息

数据集 | 90w条中国上市「公司高管数据

可视化 | 绘制《三体》人物关系网络图

认知的测量 | 向量距离vs语义投影

Asent库 | 英文文本数据情感分析

tomotopy | 速度最快的LDA主题模型

100min视频 | Python文本分析与会计

安装python包出现报错:Microsoft Visual 14.0 or greater is required. 怎么办?

如何正确读入文本数据不乱码(解决文本乱码问题)

Faker库 | 生成实验数据

使用R语言绘制文本数据情感历时趋势图

NiceGUI库 | 简单易懂的Web GUI开发包;可开发数据标注工具、心理学实验工具等

CheatSheet | Python文本数据处理速查表

pandas | 使用 df.query 字符串表达式进行数据筛选

继续滑动看下一个
大邓和他的Python
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存