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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
python使用fork实现守护进程的方法
Nov 16 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 Python
python 日志增量抓取实现方法
Apr 28 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
浅谈Python基础—判断和循环
Mar 22 Python
python定时按日期备份MySQL数据并压缩
Apr 19 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
学习和使用python的13个理由
Jul 30 Python
django和flask哪个值得研究学习
Jul 31 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 Python
解决Pytorch中关于model.eval的问题
May 22 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
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
jQuery之字体大小的设置方法
2014/02/27 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
兼职业务员岗位职责
2014/01/01 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书