python报表自动化

实现Python报告自动化这是上周做的最有激情的事情咯,做这件事情的目的:第一、熟悉python之前也有用但是一段时间不用就生疏了,第二、提高工作效率,做好了个人每天能节约十几分钟,随着在公司的推广节约的时间也会越来越多(不好推),下面看看整个的流程:
没用Python之前的流程
早上工作流程:
第一:各平台下载前天的订单数据并放到相应的位置
第二:平台数据复制到各平台的统计表中并匹配出日期、产品型号,并算出每个产品的销量和销售
第三:把销量、销售额数据复制至全网销量统计表和全网销售统计表中;
以上三步花二十分钟当天的基本工作算是完成了;
用python后的流程:
第一步:各平台下载前天的订单数据并放到相应的位置
第二步:利用当天日期函数datetime -1 得到日期,利用日期+os模块在相应的文件夹中找到相应的数据,并把数据读取为dataFrame ,这一步会得到 原始文件的dataFram和date
第三步:读取相应门店的型号对照表为dataFrame 并把原始数据的dataFrame和对照表的dataFrame中的“商品id”列的类型转为字符串类型;
第四步:利用pd.merge函数左连接匹配原始文件和型号对照表,匹配出每个订单的型号并加上日期列,这里当原始数据表的型号没有全部匹配出来时,把没有匹配出来的数据输出到型号对照表中,在型号对照表添加相应的型号后重新匹配处理,当全部匹配出来后把数据按特定的顺序写入到相应店铺统计表中,同时选出相应的列根据金额排序后写入到全网销量统计表和全网销售表中,到这里大概就完成了利用python进行数据统计了,各个平台的数据统计方式不太一样,根据计算方式用python对原始数据进行处理就好。下面看具体的代码:
第一:根据输入的数字找到相应的文件并读取为dataframe函数

def time_file(number,url_1,url_2=folder_10):
    statistical_date=(datetime.datetime.now()-datetime.timedelta(days=number)).strftime("%Y-%m-%d")
    mm=statistical_date[5:7]+"月"
    file_list_url=url_1+mm+folder_10
    url=file_name(file_list_url,statistical_date)        
    #url_3="【生意参谋】商品效果-"+statistical_date+"-"+statistical_date+".xls"
    #url=url_1+mm+url_2+url_3
'''
    if url==None:
        print ("没有相应的文件,请添加文件")        
        return         
    print("处理文件的日期为:",statistical_date)
    print("处理文件的路径是:",url)     
    try :
        df=pd.read_excel(url,header=3)
        print("文件已读取为df")
        #转变“商品ID“的类型
        df['商品id']=df['商品id'].astype(str)
        return df,statistical_date
    except IOError:
        print ("没有相应文件 ")                
def file_name(file_dir,date):
    flie_list=[]
    for root,dirs,files in os.walk(file_dir):
        flie_list.append(files)     
    for  i in flie_list[0]:
        b="".join(i)
        if date in b:
            return file_dir+b

第二:把数据写入全网销量、全网销售的数据

#功能传入日期和原始文件的df 自动处理文件
def tianjia(date,df,tiaomao_file,dianpu,xinghao=taoxixinghao):
  #第二步读取型号对照表
  xinghao=pd.read_excel(taoxixinghao)
  xinghao['商品id']=xinghao['商品id'].astype(str)    
  df_1=pd.merge(df,xinghao,how='left',on='商品id')
  df_1['日期']=date
  df_1.insert(0,'型号',df_1.pop('型号'))
  df_1.insert(1,'日期',df_1.pop('日期'))
  df_nan=df_1.loc[df_1['型号'].isnull()]
  
  if len(df_nan)>0:
      df_nan=df_nan.loc[:,['商品id','商品标题_x','商品链接_x']]
      df_nan['店铺']=dianpu
      df_nan.insert(0,'店铺',df_nan.pop('店铺'))
      df_na=df_nan.reset_index()
      df_na.pop('index')
      df_new_sheet(taoxixinghao,'商品效果',df_na)
      print("型号没有全部匹配出来,请在型号表添加相关型号")     
      
  else:
      t=[]
      for i in range(len(df.columns)+2):
          t.append(i)
      df_2=df_1.ix[:,t]
      #将数据添加天猫统计表中
      print ('开始把数据写入店铺统计表文件')
      df_new_sheet(tiaomao_file,'所有终端',df_2)
      print ("写入店铺统计表完成")        
      
      #数据添加至全网销量统计表中
      df_1['店铺']=dianpu
      df_3=df_1.loc[:,['店铺','日期','型号','支付商品件数','支付金额']]
      df_4=df_3[df_3['支付金额']>0]
      df_5=df_4.sort_index(by=['支付金额'],axis=0,ascending=False)
      df_6=df_5.reset_index(drop=True)    
      
      df_new_sheet(quanwangxiaoliang,'所有终端',df_6)
      print("已把文件出入全网销量表")

第三:辅助表 把dataframe从指定的xls最后一行开始写入

#功能把dataFrame新增到xls文件中(只能是xls文件)
#从xls表最后一行新增加dataframe数据 
#excel_through 为工作薄路径和工作薄名
#sheet操作的工作表
#data 要写入工作薄的df
#这里要工作薄文件格式要为xls文件 
def df_new_sheet(excel_through,sheet,data):
    #打开需要操作的excel表
    ooutfile=excel_through
    wb=xlrd.open_workbook(ooutfile) #保留原格式formatting_info=True
    #复制原有表
    newb=copy(wb)
    #获取原有excel表中的sheet
    sumsheet=newb.get_sheet(sheet)    
    #k表示该sheet的最后一行
    k=len(sumsheet.rows)    
    #获取df的行数和列数
    hang=len(data)
    lie=len(data.columns)  
    #循环数据放入sheet中
    for i  in range(hang):
        for x in range(lie):
            sumsheet.write(k+i,x,data.ix[[i]].values[0][x])#K 行 0列
    newb.save(ooutfile) 

注意点:1、型号对照表中每个“商品id”都要是唯一的,不然相应的型号会重复匹配,之前就遇到这个坑;2、“商品id”类型要转为为字符串类型
这是最简单的python利用了吧,接下来所有表格的数据都改为python处理,同时把数据导入mysql中,接下来玩Python+MySQL+机器学习啦! 最近有了一个学习对象,有个同事每天9点之前到公司,晚上11点之后回住所基本上没有休息,期间都是在各种学习并把学到的知识用于提升工作效率,了解他之后打破了我自认为很努力的幻觉,自己学习到8点就以为自己很努力拉,跟他一对比真的不算什么了,虽然个人提倡工作也是为了更好的生活,但是自己努力程度明显不够,有些人你见到了就算是长见识了,这算是见到活人的力量咯,接下来希望跟他一样好好学习,早日做出成果出来,当然工作之余不会忘了追追妹子+锻炼身体咯。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,667评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,361评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,700评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,027评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,988评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,230评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,705评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,366评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,496评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,405评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,453评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,725评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,803评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,015评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,514评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,111评论 2 341

推荐阅读更多精彩内容