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如何压缩新文件到已有ZIP文件
Mar 14 Python
django框架之cookie/session的使用示例(小结)
Oct 15 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
pandas 时间格式转换的实现
Jul 06 Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 Python
Python中sorted()排序与字母大小写的问题
Jan 14 Python
详解Django3中直接添加Websockets方式
Feb 12 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
使用 django orm 写 exists 条件过滤实例
May 20 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
浅析Python面向对象编程
Jul 10 Python
python 如何执行控制台命令与操作剪切板
May 20 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记录代码执行时间(实现代码)
2013/07/05 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
javascript中对对层的控制
2006/12/29 Javascript
js中判断控件是否存在
2010/08/25 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
python字符串连接的N种方式总结
2014/09/17 Python
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
python基于win32api实现键盘输入
2020/12/09 Python
python 装饰器重要在哪
2021/02/14 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
检讨书模板
2015/01/29 职场文书
大雁塔英文导游词
2015/02/10 职场文书
Go语言基础知识点介绍
2021/07/04 Golang