鍍金池/ 問答/數(shù)據(jù)分析&挖掘  Python/ 如何從海量商品每日數(shù)據(jù)中找到近期銷量持續(xù)增長的商品?

如何從海量商品每日數(shù)據(jù)中找到近期銷量持續(xù)增長的商品?

數(shù)據(jù)結(jié)構(gòu)如下
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
....

數(shù)據(jù)里存的是每天不同商品的流量和銷售情況,以(日期+產(chǎn)品ID)作為唯一值

核心需求其實是從海量的商品中,尋找符合條件的ID。
其實問題可以簡化成為“尋找最近3天內(nèi)銷量有連續(xù)增長的商品ID”

請問如何使用pandas篩選出一下的數(shù)據(jù):

  1. 最近3天內(nèi)每天【數(shù)據(jù)1】增長都大于0小于100的ID。
  2. 最近3天內(nèi)每天【數(shù)據(jù)2】都增長大于5%的ID
回答
編輯回答
風(fēng)畔
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:
        # 三天都有數(shù)
        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了

2017年11月25日 21:12