用Python告诉你:这些年,我们定过的的那些外卖 !

基于python的elasticsearch和gurobi的外卖配送路径优化问题 该资源是对一个饭店外卖配送问题的最优路径求解. 通过编写Python脚本, 实现了利用elasticsearch读取大型数据, 然后通过gurobi对模型进行求解, 最后将最优路径通过Folium生成HTML文件展示. 该资源包括模型说明(英文,bd翻译即可)、完整的数据、源代码、运行结果等。是入门学习Elasticsearch、Gurobi、Folium三项内容的绝佳资料。 另: 在使用该资源前, 请确保已安装好python/gurobi/elasticsearch等. 立即下载

工作前几年,点了不知道多少外卖。从最开始的石景山到后来的海淀再到朝阳。外卖已经成了大部分上班族生活中不可或缺的一部分,中午公司附近的餐厅人满为患,只能点外卖!晚上加班,还是点外卖!!。 偶尔下班早了,路上买了菜买了肉准备大展身手,回到了合租的房子,发现隔壁小姐姐和男朋友在厨房做饭。得嘞,又一次打开App,点外卖!!!。

 

 

 

 

 

Python资源共享群:626017123

有时候又会面临这样的烦恼,今天吃个啥?这家麻辣烫不错,另一家麻辣香锅也不错,突然发现又有一家的专享红包快过期了。

 

 

 

 

 

 

今天正好有空,想统计一下过去时间里我在饿了么上的订单情况,看看这些日子里,吃了什么?贡献了多少钱,当然再看看有什么好吃的已经很久没吃了。

经过多次测试,总结了以下几条

  • 为了方便可以在网页访问https://h5.ele.me,登录自己的账号
  • 饿了么目前只能看到18年之后的账单
  • 请求中只要携带包含登录信息的Cookie即可
  • 近三个月订单与更早的订单,请求接口和参数稍有不同

 

通过手机&验证码登录自己的饿了么账号,成功之后会返回当前用户的user_id 和 登录Cookie。这两个信息为后续的请求提供必要的信息。

一开始访问订单,是这样的请求

h5.ele.me/restapi/bos/v2/users/26803312/orders?limit=8&offset=0

h5.ele.me/restapi/bos/v2/users/26803312/orders?limit=8&offset=8

h5.ele.me/restapi/bos/v2/users/26803312/orders?limit=8&offset=16

当继续下拉,出现"查看三个月前的外卖订单"按钮时,请求是这样的

h5.ele.me/restapi/bos/v2/users/26803312/old_orders?limit=8&from_time=

h5.ele.me/restapi/bos/v2/users/26803312/old_orders?limit=8&from_time=1557718107

from_time的值在上次请求的响应中可以看到

 

 

 

 

 

 

获取订单部分代码如下所示

"""
 获取近3个月订单
"""
def get_new_order():
    num = 0
    while 1:
        # 偏移量
        offset = num * limit
        response = requests.get(url + f'?limit={limit}&offset={offset}', headers=headers, verify=False)
        resp_json = response.json()
        insert_mongo(resp_json)
        # 当响应订单数小于8时 跳出循环
        if len(resp_json) < 8:
            print('====================')
            break
        num += 1
"""
历史订单
"""
def history_order():
    from_time = ''
    while 1:
        response = requests.get(old_url + f'?limit={limit}&from_time={from_time}', headers=headers, verify=False)
        resp_json = response.json()
        from_time = resp_json['from_time']
        orders = resp_json['orders']
        # 经过测试,最后一个订单时,会在请求一次 响应为空
        if not orders:
            break
        insert_mongo(orders)

 

运行之后发现,这一年多的时间,光外卖竟然花费了1W多一点。爬取的数据可以选择将数据保存在csv文件中,也可以选择Mongod。这里我是插入到了MongoDB中

def insert_mongo(resp_json):
    if not resp_json:
        return 
    for i in resp_json:
        # 菜品
        foods_group = i['basket']['group'][0]
        for j in foods_group:
            j['name'] = clean_data(j['name'])
            with open('foods_name_banxia.txt', 'a+') as f:
                f.write(j['name'] + '\n') # 将菜品写入文件,方便处理        # 配送费
        deliver_price = 0
        if 'deliver_fee' in i['basket'].keys():
            deliver_price = i['basket']['deliver_fee']['price']
        # 计算总花费
        global total
        total += i['total_amount']
        # 餐馆名
        restaurant_name = clean_data(i['restaurant_name'])
        with open('restaurant_name_banxia.txt', 'a+') as f:
            f.write(restaurant_name + '\n') # 记录餐馆名
        clo.insert_one({
            # 餐馆名
            'restaurant_name': restaurant_name,
            # 订单时间  formatted_created_at也可以取,但是近期的会显示xx小时之前
            'created_timestamp': time_convert(i['created_timestamp']),
            # 价格
            'total_amount': i['total_amount'],
            'foods_group': foods_group,
            'deliver_price': deliver_price
        })

 

在查看数据过程中,发现有的菜品和店铺名后面都有括号、或者方括号等特殊字符,里面的信息对我们来说也没有什么价值。可以简单的进行处理一下

import re
def clean_data(data):
    a = re.sub("\\(.*?\\)|\\(.*?\\)|\\[.*?\\]|\\【.*?\\】|[A-Za-z0-9\@\\!\/]", "", data)
    a = a.replace('盒', '').replace('克', '').replace('个', '')\
        .replace('大份', '').replace('小份', '').replace('瓶', '').replace('组', '').replace(' ','')
    return a

 

这样,我们就将订单中的信息存在了数据库中。为了方便统计我将每个订单的菜品、以及餐馆名保存在了txt文件中。

可以通过wordcloud将餐品进行一个简单的可视化

from random import randint
from matplotlib import pyplot as plt
from wordcloud import WordCloud
def random_color(word=None, font_size=None, position=None,  orientation=None, font_path=None, random_state=None):
    """Random Color func"""
    r = randint(30, 255)
    g = randint(30, 180)
    b = int(100.0 * float(randint(60, 120)) / 255.0)
    return "rgb({:.0f}, {:.0f}, {:.0f})".format(r, g, b)
content = open('foods_name.txt', encoding='utf-8').read()
wordcloud = WordCloud(background_color="white",
               width=1000,
               height=600,
               max_font_size=50,
               font_path='/System/Library/Fonts/PingFang.ttc', # 需要根据实际操作系统更换路径
               color_func=random_color).generate(content)
plt.imshow(wordcloud)
plt.axis("off")
plt.savefig('ele_wordcloud.png', format='png', dpi=200)

 

结果如下,有没有口味一样的同学呢?

 

 

 

 

 

 

 

同样我们可以在终端通过sort命令去常光顾的餐馆进行统计

  • sort -n 按照数值大小排序 升序
  • sort -r 降序排列
  • uniq -c 去重和统计
  • head -5 展示前5条

 

cat mao_out.txt | sort | uniq -c | sort -rg | head -5

结果如下 去的最多的是贡贡米线和张亮麻辣烫,统计范围内均光顾了14次。

Python3XXXAir:$ cat restaurant_name.txt |sort|uniq -c| sort -rg| head -5
  14 贡贡米线
  14 张亮麻辣烫
  13 京客隆
  11 沁香缘家常菜
  11 小巷麻辣香锅

 

可以通过matplotlib去统计一下每次定外卖的价格,并展示出来

import pymongo
import matplotlib.pyplot as plt
client = pymongo.MongoClient('mongodb://localhost:27017/')
db = client['ele']
clo = db['info_banxia']
result = clo.find({})
y = [i['total_amount'] for i in result]
x = [i for i in range(len(y))]
plt.ylabel("The unit price")
plt.xlabel("Times")
plt.plot(x, y)
plt.show()

 

结果图:

 

 

 

 

 

 

可以看出,大部分价格在20 ~ 40 之间, 因为有时候为了满减,大部分都是跟同事朋友一起拼单。偶尔超过这个范围是买的水果、药等一些商品。

从这些数据中,我们同样得出,哪个月定外卖次数最为频繁

# 该月定外卖次数
count = []
for i in data:
    ele_count = clo.count({'created_timestamp': re.compile(i)})
    count.append(ele_count)
plt.scatter(data, count)
plt.xticks(rotation=45)
plt.show()

 

 

 

 

 

 

 

可以看出 18年3月定了22次外卖是最多的一次。11月份的时候定外卖次数最少。

以上从几个小方面简单的进行了统计。最后,大家辛苦工作的同时,也要多注意饮食卫生哟。

 

 

 

 

智能车实战——从ADC采集到PWM控制,让电磁车精准循迹 本文详细介绍了电磁循迹智能车的实现原理与实战技巧,涵盖从ADC信号采集、PWM控制到PID算法整定的全流程。通过STM32代码示例解析电感信号处理、差比和偏差计算及电机驱动等关键技术,帮助开发者快速掌握智能车精准循迹的核心方法,提升电磁车竞赛项目的开发效率。 阅读详情

相关推荐

从采集到播放:RV1106+H264全链路开发避坑指南(含FFmpeg转码技巧)

本文详细解析了基于Rockchip RV1106芯片构建H.264视频从采集到播放全链路的开发实践。内容涵盖RKMPI框架设计、VI/VENC模块配置、内存泄漏排查及FFmpeg高效转码技巧,旨在帮助嵌入式开发者规避常见陷阱,实现稳定高效的低延迟视频处理流水线。

weixin_29189377的博客 662

用Python告诉你:这些年,我们定过的的那些外卖

点击上方“Python3X”,选择“置顶或者星标”第一时间收到精彩推送!工作前几年,点了不知道多少外卖。从最开始的石景山到后来的海淀再到朝阳。外卖已经成了大部分上班族生活...

胖虎 456

PADS安装教程(超详细)

声明:个人实践 一、工具准备 pads9.5完整破解版百度网盘提取码【wjx9】 链接:https://pan.baidu.com/s/1pIP6BJO435ssmF7Hjwyz8A 提取码:wjx9 安装环境:win10 64位 二、开始解压安装 关闭杀毒,exe以管理员身份运行 点击【skip】,不然又得licese 点击【agree】 点击【modify】 设置安装的工具、路径及工程路径 设置完成后,开始【install】 在之后注册。 将Crack复制到PADS安装目录

qq_42057393的博客 5万+

使用Python实现商品价格区间设置和排序

以下是使用Python实现商品价格区间设置和排序的示例代码:pythonCopy code。

黑战士的博客 4143

Scratch离线版部署指南:解决资源缺失与页面显示异常问题

本文提供了一份详尽的Scratch离线版部署指南,旨在解决网络依赖导致的资源缺失与页面显示异常问题。通过从基础文件获取、自动化资源抓取到生产环境部署的完整流程,帮助教育工作者和开发者在无网络环境下搭建功能完整的本地Scratch编辑器,确保编程教学的顺利进行。

wine的专栏 1263

为YOLOv11引入自适应特征融合模块(ASFF)

本文探讨了在YOLOv11中引入ASFF(自适应空间特征融合)模块以解决多尺度目标检测性能不均衡的问题。作者分析了传统FPN固定融合策略的缺陷,详细介绍了ASFF模块的实现原理,包括动态权重生成网络设计和特征融合机制。通过将ASFF集成到YOLOv11颈部网络,实现了特征在双向流动时的自适应融合,在复杂场景下mAP提升1.2%而推理时间仅增加3-5ms。文章还分享了训练调参技巧和部署注意事项,指出ASFF特别适合交通监控等目标尺度变化大的场景,但强调需根据实际需求平衡模型复杂度与性能。最后提供了工程实践建议

as1225120794的博客 320

【课程设计/毕业设计】python外卖点餐管理系统源码+开发文档

一直想做一款外卖点餐管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套管理系统。学习过程中遇到问题可以留言。系统分为后台和前台两部分。菜品管理:管理系统可以录入、修改和查询菜品的基本信息,如菜品名称、价格、备注等。类型管理:系统可以管理菜品的类型信息,包括类型的名称等。标签管理:管理标签录入、修改和查询标签的信息。评论管理:管理和浏览整个网站的评论信息。用户管理:管理和浏览网站的用户信息,可以新增、编辑和删除用户。

疯狂屌丝程序员 4458

windows下使用Nginx搭建Rtmp流媒体服务器,实现视频直播功能

一、环境介绍 操作系统:win10 64位系统 Linux下搭建Nginx搭建Rtmp流媒体服务器方法请看这里:https://blog.youkuaiyun.com/xiaolong1126626497/article/details/105378894 二、流媒体服务器介绍 流媒体服务器的主要功能是以流式协议(RTP/RTSP、MMS、RTMP等)将视频文件传输到客户端,供用户在线观看;也可从视频采集、压缩软件接收实时视频流,再以流式协议直播给客户端。 nginx服务器是开源的高性能的http服务器,反向

1万+

如何做一个基于JAVA的新闻管理系统毕业设计毕设作品(springboot框架)

如何做一个基于JAVA新闻管理系统毕业设计毕设作品(springboot框架)

杭州.黄老师 3114

FPGA工程师面试——FPGA基础知识24题

线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用OC门(集电极开路与非门)来实现,由于不用OC门可能使灌电流过大,而烧坏逻辑门,因此在输出端口应加一个上拉电阻。

FPGA/MATLAB学习教程/源码/项目合作开发 1086

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

python 点外卖_用Python告诉你:这些年,我们定过的的那些外卖

工作前几年,点了不知道多少外卖。从最开始的石景山到后来的海淀再到朝阳。外卖已经成了大部分上班族生活中不可或缺的一部分,中午公司附近的餐厅人满为患,只能点外卖!晚上加班,还是点外卖!!。偶尔下班早了,路上买了菜买了肉准备大展身手,回到了合租的房子,发现隔壁小姐姐和男朋友在厨房做饭。得嘞,又一次打开App,点外卖!!!。 有时候又会面临这样的烦恼,今天吃个啥?这家麻辣烫不错,另一家麻辣香锅也不错...

weixin_39632293的博客 506

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

用Python告诉你:这些年,我们点过的的那些外卖

工作的这几年,点了不知道多少外卖。从最开始的石景山到后来的海淀再到朝阳。外卖已经成了大部分上班族生活中不可或缺的一部分,中午公司附近的餐厅人满为患,只能点外卖!晚上加班,还是点外卖!! 偶尔下班早了,路上买了菜买了肉准备大展身手,回到了合租的房子,发现隔壁小姐姐和男朋友在厨房做饭。得嘞,又一次打开App,点外卖! 有时候又会面临这样的烦恼,今天吃个啥?这家麻辣烫不错,另一家麻辣香锅也不错,突然发...

chen801090的博客 273

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

网上订餐python_用Python告诉你:这些年,我们点过的的那些外卖

原标题:用Python告诉你:这些年,我们点过的的那些外卖工作的这几年,点了不知道多少外卖。从最开始的石景山到后来的海淀再到朝阳。外卖已经成了大部分上班族生活中不可或缺的一部分,中午公司附近的餐厅人满为患,只能点外卖!晚上加班,还是点外卖!! 偶尔下班早了,路上买了菜买了肉准备大展身手,回到了合租的房子,发现隔壁小姐姐和男朋友在厨房做饭。得嘞,又一次打开App,点外卖! 有时候又会面临这样的烦恼,...

weixin_39911916的博客 131

还在等外卖?python告诉你,为什么你的外卖这么慢

某天中午,⼩编喜滋滋地点了⼀份⽜⾁饭外卖,然后翘⾸以盼等待配送⼩哥的到来。半个多⼩时过去了,软件上的地图显⽰⼩哥离我只有三百⽶的距离,⽜⾁饭已经近在咫尺。然⽽左等右等⽜⾁饭也没有到,再打开app⼀看,简直两眼发⿊:⼩哥的距离竟然从三百⽶变成了 ⼀千⽶! 相信⼤家都曾遇到过这样的问题:外卖点的各种美⾷,或者跑腿购买的东西,还有淘宝的包裹,明明页⾯显⽰它们已经近在咫尺甚⾄只有⼏分钟的路程,...

DataCastle 848

从外卖员到Python开发工程师,小哥用自身经历告诉你如何快速转行~

我毕业于机械专业,这个专业时常被大家称为万金油,虽然读的是专科,可课程整体的实操性会更强一些,我原本以为毕业后起码能够找到一份不错的工作(起码是工程师),可真正踏上社会后,才发现,现实比我想象的要残酷的多。

libaiup的博客 319

毕业设计基于Django+python的高校超市外卖系统的设计与实现

随着移动信息技术的快速发展,互联网正加速向各个行业渗透,深刻的改变和影响了现代人的日常生活[1]。以美团、饿了么等为代表的外卖平台,深刻的改变了人们的餐饮消费习惯,不仅开辟了巨大的餐饮消费第二市场,而且带动了一大批细分市场与细分需求的新的电商模式,例如社区团购等。然而,多年来针对高校校园超市外卖需求的新型电商模式的发展却较为缓慢,其中大学生消费群体是一个很特殊的群体,他们正直青春年少,思维活跃,对于新鲜事物、新型消费模式的接受程度较高[2]。因此,学生们的购物行为也引起了广大学者的关注。

m0_50936939的博客 417

基于Django+python的高校超市外卖系统的设计与实现

随着移动信息技术的快速发展,互联网正加速向各个行业渗透,深刻的改变和影响了现代人的日常生活[1]。以美团、饿了么等为代表的外卖平台,深刻的改变了人们的餐饮消费习惯,不仅开辟了巨大的餐饮消费第二市场,而且带动了一大批细分市场与细分需求的新的电商模式,例如社区团购等。然而,多年来针对高校校园超市外卖需求的新型电商模式的发展却较为缓慢,其中大学生消费群体是一个很特殊的群体,他们正直青春年少,思维活跃,对于新鲜事物、新型消费模式的接受程度较高[2]。因此,学生们的购物行为也引起了广大学者的关注。

qq_1406299528的博客 210

拿到外卖后秒退单,一连12天吃霸王餐的女子栽了!

Python实战社群Java实战社群长按识别下方二维码,按需求添加扫码关注添加客服进Python社群▲扫码关注添加客服进Java社群▲作者丨电商君来源丨电商报(ID:kandiansha...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 844

python基于Django的高校超市外卖系统的设计与实现-计算机毕业设计

随着移动信息技术的快速发展,互联网正加速向各个行业渗透,深刻的改变和影响了现代人的日常生活[1]。以美团、饿了么等为代表的外卖平台,深刻的改变了人们的餐饮消费习惯,不仅开辟了巨大的餐饮消费第二市场,而且带动了一大批细分市场与细分需求的新的电商模式,例如社区团购等。然而,多年来针对高校校园超市外卖需求的新型电商模式的发展却较为缓慢,其中大学生消费群体是一个很特殊的群体,他们正直青春年少,思维活跃,对于新鲜事物、新型消费模式的接受程度较高[2]。因此,学生们的购物行为也引起了广大学者的关注。

QQ1039692211的博客 634

徐峥电影《逆行人生》:程序员,现实中有可能送外卖吗?

根据 2023 年的一份招聘数据,技术岗位的招聘需求占整个互联网行业的 60% 以上,其中 Java、Python、Go 等主流开发语言的相关岗位供不应求。干十年外卖,收入和职业价值几乎没有本质变化,甚至体力消耗过大,年纪大了干不动,还可能面临更大的职业危机。一个 985 毕业的程序员,可能更在乎职业的成就感和社会地位,而送外卖显然无法满足这些需求。同学们,最近徐峥的一部电影《逆行人生》引发了热议,其中一个情节更是让不少程序员感到震撼:一个 985 毕业的程序员,最后竟然去送外卖了!

m0_61562916的博客 877
上一篇: Python爬虫运用正则表达式!
下一篇: 太好玩了,我用Python写了个火影忍者版的连连看 !
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值