Fork me on GitHub

Pandas解决电商需求

Pandas解决一个电商需求

本文基于一份模拟的电商数据,讲解Pandas几个常用函数的使用技巧。

数据介绍

模拟的一份数据,有6个字段信息:

  • 订单号:每个订单号可能存在多条记录,最终会有通过或者未通过的判断
  • 每个订单存在跟单员和审核员的操作以及对应的时间
  • 审核员会对判断每个记录是否通过

需求

找出所有最终状态为通过的订单的【最早跟单员与对应时间】和【最晚审核员与对应时间】

比如订单S03,对应的数据应该为:

再比如S04订单:两个状态都是未通过,不在最终的结果里面

下面介绍下如何通过Pandas的函数来实现,主要用到的函数:

  • read_excel:读取文件
  • isin:成员判断
  • sort_values:排序
  • drop_duplicates:去重
  • merge:合并

步骤1:读取数据

数据的排列是无序的,直接读取进来:

步骤1:确定哪些订单最终“通过”审核

In [3]:

1
2
df1 = df[df["审核状态"] == "通过"]
df1

确定通过的订单:

In [4]:

1
2
pass_orders = df1["订单号"].tolist()
pass_orders

Out[4]:

1
['S02', 'S03', 'S01', 'S06']

步骤2:取出通过订单的全部信息

In [5]:

1
2
df2 = df[df["订单号"].isin(pass_orders)]
df2

步骤3:对每个订单基于【审核时间】升序排列

In [6]:

1
2
3
4
df3 = df2.sort_values(["订单号","审核时间"],
ascending=[True,True],
ignore_index=True)
df3

在这里我们可以确定最终想要的数据:每个订单的所需信息

步骤4:取出最早跟单时间记录

In [7]:

1
2
df4 = df3.drop_duplicates(subset=["订单号"], keep="first")[["订单号","跟单员","跟单时间"]]
df4

Out[7]:

步骤5:取出最晚审核时间记录

In [8]:

1
2
df5 = df3.drop_duplicates(subset=["订单号"], keep="last")[["订单号","审核员","审核时间"]]
df5

Out[8]:

步骤6:数据合并

In [9]:

1
2
df6 = pd.merge(df4,df5)    # 数据合并
df6

Out[9]:

本文标题:Pandas解决电商需求

发布时间:2022年07月20日 - 00:07

原始链接:http://www.renpeter.cn/2022/07/20/Pandas%E8%A7%A3%E5%86%B3%E7%94%B5%E5%95%86%E9%9C%80%E6%B1%82.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea