春节特别放送2 用自顶至底的思路解决数据统计问题 你好,我是尹会生。今天是大年初二,先祝你春节快乐。

上节课我策划了一个项目作业,你完成得怎么样了呢?如果你对第一模块的内容掌握了60%,其实这道题你就能完成得差不多了,或者说至少会有一个思路。那么今天这节课,我也来给你提供一些我的解题思路和解题方法。

我们再来回顾下两道题目:

  • 统计出全年每种水果的总销售额。
  • 统计出每月销售数量排名Top 3的水果。

因为这两道题目都是需要在统计数据的前提下进行的,一个是统计之后进行求和,一个是统计之后进行排序。所以,我们优先要做的就是统计全部文件所有sheet里的单元格数据。

以第一为例,可以按照自顶至底的思路拆分问题。

什么是自顶至底呢?意思是分解问题的时候,先关注总体,再解决具体问题。我给你举个例子你会更容易理解。这是一个你熟悉的问题:怎样把大象装进冰箱?

你会马上想到,把大象装进冰箱分成三个步骤。你看,你不会关注冰箱是什么品牌,大象是什么品种,冰箱的容积如何,大象的体积有多大等等。这样思考的好处是你可以先对高层次的问题进行定义、设计、编码,再细节的问题,再其中的子任务或下一层次去解决。这样逐层去进行设计和编码能够让你的程序有更好的可读性。

那统计销售总数,我也可以把问题拆分成三个步骤。

  • 第一步,拆解Excel,通过第二讲的循环功能,取得每日销售数据。
  • 第二步,读取每天里的每次销售金额数据。
  • 第三步,将数据按照自己的算法(这里就是简单的累加)进行汇总。

接下来我带你具体看下每个步骤需要做什么。

首先,我们来取出每日销售数据。

你可以先从总销售额开始入手,思考如何拆解问题,。总销售额可以拆分成按月销售额的累加,每月的销售数据可以存放到单独的文件中。月销售额可以拆分成日销售额的累加,日销售额放在每个sheet中。

如果用python来实现总销售额的统计,实现思路应该为:通过pathlib库和for循环遍历文件,读取每个Excel文件,再通过xlrd库读取每个Excel里的每个sheet,每个sheet里记录了每一天的销售数据,这样可以把每天的销售数据读取出来。

接着,我们来读取每一次销售数据。

由于Excel中除了销售金额,还有日期等其他噪声数据,我们只需要读取“水果名称”“销售金额”这两列必须数据,就能实现统计销售总额的功能了。因此通过这两个数据所在的列取出“水果名称”“销售金额”这两列。

用python实现的话,就是:使用for循环遍历每一行的水果,再采用“字典”数据类型临时存放到Python的一种数据结构中。为什么要使用“字典”呢?在第三讲我给你讲解过,“字典”适合记录有映射关系的一对或多对数据。

最后,将数据汇总在一起。

根据需求,销售的金额只需要记录汇总的金额就可以实现最终要求,也就是统计全年销售额的任务了。所以这一步具体做法就是:把字典中可以对每种水果的每次销售金额累加存放,就可以得到当日每种水果销售总金额了。

第二道题,那如何来实现Top3功能呢?

这两道问题的处理思路非常相似,都是需要处理每个月的销售额,但是第一个问题,统计全年销售额,需要将12个月的销售数据进行累加。第二个问题,需要对每个月的销售数据进行从大到小的排序,前三位的就是“水果销售Top3”了。

你的思路和想法是什么呢?可以在留言区分享一下,我们一起交流、讨论。在2月16日,也就是大年初五这一天,我会把完整答案给你分享出来,供你参考。

参考资料

https://learn.lianglianglee.com/%e4%b8%93%e6%a0%8f/Python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e5%ae%9e%e6%88%98%e8%af%be/%e6%98%a5%e8%8a%82%e7%89%b9%e5%88%ab%e6%94%be%e9%80%812%20%e7%94%a8%e8%87%aa%e9%a1%b6%e8%87%b3%e5%ba%95%e7%9a%84%e6%80%9d%e8%b7%af%e8%a7%a3%e5%86%b3%e6%95%b0%e6%8d%ae%e7%bb%9f%e8%ae%a1%e9%97%ae%e9%a2%98.md