【对比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(…) 取出结果

与内存运算不同的是,游标只能遍历一次,上述排序分组运算只能执行某一个,再执行另一个时需要重建游标。

网站地图