原文在这里:
https://mp.weixin.qq.com/s/8gPEQzloDwWL_QB0uu5ulA
代码在这里
import pandas as pd
case1 = pd.read_excel("./2.条件求和.xlsx",sheet_name = "表1")
case1
客户 区域 2017销售额 2018销售额
0 广东A公司 南区 268 119
1 广东B公司 南区 265 217
2 北京C公司 北区 182 206
3 北京D公司 北区 97 214
4 天津E公司 北区 237 233
5 重庆F公司 南区 121 68
6 成都G公司 南区 105 151
7 贵阳H公司 南区 191 226
case1_1_1 = case1[case1["区域"]=="南区"]
case1_1_1
客户 区域 2017销售额 2018销售额
0 广东A公司 南区 268 119
1 广东B公司 南区 265 217
5 重庆F公司 南区 121 68
6 成都G公司 南区 105 151
7 贵阳H公司 南区 191 226
case1_1_1["2017销售额"].sum()
950
case1_1_1["2018销售额"].sum()
781
case1_2_1 = case1[(case1["区域"]=="北区") & (case1["2017销售额"]>100)]
case1_2_1
客户 区域 2017销售额 2018销售额
2 北京C公司 北区 182 206
4 天津E公司 北区 237 233
case1_2_1["2017销售额"].sum()
419
case1_2_2 = case1[(case1["区域"]=="北区") & (case1["2018销售额"]>100)]
case1_2_2
客户 区域 2017销售额 2018销售额
2 北京C公司 北区 182 206
3 北京D公司 北区 97 214
4 天津E公司 北区 237 233
case1_2_2["2018销售额"].sum()
653
case1_3_1 = case1[(case1["客户"].str.contains("广东")) | (case1["客户"].str.contains("天津"))]
case1_3_1
客户 区域 2017销售额 2018销售额
0 广东A公司 南区 268 119
1 广东B公司 南区 265 217
4 天津E公司 北区 237 233
case1_3_1["2017销售额"].sum()
770
case1_3_1["2018销售额"].sum()
569
遇到的问题在这里
1、我把表格原文件都放在文稿里了(MAC系统)
2、中英文字符问题:表格里有中文名称,所以切换输入法的时候需要注意,尤其是双引号和小括号。双引号输对了是绿色(我用的shell),英文小括号旁边没有自动的空格,间距较小。
3、分清case1,case1_1_1,case1_2_1
4、理解清楚代码
用自己的语言解释代码
以下是我自己的解释,不一定符合python语法规范,仅供参考。
1、将表格放入case1
import pandas as pd
case1 = pd.read_excel("./2.条件求和.xlsx",sheet_name = "表1")
case1
客户 区域 2017销售额 2018销售额
0 广东A公司 南区 268 119
1 广东B公司 南区 265 217
2 北京C公司 北区 182 206
3 北京D公司 北区 97 214
4 天津E公司 北区 237 233
5 重庆F公司 南区 121 68
6 成都G公司 南区 105 151
7 贵阳H公司 南区 191 226
2、筛选出case1中“区域”为“南区”的数据,并将数据赋给case1_1_1
case1_1_1 = case1[case1["区域"]=="南区"]
case1_1_1
客户 区域 2017销售额 2018销售额
0 广东A公司 南区 268 119
1 广东B公司 南区 265 217
5 重庆F公司 南区 121 68
6 成都G公司 南区 105 151
7 贵阳H公司 南区 191 226
3、算一下case1_1_1(南区的数据)中2017年和2018年的销售总额
case1_1_1["2017销售额"].sum()
950
case1_1_1["2018销售额"].sum()
781
4、从“北区”“2017销售额”的数据中选出数额大于100的数据
case1_2_1 = case1[(case1["区域"]=="北区") & (case1["2017销售额"]>100)]
case1_2_1
客户 区域 2017销售额 2018销售额
2 北京C公司 北区 182 206
4 天津E公司 北区 237 233
5、算出“北区”“2017销售额”的数据中选出数额大于100的数据总额
case1_2_1["2017销售额"].sum()
419
6、进行多种筛选,类似于EXCEL里的SUMIFS函数,进行某一分类下的某一小类的模糊筛选,并计算总数
(1)这里用到了case1[(case1[“类别”].str.contains(“小类1”)) | (case1[“类别”].str.contains(“小类2”))]以及|逻辑符“或”,提高了筛选效率。
case1_3_1 = case1[(case1["客户"].str.contains("广东")) | (case1["客户"].str.contains("天津"))]
case1_3_1
客户 区域 2017销售额 2018销售额
0 广东A公司 南区 268 119
1 广东B公司 南区 265 217
4 天津E公司 北区 237 233