如何从海量商品每日数据中找到近期销量持续增长的商品?

数据结构如下
date     product_id   uv        sell
2018-3-8   001        68        199
2018-3-8   002        72        288
2018-3-9   001        71        85  
2018-3-9   002        84        199
....

数据里存的是每天不同商品的流量和销售情况,以(日期+产品ID)作为唯一值

核心需求其实是从海量的商品中,寻找符合条件的ID。
其实问题可以简化成为“寻找最近3天内销量有连续增长的商品ID”

请问如何使用pandas筛选出一下的数据:

  1. 最近3天内每天【数据1】增长都大于0小于100的ID。
  2. 最近3天内每天【数据2】都增长大于5%的ID
阅读 2.4k
1 个回答
import pandas as pd
threedays = ['2018/3/9', '2018/3/10', '2018/3/11']
df = pd.read_csv('test.csv')
df = df[df['data_date'].isin(threedays)].groupby(['data_date', 'product_id']).sum().reset_index(drop=False) # 过滤最近三天并求和

def f(df):
    if len(df) == 3:
        # 三天都有数
        r = [df['uv'][df['data_date'] == threedays[i]].values[0] for i in range(3)]
        return (r[2] - r[1] < 100) and r[2] > r[1] and (r[1] - r[0] < 100) and r[1] > r[0] #增长大于0小于100
    else:
        return False

r = df.groupby('product_id').apply(f)
print(list(r[r==True].index))

条件2类比,把f改一下就ok了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏