【对比Python】常规运算
任务:从文本中找出男25岁以上、女23岁以上的人:1) 按姓名排序列出;2) 按性别分组计算平均年龄; 3) 列出所有出现过的姓氏(不考虑复姓)
Python
1 | import pandas as pd |
2 | file = "D.csv" |
3 | data=pd.read_csv(file) |
4 | data_select = data[((data['sex']=='男')&(data['age']>=25))|((data['sex']=='女')&(data['age']>=23))] |
5 | data_sort = data.sort_values('name') |
6 | data_group = data.groupby('sex')['age'].mean() |
7 | data['sur'] = data['name'].apply(lambda x:x[0]) |
8 | data_distinct = data.drop_duplicates(['sur']) |
Pandas去重需要重建一列才可以去重。
集算器
A | ||
1 | =file("D.csv").import@t(name,sex,age;",") | |
2 | =A1.select(sex=="男"&&age>=25||sex=="女"&&age>=23) | 过滤 |
3 | =A2.sort(name) | 排序 |
4 | =A2.groups(sex;avg(age):age) | 分组汇总 |
5 | =A2.id(left(name,1)) | 唯一值 |
集算器提供了丰富的结构化计算功能,一定程度上可以将文本作为数据库表进行运算,在无数据库的场景下也能获得类似SQL的计算能力。
数据量大时,Pandas就只能分段取出数据后,自己进行计算和归并,代码量和计算量将陡增。
数据量大时这些计算也可以基于游标工作:
A | ||
1 | =file("D.csv").cursor@tm(name,sex,age;",") | |
2 | =A1.select(sex=="男"&&age>=25||sex=="女"&&age>=23) | 过滤 |
3 | =A2.sortx(name) | 排序 |
4 | =A2.groups(sex;avg(age):age) | 分组汇总 |
5 | =A2.groupx(left(name,1);) | 唯一值 |
6 | =A3.fetch(…) | 取出结果 |
与内存运算不同的是,游标只能遍历一次,上述排序分组运算只能执行某一个,再执行另一个时需要重建游标。