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实现简单的TCP代理服务器
Oct 08 Python
Python中类的继承代码实例
Oct 28 Python
python版简单工厂模式
Oct 16 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
详解django2中关于时间处理策略
Mar 06 Python
Python生成一个迭代器的实操方法
Jun 18 Python
pandas DataFrame 行列索引及值的获取的方法
Jul 02 Python
python获取txt文件词向量过程详解
Jul 05 Python
解决TensorFlow GPU版出现OOM错误的问题
Feb 03 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
Pycharm安装第三方库失败解决方案
Nov 17 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 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
DISCUZ 分页代码
2007/01/02 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
JavaScript中判断数据类型的方法总结
2016/05/24 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
python入门教程之识别验证码
2017/03/04 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
UGG英国官方网站:UGG UK
2018/02/08 全球购物
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
建筑工程毕业生自我鉴定
2014/01/14 职场文书
大学毕业感言一句话
2014/02/06 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
高中综合实践活动总结
2014/07/07 职场文书
副主任竞聘演讲稿
2014/08/18 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers