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 27 Python
Python登录注册验证功能实现
Jun 18 Python
python实现停车管理系统
Nov 30 Python
对Python 获取类的成员变量及临时变量的方法详解
Jan 22 Python
使用Python做定时任务及时了解互联网动态
May 15 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
Feb 18 Python
Python request使用方法及问题总结
Apr 26 Python
python实现图片批量压缩
Apr 24 Python
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 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
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
PHP中require和include路径问题详解
2014/12/25 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
IE与firefox之jquery用法区别
2008/10/03 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
vue二级路由设置方法
2018/02/09 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
Python绘制堆叠柱状图的实例
2019/07/09 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
python 实现图片批量压缩的示例
2020/12/18 Python
村干部培训班主持词
2014/03/28 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
股份合作协议书
2014/09/10 职场文书
元宵节寄语大全
2015/02/27 职场文书
教师工作证明范本
2015/06/12 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python
swagger如何返回map字段注释
2021/07/03 Java/Android