使用pandas按照商品和下单人统计下单数据

目录

一:需求描述

二:代码实现

三:注意事项


一:需求描述

最近运营那边给到一个excel表格,是一个小程序用户的下单数据,要以商品为维度,统计用户下单情况,主要是下单的商品总金额,单数和总单数。

给到的表格数据如下:

考虑用pandas实现,pandas提供了大量的数据处理函数,可以进行各种复杂的数据处理,包括数据清洗、数据转换、数据聚合等。使用pandas先对商品进行去重,然后循环商品,找出所有下单的人,再对下单人进行去重,按照商品-下单人作为关联条件进行统计金额,单数

最终实现的表格数据如下:

这里出现一个问题,由于给的表格存在金额数据为空的数据,在pandas中,可以使用fillna()方法对DataFrame中的空值进行处理。fillna()方法可以接受一个参数,用于指定如何填充空值。这样我金把额填充为0,这样出现的情况就是只要存在下单人就算一单,不管金额。还有其中情况是把金额为空的用户去除,在pandas中,可以使用dropna(inplace=True)删除含有空值的行,这样只会统计有下单金额的用户数据。

二:代码实现

首先要需要确保已经安装了pandas库。如果尚未安装,可以使用以下命令进行安装:

pip install pandas

代码编写:

import pandas as pddir = 'D://python/'
df=pd.read_excel(dir+'test.csv')#这个会直接默认读取到这个Excel的第一个表单dic,label = [],('下单人','商品','金额','单数','总数')
#删除空值
df.dropna(inplace=True)
#把金额为空的填充0
#df.金额.fillna(0, inplace = True)
#print(df)for 商品 in df.商品.unique():下单人 = df[df.商品 == 商品].下单人总数= 下单人.shape[0]print(总数)for 下单人 in 下单人.unique():关联条件 = df[(df.商品 == 商品) & (df.下单人==下单人)].fillna('空值')单数,金额 = 关联条件.shape[0],关联条件.金额.sum()dic.append('~'.join(map(str,(eval(_) for _ in label))).split("~"))
print(dic)
#可以按照商品排序
data = pd.DataFrame(dic, columns=label).sort_values(by='商品')
data.to_excel(dir+'output1.xlsx', sheet_name='Sheet1',index=False)
#可以按照金额排序
data = pd.DataFrame(dic, columns=label).sort_values(by='金额')
data.to_excel(dir+'output1.xlsx', sheet_name='Sheet1',index=False)
三:注意事项

1:删除含有空值的行

df.dropna(inplace=True)

2:空值填充

df.fillna(0, inplace = True) 

3: 某个列空值填充

df.金额.fillna(0, inplace = True)

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

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

相关文章

两周掌握Vue3(四):计算属性、监听属性、事件处理

文章目录 一、计算属性1.什么是计算属性2.代码示例 二、监听属性三、事件处理 代码仓库:跳转 当前分支:04 一、计算属性 1.什么是计算属性 Vue 中的计算属性具有以下作用: 数据处理:计算属性可以用于对数据进行处理和计算&…

开源笔记工具AFFiNE本地部署并结合内网穿透

前言 本篇文章讲解Notion开源平替全能知识库工具AFFINE如何本地部署,并实现公网远程访问。AFFiNE 是一个全新的开源项目,旨在克服 Notion 和 Miro 在安全和隐私方面的一些局限性。它的设计目标是帮助用户将会议记录、待办事项、文档中的目标、视频会议白…

如何运用自养号测评策略在Lazada、Shopee上轻松提升销售和排名

卖家们常常会为Lazada、Shopee店铺销量不佳而感到困惑。然而,仅仅感叹并不能解决问题。作为卖家,我们需要深入分析问题,并采取有效的措施来解决它们。基本功是提升销量的基石,但仅仅依靠基本功是不够的。我们需要将运营和测评结合…

【Java】正则表达式( Pattern 和 Matcher 类)

快速入门 Java 提供了 java.util.regex 包,它包含了 Pattern 和 Matcher 类,用于处理正则表达式的匹配操作。 java.util.regex 包主要包括以下三个类: Pattern 类: pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共…

程序员必知!组合模式的实战应用与案例分析

组合模式是一种设计模式,允许将对象组合成树形结构并像单个对象一样使用它们,这种模式在处理类似公司组织结构这样的树形数据时非常有用,通过组合模式,我们可以将公司和部门视为同一类型的对象,从而以统一的方式处理发…

SV-9001 壁挂式网络采播终端

SV-9001 壁挂式网络采播终端 一、描述 SV-9001是深圳锐科达电子有限公司的一款壁挂式网络采播终端,具有10/100M以太网接口,配置一路线路输入和一组麦克风输入,可以直接连接音源输出设备或麦克风,将采集音源编码后发送至网络播放终…

仲晶同志简历

女,汉族。1972年出生,国防大学科技与装备教研室教官。1992年,仲晶毕业于军事气象学院,1996年成为国防大学国防科技发展战略学硕士研究生,毕业后留校任教。曾出版过9部军事专著,先后发表学术论文100多万字。…

CANoe中最常见的文件类型

文件类型图标说明文件说明保存步骤附加说明example.cfg此文件相当于一个集成的可执行文件,双击该图标就能打开工程Flie-》savepanel.xvp是vxp,控制盘文件home界面。打开panel 图标。在专门编辑界面保存。trace界面 导出的报文 报文存在多种格式&#xff…

Vue3+Vite项目搭建

为什么选择vite而不是vue-cli: vite下一代前端开发与构建工具 vite创建的项目默认vue3 优势: 开发环境中,无需打包,可快速的冷启动 轻量快速的热重载(HMR) 真正的按需编译,不在等待整个应用…

Elasticsearch:是时候离开了! - 在 Elasticsearch 文档上使用 TTL

作者:来自 Elastic David Pilato 想象一下,圣诞老人必须向世界上所有的孩子们分发礼物。 他有很多工作要做,他需要保持高效。 他有一份所有孩子的名单,并且知道他们住在哪里。 他很可能会将礼物按区域分组,然后再交付。…

递增的三元子序列

题目链接 递增的三元子序列 题目描述 注意点 1 < nums.length < 500000子序列的三个元素在原数组中可以不是连续的实现时间复杂度为 O(n) &#xff0c;空间复杂度为 O(1) 的解决方案 解答思路 使用贪心算法&#xff0c;在遍历数组时&#xff0c;要记录当前数组中的最…

大模型学习与实践笔记(五)

一、环境配置 1. huggingface 镜像下载 sentence-transformers 开源词向量模型 import os# 设置环境变量 os.environ[HF_ENDPOINT] https://hf-mirror.com# 下载模型 os.system(huggingface-cli download --resume-download sentence-transformers/paraphrase-multilingual-…