博客
关于我
python_链式编程技术_管道技术
阅读量:386 次
发布时间:2019-03-05

本文共 1004 字,大约阅读时间需要 3 分钟。

链式编程技术与管道技术

在处理数据集时,经常会发现多次变换后产生的临时变量实际上并未在分析中使用。例如:

df = load_data()df2 = df[df['col2'] < 0]df2['col1_demeaned'] = df2['col1'] - df2['col1'].mean()result = df2.groupby('key').col1_demeaned.std()

虽然这段代码没有使用真实数据,但它揭示了一些新的方法。首先,DataFrame.assign 是一种类似 df[k] = v 的函数式方法,可以用来对 DataFrame 进行列赋值。它的使用方式是返回修改后的新 DataFrame,而不是在原 DataFrame 上进行修改。因此,以下两种写法是等价的:

# 常规非函数式写法df2 = df.copy()df2['k'] = v# 函数式写法df2 = df.assign(k=v)

在链式编程中,需要注意临时对象的使用。例如:

df = load_data()result = (df          .pipe(f, arg1=v1)          .pipe(g, v2, arg3=v3)          .pipe(h, arg4=v4))

df.pipe(f) 与 f(df) 是等价的,但 pipe 方法使链式编程更加便捷。此外,pipe 也可以接受类似函数的参数,即可调用的对象(callable),这对于复用操作非常有用。

在处理分组数据时,以下方法可以有效地将操作转换为可复用的函数:

def group_demean(df, by, cols):    result = df.copy()    g = df.groupby(by)    for c in cols:        result[c] = df[c] - g[c].transform('mean')    return result

可以通过以下方式使用:

result = (df          .pipe(group_demean, ['key1', 'key2'], ['col1'])          .groupby('key')          .col1_demeaned.std())

通过这种方式,链式编程使得数据转换更加灵活和可读。

转载地址:http://fnrg.baihongyu.com/

你可能感兴趣的文章
Python3.1-网格模拟概念性问题
查看>>
Python3.12 解决conda环境libstdc++版本过低问题
查看>>
python3.2批量查询IP地址区域
查看>>
Python3.5中协程和未来/任务之间的区别?
查看>>
python3.5实现socket通讯(TCP)
查看>>
python3.6 ubuntu部署nginx、 uwsgi、 django
查看>>
Python3.6.3中,functools似乎不能用
查看>>
python3.6.5+cuda9+cudnn7.1+win10+tensorflow-gpu1.9.0下载配置
查看>>
python3.6使用pickle序列化class
查看>>
python3.6入门到高阶(全栈) day027 网络通信协议 osi七层模型
查看>>
Python3.6属性错误:模块‘;异步没有属性‘;运行‘;
查看>>
python3.6版本中的python-weka-wrapper安装失败,错误代码为%1
查看>>
Python3.7安装cv2踩过的坑
查看>>
python写txt文件
查看>>
python关于sorted排序函数详细解析 附实战代码(全)
查看>>
python3.8调用m文件,调用matlab
查看>>
python3.9新特性_Python 3.9 新特性速览
查看>>
Python3.x:遍历select下拉框获取value值
查看>>
python360百科_11月编程排行榜:Python超过Java成第二
查看>>
Python关于Paginator分页函数详细解析 附实战代码
查看>>