查看原文
其他

Clumper库 | 其他数据分析

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

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


Clumper前期文章

Clumper | dplyr式的Python数据操作包

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

Clumper库 | Groupby具体案例用法

连接语法

如果想将多个记录整理到一个记录中,有很多种实现方法。

Concat

如果想垂直方向将多个记录堆叠,可以使用concat

from clumper import Clumper

c1 = Clumper([{"a"1}])
c2 = Clumper([{"a"2}])
c3 = Clumper([{"a"3}])

c1.concat(c2).collect()
[{'a': 1}, {'a': 2}]
#等同于c1.concat(c2).concat(c3).collect()
c1.concat(c2, c3).collect()
[{'a': 1}, {'a': 2}, {'a': 3}]

Joins

Joins类似于数学里的交集、并集的,大致有以下四种,

left join

左连接,以左为主,表示以table1为主,关联上table2的数据,结果显示table1的所有数据,然后table2显示的是和table1有交集部分的数据。

from clumper import Clumper

left = Clumper([
    {"a"1"b"4},
    {"a"2"b"6},
    {"a"3"b"8},
])

right = Clumper([
    {"c"9"b"4},
    {"c"8"b"5},
    {"c"7"b"6},
])

#根据b进行左右两表的合并
result = left.inner_join(right, mapping={"b""b"})
result.collect()
[{'a': 1, 'b': 4, 'c': 9}, {'a': 2, 'b': 6, 'c': 7}]

inner join

内连接, 交集

from clumper import Clumper

left = Clumper([
    {"a"1"b":4},
    {"a"2"b":6},
    {"a"3"b":8},
])

right = Clumper([
    {"c"9"b":4},
    {"c"8"b":5},
    {"c"7"b":6},
])


result = left.inner_join(right, mapping={"b""b"})
result.collect()
[{'a': 1, 'b': 4, 'c': 9}, {'a': 2, 'b': 6, 'c': 7}]



Nested Data

由于嵌套数据序列确实具有各种形状和大小,因此该库提供了各种方法来帮助您将数据重塑为不同的格式。本文档将演示这些方法的工作原理。

Explode

炸裂(展开)

from clumper import Clumper

data = [{'gender''男'
         'grade': [8099], 
         'name':['张三''李四']}]

(Clumper(data)
 .explode('name''grade')
 .collect()
)
[{'gender': '男', 'grade': 80, 'name': '张三'},
{'gender': '男', 'grade': 99, 'name': '张三'},
{'gender': '男', 'grade': 80, 'name': '李四'},
{'gender': '男', 'grade': 99, 'name': '李四'}]

from clumper import Clumper


data = [{'gender''男'
         'grade': [8099], 
         'name':['张三''李四']}]

#.explode('name', 'grade')略微有些区别
#请查看两者运行结果
(Clumper(data)
 .explode(item='name', val='grade')
 .collect()
)
[{'gender': '男', 'item': '张三', 'val': 80},
{'gender': '男', 'item': '张三', 'val': 99},
{'gender': '男', 'item': '李四', 'val': 80},
{'gender': '男', 'item': '李四', 'val': 99}]

Unpack

与explode类似

from clumper import Clumper

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

(Clumper(list_dicts)
 .unpack('rows')
 .collect()
)
[{'a': 1, 'b': 2, 'c': 3},
{'a': 1, 'b': 3},
{'a': 1, 'b': 4}]

Flatten keys

from clumper import Clumper

data = {
  'feature_1': {'propery_1'1'property_2'2},
  'feature_2': {'propery_1'3'property_2'4},
  'feature_3': {'propery_1'5'property_2'6},
}


(Clumper(data, listify=False)
 .flatten_keys()
 .collect() 
)
[{'propery_1': 1, 'property_2': 2, 'key': 'feature_1'},
{'propery_1': 3, 'property_2': 4, 'key': 'feature_2'},
{'propery_1': 5, 'property_2': 6, 'key': 'feature_3'}]



Summary Methods

Clumper支持常用的统计性方法,诸如mean、max、min等

mean

from clumper import Clumper

list_of_dicts = [
    {'a'7},
    {'a'2'b'7},
    {'a'3'b'6},
    {'a'2'b'7}
]

Clumper(list_of_dicts).mean("a")
3.5

Clumper(list_of_dicts).mean("b")
6.666666666666667

count

统计记录数

from clumper import Clumper

list_of_dicts = [
    {'a'7},
    {'a'2'b'7},
    {'a'3'b'6},
    {'a'2'b'7}
]

#含有a的一共有多少条记录
Clumper(list_of_dicts).count("a")
4

Clumper(list_of_dicts).count("b")
3

unique

汇总某字段不重样的值的种类,如[a, b, a, a],经过unique后,返回[a, b]

from clumper import Clumper

list_of_dicts = [{'a'7},    
                 {'a'2'b'7},    
                 {'a'3'b'6},    
                 {'a'2'b'7}]

Clumper(list_of_dicts).unique("a")
[2, 3, 7]

Clumper(list_of_dicts).unique("b")
[6, 7]

n_unique

统计某字段对应的值一种有多少种

from clumper import Clumper

list_of_dicts = [
    {'a'7},
    {'a'2'b'7},
    {'a'3'b'6},
    {'a'2'b'7}
]

Clumper(list_of_dicts).n_unique("a")
3

Clumper(list_of_dicts).n_unique("b")
2

min

from clumper import Clumper

list_of_dicts = [{'a'7},    
                 {'a'2'b'7},    
                 {'a'3'b'6},    
                 {'a'2'b'7}]

Clumper(list_of_dicts).min("a")
2

Clumper(list_of_dicts).min("b")
6

max

from clumper import Clumper

list_of_dicts = [{'a'7},    
                 {'a'2'b'7},    
                 {'a'3'b'6},    
                 {'a'2'b'7}]

Clumper(list_of_dicts).max("a")
7

Clumper(list_of_dicts).max("b")
7

精选文章

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

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

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