# 外部迴圈
for ad_num in range(len(ad_pd1)):
# 外部迴圈-程式碼1
ad_total=[]
ad_total_mon = []
ad_total_mon = pd.DataFrame(ad_total_mon)
# 內部迴圈
for i in range(len(final_2018)):
# 內部迴圈-程式碼 1
# 舉例:12月份 critei(廣告代號)的資料
ad_mon = final_2018[i][final_2018[i]['廣告代號']==str(i+1)+'月_'+ad_pd1[ad_num]]
# 重新排序index
ad_mon = ad_mon.reset_index(drop = True)
# 將月份資料加入ad_total中
ad_total.append(ad_mon)
# 內部迴圈-程式碼 2
# 將單一個月的"第幾次購買"人數建立df
# 把每月份的資料以第幾次購買分群
ad_mon_gp = ad_total[i].groupby('第幾次購買')
# 求出每群利潤的總額
ad_mon_profit = ad_total[i].groupby('第幾次購買')['利潤'].sum().tolist()
# 建立DataFrame
mon_final =pd.DataFrame({'月份':str(i+1)+'月',
'第幾次購買':ad_mon_gp.size().index.tolist(),
'人數':ad_mon_gp.size().values.tolist(),
'利潤':ad_mon_profit})
ad_total_mon = pd.concat([ad_total_mon,mon_final])
# 內部迴圈-程式碼 3
ad_total_mon['平均利潤'] = round(ad_total_mon['利潤'] / ad_total_mon['人數'] )
# 外部迴圈-程式碼bonus
# 將資料量太少的排除(可調整:目前為10)
if len(ad_total_mon) < 10:
continue
# 外部迴圈-程式碼 2
# 計算每個月份利潤的總和
mon_tt_profit = ad_total_mon.groupby('月份')['利潤'].sum()
mon_tt_profit = mon_tt_profit.reset_index()
# 外部迴圈-程式碼 3
# 計算每個月份購買人數
mon_tt_people = ad_total_mon.groupby('月份')['人數'].sum()
mon_tt_people = mon_tt_people.reset_index()
# 外部迴圈-程式碼 4
# 計算月份人均利潤
mon_tt_profit['平均利潤'] = round(mon_tt_profit['利潤'] / mon_tt_people['人數'])
# 外部迴圈-程式碼 5
# 存取該廣告有利潤的月份
mon_list = ad_total_mon['月份'].unique().tolist()
# 外部迴圈-程式碼 6
# 先把 10 11 12月的資料存下來
oct_nov_dec = []
oct_nov_dec = pd.DataFrame(oct_nov_dec)
for i in ['10月','11月','12月']:
oct_nov_dec= pd.concat([oct_nov_dec,mon_tt_profit[mon_tt_profit['月份']== i]])
# 外部迴圈-程式碼 7
# 把原本的順序在前面10 11 12月資料刪除
if '10月' in mon_list:
mon_tt_profit.drop(mon_tt_profit.loc[mon_tt_profit['月份']=='10月'].index, inplace=True)
if '11月' in mon_list:
mon_tt_profit.drop(mon_tt_profit.loc[mon_tt_profit['月份']=='11月'].index, inplace=True)
if '12月' in mon_list:
mon_tt_profit.drop(mon_tt_profit.loc[mon_tt_profit['月份']=='12月'].index, inplace=True)
# 在尾端補上 10 11 12月資料
mon_tt_profit = pd.concat([mon_tt_profit,oct_nov_dec])
mon_tt_profit = mon_tt_profit.reset_index(drop = True)
# 外部迴圈-程式碼 8
# 年平均資料
mon_mean_profit =[]
for i in range(12):
mon_mean_profit.append(round(mon_tt_profit.groupby('月份')['平均利潤'].sum().mean()))
# 資料視覺化-下回待續