weixin_46798309 2022-10-07 16:29 采纳率: 100%
浏览 211
已结题

根据流水,按月统计销售采购。excel,python

原始表格:流水

img

生成表格:销售1-统计每个月的销量

img


销售2-按客户统计每个月的销量

img

采购统计-统计每个月的采购量

img

  • 写回答

7条回答 默认 最新

  • 游一游走一走 2022-10-08 14:53
    关注

    安装依赖

    pip install numpy pandas openpyxl xlrd
    

    销售

    # coding=utf-8
    import os
    
    import numpy
    import pandas as pd
    
    df = pd.DataFrame(pd.read_excel('/Users/zhangyz/Desktop/海/流水.xls', header=1))
    df = df.dropna(subset=['单据日期', '出库数量'])
    df['单据日期'] = pd.to_datetime(df['单据日期'], format='%Y-%m-%d %H:%M:%S')
    df['Month'] = df['单据日期'].dt.month
    df = df.groupby(['商品编码', '商品名称', '商品规格', '单位', '生产企业', '批号', 'Month'], as_index=False).agg({'出库数量': 'sum'})
    groupByColumns = ['商品编码', '商品名称', '商品规格', '单位', '生产企业', '批号']
    df = pd.pivot(data=df,
                  index=groupByColumns,
                  columns='Month',
                  values=['出库数量'])
    headers = []
    headers.extend(df.axes[0].names)
    for i in df.axes[-1].levels[1].values:
        headers.append(str(i) + '月')
    temp_xlsx = 'temp.xlsx'
    df.to_excel(temp_xlsx, sheet_name='bluewhale_cc', header=False)
    df = pd.DataFrame(pd.read_excel(temp_xlsx))
    for i in range(0, len(groupByColumns)):
        df['Unnamed: ' + str(i)].ffill(inplace=True)
    df.to_excel('销售.xlsx', sheet_name='bluewhale_cc', header=headers, index=False)
    os.remove(temp_xlsx)
    

    客户销售

    # coding=utf-8
    import os
    
    import numpy
    import pandas as pd
    
    df = pd.DataFrame(pd.read_excel('/Users/zhangyz/Desktop/海/流水.xls', header=1))
    df = df.dropna(subset=['单据日期', '出库数量'])
    df['单据日期'] = pd.to_datetime(df['单据日期'], format='%Y-%m-%d %H:%M:%S')
    df['Month'] = df['单据日期'].dt.month
    df = df.groupby(['商品编码', '商品名称', '商品规格', '单位', '生产企业', '批号', '客户名称', 'Month'], as_index=False).agg({'出库数量': 'sum'})
    groupByColumns = ['商品编码', '商品名称', '商品规格', '单位', '生产企业', '批号', '客户名称']
    df = pd.pivot(data=df,
                  index=groupByColumns,
                  columns='Month',
                  values=['出库数量'])
    headers = []
    headers.extend(df.axes[0].names)
    for i in df.axes[-1].levels[1].values:
        headers.append(str(i) + '月')
    temp_xlsx = 'temp.xlsx'
    df.to_excel(temp_xlsx, sheet_name='bluewhale_cc', header=False)
    df = pd.DataFrame(pd.read_excel(temp_xlsx))
    for i in range(0, len(groupByColumns)):
        df['Unnamed: ' + str(i)].ffill(inplace=True)
    df.to_excel('客户销售.xlsx', sheet_name='bluewhale_cc', header=headers, index=False)
    os.remove(temp_xlsx)
    

    进货

    # coding=utf-8
    import os
    
    import numpy
    import pandas as pd
    
    df = pd.DataFrame(pd.read_excel('/Users/zhangyz/Desktop/海/流水.xls', header=1))
    df = df.dropna(subset=['单据日期', '入库数量'])
    df['单据日期'] = pd.to_datetime(df['单据日期'], format='%Y-%m-%d %H:%M:%S')
    df['Month'] = df['单据日期'].dt.month
    df = df.groupby(['商品编码', '商品名称', '商品规格', '单位', '生产企业', '批号', 'Month'], as_index=False).agg({'入库数量': 'sum'})
    groupByColumns = ['商品编码', '商品名称', '商品规格', '单位', '生产企业', '批号']
    df = pd.pivot(data=df,
                  index=groupByColumns,
                  columns='Month',
                  values=['入库数量'])
    headers = []
    headers.extend(df.axes[0].names)
    for i in df.axes[-1].levels[1].values:
        headers.append(str(i) + '月')
    temp_xlsx = 'temp.xlsx'
    df.to_excel(temp_xlsx, sheet_name='bluewhale_cc', header=False)
    df = pd.DataFrame(pd.read_excel(temp_xlsx))
    for i in range(0, len(groupByColumns)):
        df['Unnamed: ' + str(i)].ffill(inplace=True)
    df.to_excel('进货.xlsx', sheet_name='bluewhale_cc', header=headers, index=False)
    os.remove(temp_xlsx)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 10月18日
  • 已采纳回答 10月10日
  • 赞助了问题酬金1元 10月8日
  • 赞助了问题酬金1元 10月8日
  • 展开全部

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘