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高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
Jun 10 Python
python获得文件创建时间和修改时间的方法
Jun 30 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
windows下python和pip安装教程
May 25 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
如何使用selenium和requests组合实现登录页面
Feb 03 Python
Python+Appium实现自动化测试的使用步骤
Mar 24 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
详解用 python-docx 创建浮动图片
Jan 24 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小偷的核心程序
2007/04/09 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
Python编程中的for循环语句学习教程
2015/10/14 Python
Python验证企业工商注册码
2015/10/25 Python
简析Python的闭包和装饰器
2016/02/26 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
2014年教务处工作总结
2014/12/03 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
运动会运动员赞词
2015/07/22 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
安全学习心得体会范文
2016/01/18 职场文书
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL