調(diào)用上述函數(shù)得到每個部門下影響最大的類目:
final=max_lm(result,df)
如果我們想把結(jié)果導出到excel表中,可以這樣寫:
writer=pd.ExcelWriter('output_today.xlsx')result.to_excel(writer, sheet_name='max_departments')final.to_excel(writer, sheet_name='max_itemcats')writer.save()
總結(jié)
準備好python開發(fā)環(huán)境,即 “代碼編輯器+ipython”;
寫代碼前清晰定義實現(xiàn)最終目標的每個步驟;
寫代碼的過程中識別做事的模式,創(chuàng)造工具簡化復(fù)用性操作;
利用for循環(huán)遍歷列表。
最終代碼
import pandas as pd import datetimetoday="%s"%(datetime.date.today())yesterday="%s"%(datetime.date.today()-datetime.timedelta(days=1))qiantian="%s"%(datetime.date.today()-datetime.timedelta(days=2))print("昨天和前天的日期分別是:")print(yesterday,qiantian)df=pd.read_excel('/Users/xiangzhendong/Downloads/income_data.xls')def max_change(df, rows): df_pivot=df.pivot_table('income',index=rows,columns='date',aggfunc='sum') df_pivot['change_amt']=df_pivot[yesterday]-df_pivot[qiantian] df_pivot['change_pct']=abs(df_pivot['change_amt']/df_pivot['change_amt'].sum()) return df_pivot[df_pivot['change_pct']>=0.1]result=max_change(df,'department')print(result)def max_lm(result,df): frames=[] for i in range(len(result)): result_lm=max_change(df[df['department']==result.index[i]],'itemcats') result_lm['department']=result.index[i]