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代理抓取并验证使用多线程实现
May 03 Python
python将ip地址转换成整数的方法
Mar 17 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
用python建立两个Y轴的XY曲线图方法
Jul 08 Python
python通过实例讲解反射机制
Oct 17 Python
基于Python中的yield表达式介绍
Nov 19 Python
使用Python的networkx绘制精美网络图教程
Nov 21 Python
Python基于BeautifulSoup爬取京东商品信息
Jun 01 Python
了解一下python内建模块collections
Sep 07 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 Python
Python监听剪切板实现方法代码实例
Nov 11 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判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
一些可能会用到的Node.js面试题
2019/06/15 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
Python读写锁实现实现代码解析
2020/11/28 Python
用python读取xlsx文件
2020/12/17 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
高中生学习总结的自我评价范文
2013/10/13 职场文书
淘宝网店营销策划书
2014/01/11 职场文书
员工考核管理制度
2014/02/02 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
离婚财产处理协议书
2014/09/30 职场文书
应聘教师求职信范文
2015/03/20 职场文书
2015大学生求职信范文
2015/03/20 职场文书
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
P站美图推荐——变身女主角特辑
2022/03/20 日漫