# -*- coding: utf-8 -*- """ アクセス数をもとにしたレコメンドロジック """ import sys sys.path.append("/var/local/mode2") from .base import ModelBase from lib.WebRecommend.utils.dataAccess import dataAccess import pandas as pd import datetime as dt class AccessTrend(ModelBase): def __init__(self, domain=False): self.recommend_category = 'access_trend' self.domain = domain def calcTrend(self, **kwargs): # アクセス数推移からトレンドを計算 da = dataAccess(self.domain) visits_data = da.getVisitsSummary() data = [] key_list = visits_data.keys() for k in key_list: if visits_data[k]: data.append({ 'date': k, 'PV': visits_data[k]['nb_actions'], 'UU': visits_data[k]['nb_uniq_visitors'] }) else: # '2017-09-09':[]のようにデータが存在しない場合 data.append({ 'date': k, 'PV': 0, 'UU': 0 }) df = pd.DataFrame(data, columns=['date', 'PV', 'UU']) df = df.set_index('date') df = df.sort_index() print(df) pv_mean = df['PV'].mean() tail_mean = df['PV'].tail(7).mean() res = [] if tail_mean > pv_mean: trend = 'up' elif tail_mean == pv_mean: trend = 'nochange' else: trend = 'down' res.append(dict(label='PV', trend=trend, mean=pv_mean, tail_mean=tail_mean)) print(res) return res def getRecommend(self): # アクセス数推移のトレンド情報からレコメンド文を生成 res = [] at = self.calcTrend() for i in at: if i['trend'] == 'up': text = "直近のアクセス数が増加傾向となっています。"\ "ページ別アクセス数上位のリンクを配置し、"\ "リンクを目立たせる等の改良をすると、"\ "さらにアクセス数の増加が期待できます。" res.append(dict(date=str(dt.date.today()), text=text)) if i['trend'] == 'nochange': text = "直近のアクセス数の変化があまり無いようです。"\ "ページ数をさらに増やしたり、アクセス数上位のウェブサイトの"\ "充実をはかるとアクセス数の増加が期待できます。" res.append(dict(date=str(dt.date.today()), text=text)) if i['trend'] == 'down': text = "直近のアクセス数が減少傾向のようです。"\ "検索トレンドや関連検索ワードの相対値が低い場合、"\ "サイト分析ワードの再設定を行い、人気のワードを"\ "ウェブサイト内に増やすことでアクセス数の増加が期待できます。" res.append(dict(date=str(dt.date.today()), text=text)) return res