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字符串转换成浮点数函数分享
Jul 24 Python
Python实现将DOC文档转换为PDF的方法
Jul 25 Python
python3编码问题汇总
Sep 06 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
深入浅析python with语句简介
Apr 11 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
python 字符串常用方法汇总详解
Sep 16 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 Python
浅谈Python __init__.py的作用
Oct 28 Python
python的数学算法函数及公式用法
Nov 18 Python
python模板入门教程之flask Jinja
Apr 11 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检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
jQuery对象[0]是什么含义?
2010/07/31 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
js innerHTML 改变div内容的方法
2013/08/03 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
python 获取文件列表(或是目录例表)
2009/03/25 Python
python查找第k小元素代码分享
2013/12/18 Python
python opencv之分水岭算法示例
2018/02/24 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
中专毕业生自荐信范文
2013/11/28 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
团员自我评价范文
2015/03/10 职场文书
高三语文教学反思
2016/02/16 职场文书
子女赡养老人协议书
2016/03/23 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android