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 相关文章推荐
python抓取京东价格分析京东商品价格走势
Jan 09 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
Sep 21 Python
python简单实例训练(21~30)
Nov 15 Python
matlab中实现矩阵删除一行或一列的方法
Apr 04 Python
Python标准库shutil用法实例详解
Aug 13 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
python爬取酷狗音乐排行榜
Feb 20 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
Python数据可视化:泊松分布详解
Dec 07 Python
python使用Geany编辑器配置方法
Feb 21 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
桌面中心(三)修改数据库
2006/10/09 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
Python正则表达式和元字符详解
2018/11/29 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
高中生的学习总结自我鉴定
2013/10/26 职场文书
个人党性剖析材料
2014/02/03 职场文书
七夕情人节促销方案
2014/06/07 职场文书
推销搭讪开场白
2015/05/28 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
python随机打印成绩排名表
2021/06/23 Python
新手初学Java List 接口
2021/07/07 Java/Android
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android