编程语言|plydata库 | 数据操作管道操作符>>
腾讯课堂 | Python网络爬虫与文本分析plydata是一个提供数据处理语法的Python库,借鉴了R语言dplyr,tidyr和forcats等包中的管道操作符。
plydata使用
>>运算符
作为管道符号,或者使用ply(data,* verbs)
函数代替 >>
, 目前仅支持对pandas.DataFrame数据进行操作。安装
pip install plydata
快速上手
import pandas as pd
from plydata import define, query, if_else, plydf = pd.DataFrame({
'x': [0, 1, 2, 3],
'y': ['zero', 'one', 'two', 'three']})df
x | y | |
---|---|---|
0 | 0 | zero |
1 | 1 | one |
2 | 2 | two |
3 | 3 | three |
define define函数名很简单,定义变量或者操作变量。
define(data, *args,**kwargs)
- data 待操作的dataframe数据
- args、kwargs 操作过程及结果。
define(df, z='x')
x | y | z | |
---|---|---|---|
0 | 0 | zero | 0 |
1 | 1 | one | 1 |
2 | 2 | two | 2 |
3 | 3 | three | 3 |
注意: df中有x列,所以这里的使用的'x',而不是x。
>>管道符 刚刚的问题可以使用管道符实现与define(df, z='x')相同的功能。
#等同于df['z']=df['x']
#等同于define(df, z='x')
df >> define(z='x')
x | y | z | |
---|---|---|---|
0 | 0 | zero | 0 |
1 | 1 | one | 1 |
2 | 2 | two | 2 |
3 | 3 | three | 3 |
如果有多个环节,可以用括号包裹住,环节与环节用
>>
和换行
前后衔接。比如我们有多个操作,每一步操作如下
m=2x
n=m*m
q=m+n
(df
>> define(m='2*x')
>> define(n='m*m')
>> define(q='m+n')
)
x | y | m | n | q | |
---|---|---|---|---|---|
0 | 0 | zero | 0 | 0 | 0 |
1 | 1 | one | 2 | 4 | 6 |
2 | 2 | two | 4 | 16 | 20 |
3 | 3 | three | 6 | 36 | 42 |
上面所有的plydata相关操作不会修改原始数据df
df
x | y | |
---|---|---|
0 | 0 | zero |
1 | 1 | one |
2 | 2 | two |
3 | 3 | three |
if_else 在df中新建z列,z的值满足
- 【编程语言|plydata库 | 数据操作管道操作符>>】当x大于1,z为1
- 当x小于等于1, z为0
- predicate 逻辑判断条件字符串
- true_value 满足逻辑条件返回的值
- false_value 不满足逻辑条件返回的值
#等同于define(df, z=if_else('x>1', 1, 0))
df >> define(z=if_else('x>1', 1, 0))
x | y | z | |
---|---|---|---|
0 | 0 | zero | 0 |
1 | 1 | one | 0 |
2 | 2 | two | 1 |
3 | 3 | three | 1 |
query query(data, expr)
- data 待查询的dataframe数据
- expr 查询条件字符串
(df
>> define(z=if_else('x>1', 1, 0))
>> query('z==1')
)
x | z | |
---|---|---|
80 | 1.007324 | 1 |
81 | 1.019916 | 1 |
82 | 1.032507 | 1 |
83 | 1.045099 | 1 |
84 | 1.057691 | 1 |
... | ... | ... |
495 | 6.232819 | 1 |
496 | 6.245411 | 1 |
497 | 6.258002 | 1 |
498 | 6.270594 | 1 |
499 | 6.283185 | 1 |
ply() ply功能等同于管道符>>, 刚刚上面的代码
(df
>> define(z=if_else('x>1', 1, 0))
>> query('z==1')
)
可以用ply
ply(df,
define(z=if_else('x > 1', 1, 0)),
query('z == 1')
)
x | y | z | |
---|---|---|---|
2 | 2 | two | 1 |
3 | 3 | three | 1 |
plydata与plotnine 在R语言中,用ggplot2作图经常会用到管道符。而在Python中,plydata提供管道符,可以与作图库plotnine结合使用。对ggplot2感兴趣的可以看这篇文章。
plotnine: Python版的ggplot2作图库
from plotnine import ggplot, geom_line, aes
from plydata import define, if_else
import numpy as npdf = pd.DataFrame({'x': np.linspace(0, 2*np.pi, 500)})
(df
>> define(y='np.sin(x)')
>> define(sign=if_else('y>=0', '"pos"', '"neg"'))
>> (ggplot(aes(x='x',
y='y',
color='sign'))+
geom_line(size=1.5))
)
文章图片
>_第1张图片" style="border:1px solid black; ">
近期文章
[更新] Python网络爬虫与文本数据分析
rpy2库 | 在jupyter中调用R语言代码七夕礼物 | 全网最火的钉子绕线图制作教程读完本文你就了解什么是文本分析文本分析在经管领域中的应用概述
综述:文本分析在市场营销研究中的应用plotnine: Python版的ggplot2作图库
小案例: Pandas的apply方法
stylecloud:简洁易用的词云库
用Python绘制近20年地方财政收入变迁史视频
Wow~70G上市公司定期报告数据集漂亮~pandas可以无缝衔接Bokeh
YelpDaset: 酒店管理类数据集10+G
后台回复关键词【20200819】获取本文代码和数据
- “分享”和“在看”是更好的支持!
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 太平之莲
- thinkphp|thinkphp 3.2 如何调用第三方类库
- 我正在参加安特思库共读一本书干法。
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 现役联盟前十怎么排(詹姆斯榜首无悬念!杜兰特库里位置不确定!)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 数据库设计与优化
- 数据库总结语句
- py连接mysql