Python使用MapReduce进行简单的销售统计


Posted in Python onApril 22, 2022

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

Python使用MapReduce进行简单的销售统计

下面就通过手动实现MapReduce编码统计销售数量的例子来模拟。

打开Python3在线编程网址:

http://www.dooccn.com/python3/

1、生成模拟数据

#!/usr/bin/python
# -*- coding: utf-8 -*-
import random
# 模拟商品
stocks = ["HUAWEI Mate40","Apple iphone13","Apple MacBook Pro 14","ThinkBook 14p","RedmiBook Pro14","飞鹤星飞帆幼儿奶粉","爱他美 幼儿奶粉","李宁运动男卫裤","小米踏步机椭圆机","欧莱雅面膜","御泥坊面膜","欧莱雅男士套装","金六福白酒","牛栏山42度","茅台飞天"]
# 销售订单
sales_list = list()
# 生成100个买家订单,每个订单三个商品
for i in range(100):
    sstocks = list()
    for j in range(3):
        sstocks.append(stocks[random.randint(0,14)])
    a = "买家" + str(i+1) + ":" + ",".join(sstocks)
    print(a)

Python使用MapReduce进行简单的销售统计

2、mapper实现

将第一步的结果作为第二步的输入。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
#从控制台中读取数据,循环发送每行数据
for line in sys.stdin:
    #对订单进行拆分
    orders = line.strip().split(":")
    if len(orders) == 2:
        #对订单中的商品进行拆分
        stocks = orders[1].split(",")
        for stock in stocks:
            #将每一个商品作为key,value进行输出
            print('%s,%s' % (stock,1))

Python使用MapReduce进行简单的销售统计

3、reducer实现

将第二步的结果作为第三步的输入。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
# 创建一个空的字典用来每一个商品的销售数据
stock_dict = dict()
for line in sys.stdin:
    if len(line.strip()) >= 1:
        # 拆分每一行的商品,销量
        stock, sales = line.split(',')
        # 判断当前商品是否在字典中有存放
        if stock in stock_dict:
            # 如果有,把字典中的商品和销量取出来,追加当前销量再放入
            stock_dict[stock] = stock_dict[stock] + int(sales)
        else:
            # 如果没有,直接把商品和销量数据放入字典中
            stock_dict[stock] = int(sales)
# 遍历字典列表,获取每一个商品的销量
for stock, sales in stock_dict.items():
    print('%s\t%s' % (stock, sales))

Python使用MapReduce进行简单的销售统计 

这样就实现了简单的销售统计。

到此这篇关于Python使用MapReduce编程模型统计销量的文章就介绍到这了!


Tags in this post...

Python 相关文章推荐
在Django中创建第一个静态视图
Jul 15 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
详解python eval函数的妙用
Nov 16 Python
Python OpenCV实现视频分帧
Jun 01 Python
基于python实现学生信息管理系统
Nov 22 Python
python实现智能语音天气预报
Dec 02 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
python数据类型可变不可变知识点总结
Mar 06 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
浅析python 动态库m.so.1.0错误问题
May 09 Python
Python turtle库的画笔控制说明
Jun 28 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
python使用pycharm安装pyqt5以及相关配置
Python使用DFA算法过滤内容敏感词
python游戏开发之pygame实现接球小游戏
Apr 22 #Python
python游戏开发Pygame框架
Apr 22 #Python
python中的random模块和相关函数详解
Apr 22 #Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 21 #Python
微信小程序调用python模型
Apr 21 #Python
You might like
php smarty 二级分类代码和模版循环例子
2011/06/01 PHP
PHP Directory 函数的详解
2013/03/07 PHP
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
小程序实现长按保存图片的方法
2019/12/31 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
浅析python中while循环和for循环
2019/11/19 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
90后毕业生的求职信范文
2013/09/21 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
销售岗位职责范本
2014/06/12 职场文书
初三语文教学计划
2015/01/22 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
防汛通知
2015/04/25 职场文书
跑出一片天观后感
2015/06/08 职场文书
使用Pytorch训练two-head网络的操作
2021/05/28 Python