查看原文
其他

Clumper库 | 常用的数据操作函数

大邓 大邓和他的Python 2022-07-09

2021暑期 | 结构模型、Stata实证前沿、Python数据挖掘暑假工作坊

前天分享了 Clumper | dplyr式的Python数据操作包,其实Clumper有点跟之前的 

plydata库 | 数据操作管道操作符>>  ,感兴趣的同学可以一起复习一下。

今天我们学习Clumper的常用操作函数。


Keep

keep函数可以从原始数据中抽取符合指定条件的子集。

from clumper import Clumper

list_dicts = [{'a'1}, 
              {'a'2}, 
              {'a'3}, 
              {'a'4}]

(Clumper(list_dicts)
 .keep(lambda d: d['a'] >= 3)
 .collect()  #试一试去掉.collect()后的效果
)
[{'a': 3},
{'a': 4}]

可以实现缺失值处理,以不同的方式实现pandas的.dropna()的功能。

from clumper import Clumper

data = [
    {"a"1"b"4},
    {"a"2"b"3},
    {"a"3"b"2},
    {"a"4},
]

#只保留含有b的字段
(Clumper(data)
 .keep(lambda d: 'b' in d.keys())
 .collect()
)
[{'a': 1, 'b': 4},
{'a': 2, 'b': 3},
{'a': 3, 'b': 2}]

Mutate

mutate可以在每条记录中,创建新字段、改写旧字段。

from clumper import Clumper

list_dicts = [
    {'a'1'b'2},
    {'a'2'b'3'c':4},
    {'a'1'b'6}]

#新建了c和s字段
(Clumper(list_dicts)
 .mutate(c=lambda d: d['a'] + d['b'],
         s=lambda d: d['a'] + d['b'] + d['c'])
 .collect()
)
[{'a': 1, 'b': 2, 'c': 3, 's': 6},
{'a': 2, 'b': 3, 'c': 5, 's': 10},
{'a': 1, 'b': 6, 'c': 7, 's': 14}]

Sort

sort可以实现排序 

from clumper import Clumper

list_dicts = [
    {'a'1'b'2},
    {'a'3'b'3},
    {'a'2'b'1}]

(Clumper(list_dicts)
  .sort(lambda d: d['b']) #默认升序
  .collect()
)
[{'a': 2, 'b': 1},
{'a': 1, 'b': 2},
{'a': 3, 'b': 3}]

Select

select挑选每条记录中的某个(些)字段 

from clumper import Clumper

list_dicts = [
    {'a'1'b'2},
    {'a'2'b'3'c':4},
    {'a'1'b'6}]

(Clumper(list_dicts)
 .select('a')
 .collect()
)
[{'a': 1},
{'a': 2},
{'a': 1}]

Drop

剔除某个(些)字段。

from clumper import Clumper

list_dicts = [
    {'a'1'b'2},
    {'a'2'b'3'c':4},
    {'a'1'b'6}]

(Clumper(list_dicts)
 .drop('c')
 .collect()
)
[{'a': 1, 'b': 2},
{'a': 2, 'b': 3},
{'a': 1, 'b': 6}]

GroupBy

根据某个(些)字段对数据集进行分组,得到不同Group类的集合。一般与.agg()方法联合使用。

from clumper import Clumper

grade_dicts = [
    {'gender''男''grade'98'name''张三'},
    {'gender''女''grade'88'name''王五'},
    {'gender''女''grade'99'name''赵六'},
    {'gender''男''grade'58'name''李四'}]

(Clumper(grade_dicts)
 .group_by("gender")
 .groups==('gender', )
)
True

Ungroup

GroupBy的反操作

from clumper import Clumper

grade_dicts = [
    {'gender''男''grade'98'name''张三'},
    {'gender''女''grade'88'name''王五'},
    {'gender''女''grade'99'name''赵六'},
    {'gender''男''grade'58'name''李四'}]

(Clumper(grade_dicts)
 .group_by("gender")
 .ungroup().groups == tuple()
)
True

精选文章

腾讯课堂 | Python网络爬虫与文本分析
B站视频 | Python自动化办公
语法最简单的微博通用爬虫weibo_crawler
发布一个智能解析算法库
hiResearch 定义自己的科研首页
Clumper | dplyr式的Python数据操作包
大邓github汇总, 觉得有用记得star
multistop ~ 多语言停用词库
Jaal 库 轻松绘制动态社交网络关系图
SciencePlots | 科研样式绘图库
使用streamlit上线中文文本分析网站
爬虫实战 | 采集&可视化知乎问题的回答
Clumper | dplyr式的Python数据操作包
plydata库 | 数据操作管道操作符>>
plotnine: Python版的ggplot2作图库
读完本文你就了解什么是文本分析
文本分析在经管领域中的应用概述  
综述:文本分析在市场营销研究中的应用
plotnine: Python版的ggplot2作图库
Wow~70G上市公司定期报告数据集
漂亮~pandas可以无缝衔接Bokeh  
YelpDaset: 酒店管理类数据集10+G 

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

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