1 #!/usr/bin/env python
2 # coding: utf-8
3
4 import numpy as np
5 import pandas as pd
6
7 path='C:/Users/Administrator/Downloads/notebook/order.xls'
8 path1='c:/users/administrator/downloads/notebook/buinfo.xls'
9
10 df_order=pd.read_excel(path,skiprows=1,dtype=object)
11 df_buinfo=pd.read_excel(path1,skiprows=1,dtype=object)
12 df_order1=df_order[['分公司','时间','渠道姓名','订单来源','订单状态','是否电信','竣工时间']]
13 df_buinfo1=df_buinfo[['分公司','账号','是否电信','状态','添加时间']]
14 df_order2=df_order1[(~df_order1.分公司.isin(['测试区局','移动部策划组']))&(~df_order1.时间.str.contains('2018'))]
15
16 df_order2['时间']=pd.to_datetime(df_order2['时间'])
17 df_order2['竣工时间']=pd.to_datetime(df_order2['竣工时间'])
18 df_order2['下单月份']=df_order2.时间.dt.month
19 df_order2['竣工月份']=df_order2.竣工时间.dt.month
20 df_order2['下单日']=df_order2.时间.dt.day
21 df_order2['竣工日']=df_order2.竣工时间.dt.day
22 def cutword(word):
23 position=word.find('分')
24 new_word=word[:position]
25 return new_word
26 df_order2['分公司']=df_order2.分公司.apply(cutword)
27
28 #df_order2[df_order2.分公司.str.contains('开')]
29 df_order2.ix[df_order2.分公司=='开县','分公司']='开州'
30 df_order月下单=df_order2[df_order2['订单状态']!='已重新下单'].groupby(['分公司','下单月份']).订单来源.count().unstack().fillna(0)
31 df_order月下单.loc['合计']=df_order月下单.apply(lambda x:x.sum())
32 df_order月下单.astype(int) #月下单统计
33
34 df_order月激活=df_order2[df_order2.订单状态=='已发佣金'].groupby(['分公司','竣工月份']).订单来源.count().unstack().fillna(0)
35 df_order月激活.loc['合计']=df_order月激活.apply(lambda x:x.sum())
36 df_order月激活.astype(int) #月激活统计
37
38 df_order日下单=df_order2[(df_order2['订单状态']!='已重新下单')&(df_order2.下单月份==10)].groupby(['分公司','下单日']).订单来源.count().unstack().fillna(0)
39 df_order日下单.loc['合计']=df_order日下单.apply(lambda x:x.sum())
40 df_order日下单.astype(int) #日下单统计
41
42 df_order日激活=df_order2[(df_order2['订单状态']=='已发佣金')&(df_order2.竣工月份==10)].groupby(['分公司','竣工日']).订单来源.count().unstack().fillna(0)
43 df_order日激活.loc['合计']=df_order日激活.apply(lambda x:x.sum())
44 df_order日激活.astype(int) #日激活统计
45
46 df_order二级日激活=df_order2[(df_order2['订单状态']=='已发佣金')&(df_order2.竣工月份==10)&(df_order2.是否电信=='否')].groupby(['分公司','竣工日']).订单来源.count().unstack().fillna(0)
47 df_order二级日激活.loc['合计']=df_order二级日激活.apply(lambda x:x.sum())
48 df_order二级日激活.astype(int) #二级日激活统计
49
50 df_buinfo1['添加时间']=pd.to_datetime(df_buinfo1['添加时间'])
51 df_buinfo1['月份']=df_buinfo1.添加时间.dt.month
52 df_buinfo1['日']=df_buinfo1.添加时间.dt.day
53 df_buinfo2=df_buinfo1[(df_buinfo1['添加时间']>='2019-01-01 00:00:00')&(~df_buinfo1.分公司.isin(['测试区局','移动部策划组','黑名单']))]
54 df_buinfo2['分公司']=df_buinfo2.分公司.apply(cutword)
55 df_buinfo2.ix[df_buinfo2.分公司=='开县','分公司']='开州'
56
57 df_buinfo月触点=df_buinfo2[df_buinfo2.是否电信=='否'].groupby(['分公司','月份']).账号.count().unstack().fillna(0)
58 df_buinfo月触点.loc['合计']=df_buinfo月触点.apply(lambda x:x.sum())
59 df_buinfo月触点.astype(int) #触点月报
60
61 df_buinfo触点日报=df_buinfo2[(df_buinfo2.是否电信=='否')&(df_buinfo2.月份==10)].groupby(['分公司','日']).账号.count().unstack().fillna(0)
62 df_buinfo触点日报.loc['合计']=df_buinfo触点日报.apply(lambda x:x.sum())
63 df_buinfo触点日报.astype(int) #触点日报
64
65 df_order3=df_order2[(df_order2['订单状态']=='已发佣金')&(df_order2.是否电信=='否')]
66 df_order4=df_order3[['分公司','渠道姓名','订单来源','是否电信','订单状态','下单月份','竣工月份','下单日','竣工日']]
67 df_order5=df_order4.drop_duplicates(['订单来源'],keep='first')
68
69 df_order有销触点=df_order5.groupby(['分公司','是否电信']).订单来源.count().fillna(0).unstack()
70 df_order有销触点.loc['合计']=df_order有销触点.apply(lambda x:x.sum())
71 df_order有销触点.astype(int) #有销触点
72
73 下单月报=df_order月下单.astype(int) #月下单统计
74 激活月报=df_order月激活.astype(int) #月激活统计
75 下单日报=df_order日下单.astype(int) #日下单统计
76 激活日报=df_order日激活.astype(int) #日激活统计
77 二级激活日报=df_order二级日激活.astype(int) #二级日激活统计
78 触点月报=df_buinfo月触点.astype(int) #触点月报
79 触点日报=df_buinfo触点日报.astype(int) #触点日报
80 有销触点=df_order有销触点.astype(int) #有销触点
81
82 with pd.ExcelWriter('d:/淘卡日报.xlsx',encoding='utf8',index=False) as writer:
83 下单月报.to_excel(writer,sheet_name='下单月报')
84 激活月报.to_excel(writer,sheet_name='激活月报')
85 下单日报.to_excel(writer,sheet_name='下单日报')
86 激活日报.to_excel(writer,sheet_name='激活日报')
87 二级激活日报.to_excel(writer,sheet_name='二级激活日报')
88 触点月报.to_excel(writer,sheet_name='触点月报')
89 触点日报.to_excel(writer,sheet_name='触点日报')
90 有销触点.to_excel(writer,sheet_name='有销触点')
91 print('结果已导出,请到D盘查看:淘卡日报.xlsx')

python 作业 日报模板输出的更多相关文章

  1. Python作业第一课

    零基础开始学习,最近周边的同学们都在学习,我也来试试,嘿嘿,都写下来,下次不记得了还能来看看~~ Python作业第一课1)登陆,三次输入锁定,下次不允许登陆2)设计一个三级菜单,菜单内容可自行定义, ...

  2. python基础_格式化输出(%用法和format用法)(转载)

    python基础_格式化输出(%用法和format用法) 目录 %用法 format用法 %用法 1.整数的输出 %o -- oct 八进制%d -- dec 十进制%x -- hex 十六进制 &g ...

  3. python设计模式之模板模式

    python设计模式之模板模式 编写优秀代码的一个要素是避免冗余.在面向对象编程中,方法和函数是我们用来避免编写冗余代码的重要工具. 现实中,我们没法始终写出100%通用的代码.许多算法都有一些(但并 ...

  4. thinkphp二维数组模板输出方法

    thinkphp二维数组模板输出方法 先写个记录,有空再整理发上来

  5. 《如何让TT T4模板输出多个文件(VS2010中)》-- access911.net 文章

    <如何让TT T4模板输出多个文件(VS2010中)>-- access911.net 文章   问题:   VS2010中自带的 TT 模板功能挺好用,但是如何定义其输出的目录,或者如何 ...

  6. 老李分享:开发python的unittest结果输出样式

    老李分享:开发python的unittest结果输出样式   Python的unittest结果命令行输出,格式比较乱.为了提高格式输出的可读性,实现可以不同的颜色标识.所以准备扩展Python的un ...

  7. Python中将一个对象倒序输出的4种方法

    Python中将一个对象倒序输出的4种方法就用列表来举例说明吧: >>> lst = [1,2,3,4,5,6] #创建测试列表 #方法1: >>> lst.rev ...

  8. python json.dumps()函数输出json格式,使用indent参数对json数据格式化输出

    在python中,要输出json格式,需要对json数据进行编码,要用到函数:json.dumps json.dumps() :是对数据进行编码 #coding=gbkimport json dict ...

  9. 【转】Python之向日志输出中添加上下文信息

    [转]Python之向日志输出中添加上下文信息 除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定 ...

随机推荐

  1. 数据类型-字符串(str)

    1.只要是被单引号,双引号,三引号括起来的,都是字符串类型    2.字符串里面元素:单个字母,单个符号,都称之为一个元素 例如:s='hello!' (6个元素) len(数据)统计数据的长度pri ...

  2. 【译】使用 WebView2 将最好的 Web 带到 .NET 桌面应用程序中

    在去年的 Build 大会上,我们引入了 WebView2,这是一个浏览器控件,可以用新的基于 Chrome 的 Microsoft Edge 来呈现 Web 内容(HTML / CSS / Java ...

  3. Kafka处理请求的全流程分析

    大家好,我是 yes. 这是我的第三篇Kafka源码分析文章,前两篇讲了日志段的读写和二分算法在kafka索引上的应用 今天来讲讲 Kafka Broker端处理请求的全流程,剖析下底层的网络通信是如 ...

  4. mysql-13-auto_increment

    # 标识列 /* 自增长列 可以不用手动的插入值,系统提供默认的序列值 1.标识列必须和 key 搭配使用,比如主键.唯一键.外键 2.一个表至多一个标识列 3.标识列的类型只能是数值型 4.标识列可 ...

  5. cdev_alloc与cdev_init区别

    struct cdev *cdev_alloc(void) { struct cdev *p = kzalloc(sizeof(struct cdev), GFP_KERNEL); if (p) { ...

  6. 编辑 编译 乱码 透彻 讲解 keil vscode notepad++

    1. 2.此时VSCODE内的改文件是乱码现象,进行如下操作,选择 通过编码重新打开, 选择GB 2312即可.(GB2312是兼容ANSI编码的) 详细解释一下: KEIL内是ANSI编码,VSCO ...

  7. Android高级控件(下)

    计时器(Chronometer) getBase() 基准时间 setFormat() 设置显示格式 start() 开始计时 stop() 停止计时 setOnChronometerListener ...

  8. 阅读源码,从ArrayList开始

    前言 为啥要阅读源码?一句话,为了写出更好的程序. 一方面,只有了解了代码的执行过程,我们才能更好的使用别人提供的工具和框架,写出高效的程序.另一方面,一些经典的代码背后蕴藏的思想和技巧很值得学习,通 ...

  9. fastjson,对象转json字符串的过程中对value为null的值的一些处理

    前言 fastjson是一个非常好用的java库,用于操作对象json序列化等等. 问题 最近在写代码的时候遇到问题,通过JSON.toJSONString方法将一个实体对象转为json字符串,转出来 ...

  10. dockerfile解析过程

    什么是dockerfile? DockerFile是用来构建docker镜像的文件,是由一系列命令和参数组成. 构建步骤? 1.编写dockerfile文件 2.docker build 3.dock ...