【对比Python】针对累计值过滤
任务:找出销售额占到一半的前n个客户,并按销售额从大到小排序
Python
1 | import pandas as pd |
2 | sale_file = "E:\\txt\\sales_volume.csv" |
3 | sale_info = pd.read_csv(sale_file) |
4 | sale_info.sort_values(by='Amount',inplace=True,ascending=False) |
5 | half_amount = sale_info['Amount'].sum()/2 |
6 | vip_list = [] |
7 | amount = 0 |
8 | for client_info in sale_info.itertuples(): |
9 | amount += getattr(client_info, 'Amount') |
10 | if amount < half_amount: |
11 | vip_list.append(getattr(client_info, 'Client')) |
12 | else: |
13 | vip_list.append(getattr(client_info, 'Client')) |
14 | break |
15 | print(vip_list) |
Pandas没有现成的循环函数计算满足条件的位置,所以只能用for循环来完成计算。
集算器
A | ||
1 | E:\\txt\\sales_volume.csv | 数据存放路径 |
2 | =file(A1).import@tc().sort@z(Amount) | 导入数据并按Amount降序排序 |
3 | =A2.sum(Amount)/2 | 计算销售额总量的一半 |
4 | =A2.pselect(cum(Amount)>=A3) | 找到销售额超过一半的位置 |
5 | =A2.(Client).m(:A4) | 取该位置之前的客户名 |
集算器提倡使用循环函数计算,计算同时根据条件进行删选并记录位置信息。