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 相关文章推荐
ssh批量登录并执行命令的python实现代码
May 25 Python
Python的randrange()方法使用教程
May 15 Python
PYTHON压平嵌套列表的简单实现
Jun 08 Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 Python
Python中判断输入是否为数字的实现代码
May 26 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
python版本单链表实现代码
Sep 28 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
使用Python OpenCV为CNN增加图像样本的实现
Jun 10 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
Python函数默认参数常见问题及解决方案
Mar 26 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数据饼图效果实现代码
2011/11/23 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
禁止js文件缓存的代码
2010/04/09 Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
用jquery写的一个万年历(自写)
2014/01/20 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现读取命令行参数的方法
2015/05/22 Python
详解Python发送email的三种方式
2018/10/18 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
比驿:全球酒店比价网
2018/06/20 全球购物
大四本科生的自我评价
2013/12/30 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
环保建议书作文300字
2015/09/14 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android