Python根据主播直播时间段判定订单销售额归属

写在前面:最近在群里看到一个这样的直播电商的场景觉得还是挺有趣的,于是就想用Python来实现。

需求描述:根据主播直播时间段结合销售订单的付款时间判断所属销售的归属

生成主播在线直播时间段数据

from datetime import datetime, timedelta
import random
import pandas as pddef generate_live_data(start_time, live_duration, anchors, num_repeats=4):"""生成直播数据。参数:start_time (datetime): 直播开始时间。live_duration (timedelta): 直播时长。anchors (list): 主播列表。num_repeats (int): 每个主播重复直播的次数,默认为 4。返回:DataFrame: 包含生成的直播数据的 DataFrame,每行包括开始时间、结束时间和主播。"""live_data = []current_time = start_timefor anchor in anchors:for _ in range(num_repeats):  # 每人直播指定次数end_time = current_time + live_duration  # 计算直播结束时间live_data.append((current_time, end_time, anchor))current_time = end_time# 将列表转换为 DataFramedf = pd.DataFrame(live_data, columns=["Start Time", "End Time", "Anchor"])return df# 定义开始时间
start_time = datetime(2024, 4, 11, 0, 0)  # 2024年4月11日凌晨# 定义直播时长
live_duration = timedelta(hours=3)  # 每人直播三小时# 定义主播列表
anchors = ["Anchor 1", "Anchor 2", "Anchor 3", "Anchor 4"]# 生成直播数据
live_data_df = generate_live_data(start_time, live_duration, anchors)# 将数据写出到 Excel 文件
excel_file_path = "live_data.xlsx"
live_data_df.to_excel(excel_file_path, index=False)

主播数据展示

在这里插入图片描述

生成销售订单数据

import pandas as pd
from datetime import datetime, timedelta
import randomdef generate_purchase_data(start_time, end_time, time_interval, customers, products):"""生成模拟购买数据,并导出到 Excel 文件。参数:start_time (datetime): 数据开始时间。end_time (datetime): 数据结束时间。time_interval (timedelta): 时间间隔。customers (list): 模拟客户姓名列表。products (list): 模拟商品列表。返回:str: 导出的 Excel 文件路径。"""# 生成时间列表time_list = []current_time = start_timewhile current_time < end_time:time_list.append(current_time)current_time += time_interval# 生成模拟购买数据purchase_data = []for time in time_list:for customer in customers:product = random.choice(products)  # 随机选择一个商品quantity = random.randint(1, 5)  # 随机生成购买数量purchase_data.append((time, customer, product, quantity))# 将购买数据转换为 DataFramedf = pd.DataFrame(purchase_data, columns=["Time", "Customer", "Product", "Quantity"])# 导出到 Excel 文件excel_file = "purchase_data.xlsx"df.to_excel(excel_file, index=False)return excel_file# 定义开始时间和结束时间
start_time = datetime(2024, 4, 11, 0, 0)  # 2024年4月11日凌晨
end_time = datetime(2024, 4, 13, 0, 0)    # 2024年4月12日凌晨# 定义时间间隔
time_interval = timedelta(minutes=30)  # 每隔半小时# 定义模拟的客户姓名列表和商品列表
customers = ["Alice", "Bob", "Charlie", "David", "Emma"]
products = ["Product A", "Product B", "Product C", "Product D", "Product E"]# 生成购买数据并导出到 Excel 文件
excel_file_path = generate_purchase_data(start_time, end_time, time_interval, customers, products)print("数据已成功导出到 Excel 文件:", excel_file_path)

销售订单数据展示

在这里插入图片描述

根据销售数据匹配主播直播时间段并保存到Excel文件

有时候我们需要根据销售数据来匹配主播的直播时间段,以便进行更深入的分析。

1. 导入必要的模块

import pandas as pd
from datetime import datetime

2. 从Excel文件中读取销售数据和主播直播时间数据

# 从Excel文件中读取销售数据
sales_data = pd.read_excel("C:\\Users\\Administrator\\Desktop\\purchase_data.xlsx")# 将时间列转换为datetime类型
sales_data['Time'] = pd.to_datetime(sales_data['Time'])# 从Excel文件中读取主播直播时间数据
anchor_time_data = pd.read_excel("C:\\Users\\Administrator\\Desktop\\live_data.xlsx")# 将时间列转换为datetime类型
anchor_time_data['Start Time'] = pd.to_datetime(anchor_time_data['Start Time'])
anchor_time_data['End Time'] = pd.to_datetime(anchor_time_data['End Time'])

3. 初始化结果列表并遍历销售数据

# 初始化一个空列表,用于存储结果
result = []# 遍历销售数据,判断每笔销售属于哪个主播的直播时间段
for index, row in sales_data.iterrows():sale_time = row['Time']customer = row['Customer']product = row['Product']quantity = row['Quantity']# 判断销售时间在哪个主播的直播时间段内for _, anchor_row in anchor_time_data.iterrows():start_time = anchor_row['Start Time']end_time = anchor_row['End Time']anchor = anchor_row['Anchor']if start_time <= sale_time <= end_time:result.append((start_time, end_time, anchor,sale_time, customer, product, quantity))break

4. 将结果转换为DataFrame并保存到Excel文件

# 将结果转换为DataFrame
result_df = pd.DataFrame(result, columns=['Start Time', 'End Time', 'Anchor','sale_time', 'Customer', 'Product', 'Quantity'])# 将结果保存到Excel文件
excel_file_path = "live_data2.xlsx"
result_df.to_excel(excel_file_path, index=False)

5. 完整代码

import pandas as pd
from datetime import datetime# 从Excel文件中读取销售数据
sales_data = pd.read_excel("C:\\Users\\Administrator\\Desktop\\purchase_data.xlsx")# 将时间列转换为datetime类型
sales_data['Time'] = pd.to_datetime(sales_data['Time'])# 从Excel文件中读取主播直播时间数据
anchor_time_data = pd.read_excel("C:\\Users\\Administrator\\Desktop\\live_data.xlsx")# 将时间列转换为datetime类型
anchor_time_data['Start Time'] = pd.to_datetime(anchor_time_data['Start Time'])
anchor_time_data['End Time'] = pd.to_datetime(anchor_time_data['End Time'])# 初始化一个空列表,用于存储结果
result = []# 遍历销售数据,判断每笔销售属于哪个主播的直播时间段
for index, row in sales_data.iterrows():sale_time = row['Time']customer = row['Customer']product = row['Product']quantity = row['Quantity']# 判断销售时间在哪个主播的直播时间段内for _, anchor_row in anchor_time_data.iterrows():start_time = anchor_row['Start Time']end_time = anchor_row['End Time']anchor = anchor_row['Anchor']if start_time <= sale_time <= end_time:result.append((start_time, end_time, anchor,sale_time, customer, product, quantity))break# 将结果转换为DataFrame
result_df = pd.DataFrame(result, columns=['Start Time', 'End Time', 'Anchor','sale_time', 'Customer', 'Product', 'Quantity'])# 打印结果
print(result_df)excel_file_path = "live_data2.xlsx"
result_df.to_excel(excel_file_path, index=False)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/308221.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 使用 ifconfig 报错:Failed to start LSB: Bring up/down networking

一、报错信息 在运行项目时报错数据库连接失败&#xff0c;我就想着检查一下虚拟机是不是 Mysql 服务忘了开&#xff0c;结果远程连接都连接不上虚拟机上的 Linux 了&#xff0c;想着查一下 IP 地址看看&#xff0c;一查就报错了&#xff0c;报错信息&#xff1a; Restarting…

Github 2024-04-14 php开源项目日报Top9

根据Github Trendings的统计,今日(2024-04-14统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目9TypeScript项目1Laravel: 以优雅语法简化Web开发 创建周期:4028 天开发语言:PHP协议类型:MIT LicenseStar数量:30824 个Fork数量:1…

L1 【哈工大_操作系统】什么是操作系统

从本期开始&#xff0c;笔者将出一系列哈工大的《操作系统》课堂要点笔记&#xff0c;该课程应该算得上是国内最好的操作系统课程之一&#xff0c;也是哈工大CS课程含金量最高的课程之一。尤其是对于想学习国外课程《MIT 6.S081》《MIT 6.828》又基础不足的同学&#xff0c; 特…

【生产案例面试题】JVM调优

写作目的 最近上线了一个需求&#xff0c;遇到了一个JVM报警的问题&#xff0c;很荣幸能遇到&#xff0c;在此分享一下整个调优的过程。 背景 我们是中台服务&#xff0c;我们的甲方就是上游不同的业务。中台原则上是业务和能力分离&#xff0c;但是不可避免的是分不开&…

年龄与疾病c++

题目描述 某医院想统计一下某项疾病的获得与否与年龄是否有关&#xff0c;需要对以前的诊断记录进行整理&#xff0c;按照0-18岁、19-35岁、36-60岁、61以上&#xff08;含61&#xff09;四个年龄段统计的患病人数以及占总患病人数的比例。 输入 共2行&#xff0c;第一行为过…

android支付宝接入流程

接入前准备 接入APP支付能力前&#xff0c;开发者需要完成以下前置步骤。 本文档展示了如何从零开始&#xff0c;使用支付宝开放平台服务端 SDK 快速接入App支付产品&#xff0c;完成与支付宝对接的部分。 第一步&#xff1a;创建应用并获取APPID 要在您的应用中接入支付宝…

python输入某年某月某日判断这一天是这一年的第几天

如何使用python实现输入某年某月某日判断这一天是这一年的第几天 from datetime import datetime #引入日期类 def is_leap_year(year):"""判断是否为闰年"""return (year % 4 0 and year % 100 ! 0) or (year % 400 0)# 根据年份和月份返回当…

兮兮牧场养殖小游戏积分兑换互动商城引流模式

刚注册的新会员必须要进入牧场才能激活所有功能 一、获得动物的途径的方式 第一种是邀请好友注册获得&#xff0c;第二种是看广告获得 邀诘好友注册获得动物明细: 1、从兮兮牧场的邀请好友的链接去邀请好友才能获得&#xff0c;其他邀请码无效 2、注册赠送小鸡一只; 3、邀…

【七 (4)FineBI FCP模拟试卷-电站数据分析】

目录 文章导航一、字段解释1、电站基础信息表2、电站事实表 二、需求三、操作步骤1、将新增一列日期12、以左关联的形式增加装机容量3、年度发电总量4、年度售电完成率4、发电量及发电效率5、年售电完成比、售电回款比、管理费用比、运维费用比5、总装机容量6、最近日期7、最近…

005Node.js模块URL的使用

引入 URL 模块 要使用 URL 模块&#xff0c;首先需要在代码中引入它。可以使用以下代码将 URL 模块导入到你的脚本中&#xff1a; const url require(url);实例代码 const urlrequire(url); var apihttp://www.baidu.com?nameshixiaobin&age20; console.log(url.parse(…

去中心化社交媒体:分析 Facebook 在区块链平台上的角色

在当今数字时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分。然而&#xff0c;随着人们对数据隐私和信息控制的关注不断增加&#xff0c;传统的中心化社交媒体平台也面临着越来越多的质疑和挑战。为了应对这些挑战&#xff0c;越来越多的人开始探索去中心化社…

03 Git 之 远程仓库 + IDEA 集成使用 GitHub

1. 远程仓库 origin&#xff1a;即远程仓库 url 的指代。 从网上随意 clone 一个仓库&#xff0c;进入 .git/config 文件, 即可编辑远程仓库的 url&#xff0c;也可以自定义想要指代该 url 的名词。 1.1 本地仓库绑定远程仓库 并 推送、拉取 git remote add 【想要起的指代…

Java基础-知识点03(面试|学习)

Java基础-知识点03 String类String类的作用及特性String不可以改变的原因及好处String、StringBuilder、StringBuffer的区别String中的replace和replaceAll的区别字符串拼接使用还是使用StringbuilderString中的equal()与Object方法中equals()区别String a new String("a…

「51媒体网」汽车类媒体有哪些?车展媒体宣传

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 汽车类媒体有很多&#xff0c;具体如下&#xff1a; 汽车之家&#xff1a;提供全面的汽车新闻、评测、导购等内容。 爱卡汽车&#xff1a;同样是一个综合性的汽车信息平台&#xff0c;涵…

WPS二次开发系列:Gradle版本、AGP插件与Java版本的对应关系

背景 最近有体验SDK的同学反馈接入SDK出现报错&#xff0c;最终定位到原因为接入的宿主app项目的gradle版本过低导致&#xff0c;SDK兼容支持了android11的特性&#xff0c;需要对应的gradle插件为支持android11的版本。 现象 解决方案 将gradle版本升级至支持android11的插件版…

009、Python+fastapi,第一个后台管理项目走向第9步:ubutun 20.04下安装vscode+git环境配置

一、说明 git是一定要配置的&#xff0c;由于是白嫖的无影云电脑&#xff0c;东西得保存在网上&#xff0c;就继续白嫖gitee吧&#xff0c;显然国内github是不太合适的了 二、安装git 直接安装sudo apt install -y git git --version git version 2.25.1 三、配置git 在git上…

使用Postman发送跨域请求实验

使用Postman发送跨域请求 1 跨域是什么&#xff1f;2 何为同源呢?3 跨域请求是如何被检测到的&#xff1f;4 Postman跨域请求测试4.1 后端准备4.2 测试用例4.2.1 后端未配置跨域请求(1) 前端不跨域&#xff08;2&#xff09;前端跨域 4.2.2 后端配置跨域信息&#xff08;1&…

项目5-博客系统3+接口完

1.实现显示用户信息 ⽬前⻚⾯的⽤⼾信息部分是写死的. 形如 我们期望这个信息可以随着用户登陆而发生改变. • 如果当前⻚⾯是博客列表⻚, 则显⽰当前登陆⽤⼾的信息. • 如果当前⻚⾯是博客详情⻚, 则显⽰该博客的作者⽤⼾信息. 注意: 当前我们只是实现了显⽰⽤⼾名, 没有…

MySQL-触发器:触发器概述、触发器的创建、查看删除触发器、 触发器的优缺点

触发器 触发器1. 触发器概述2. 触发器的创建2.1 创建触发器语法2.2 代码举例 3. 查看、删除触发器3.1 查看触发器3.2 删除触发器 4. 触发器的优缺点4.1 优点4.2 缺点4.3 注意点 注&#xff1a;此为笔者学习尚硅谷-宋红康MySQL的笔记&#xff0c;其中包含个人的笔记和理解&#…

Node Sass does not yet support your current environment

Node Sass does not yet support your current environment 报错是node-sass的版本出现问题了&#xff0c;node-sass的版本是由node版本决定。 查看node和node-sass的版本的版本&#xff0c;进行版本匹配