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 判断一个进程是否存在
Apr 09 Python
python实现的简单FTP上传下载文件实例
Jun 30 Python
Python数组遍历的简单实现方法小结
Apr 27 Python
Python环境下搭建属于自己的pip源的教程
May 05 Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
Django 登陆验证码和中间件的实现
Aug 17 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
Python中base64与xml取值结合问题
Dec 22 Python
python深copy和浅copy区别对比解析
Dec 26 Python
Django与数据库交互的实现
Jun 03 Python
Python中的程序流程控制语句
Feb 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 之 没有mysql支持时的替代方案
2006/10/09 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
python求最大连续子数组的和
2018/07/07 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
ASP.NET Core中的配置详解
2021/02/05 Python
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
母亲追悼会答谢词
2014/01/27 职场文书
表决心的诗句大全
2014/03/11 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
学生自我评语
2015/01/04 职场文书
首席执行官观后感
2015/06/03 职场文书
文化苦旅读书笔记
2015/06/29 职场文书