python在手效率我有:职场自动化实践指南(一)

本文主要介绍在工作中怎么利用 python 提升工作效率的

背景

每月月初的时候,人力资源那边会给我们一份销售表格,我们需要把表格里的内容整理成既定的格式,生成 3 个子文件,然后上传到后台的提成分摊系统,来计算出销售提成,并生成财务报表。

其中,把表格里的内容整理成既定的格式,生成3个子文件的方式,之前的同事完全是手工处理的,这样做的弊端是什么呢?

  1. 麻烦,每次都需要粘贴复制;
  2. 容易出错,因为有些列的内容需要处理一下;
  3. 耗时,即便是熟练操作,也需要至少十分钟。

所以,交接到我手里后,就对这部分工作进行了脚本化

脚本处理

import pandas as pd

SOURCE_FILE_PATH = '.../24年6月签单明细.xlsx'

OUTPUT_MC_PATH = '.../2024-06/2024-06MC.xlsx'

OUTPUT_CC_PERSON = '.../2024-06/2024-06cc人员.xlsx'

OUTPUT_CC_ORDER = '.../2024-06/2024-06cc订单.xlsx'

split = SOURCE_FILE_PATH.split('/')


def mc(df):
    print('LP明细数据开始处理')

    # 创建新的DataFrame来存储整理后的数据
    new_df = pd.DataFrame()

    # 重命名列名
    column_mapping = {
        '订单id': '续费订单id',
        'student_id': '学生ID',
        'student_name': '学生姓名',
        'staff_id': 'LP_ID',
        'staff_name': 'LP',
        '订单支付时间': '续费时间',
        '续费金额': '续费金额',
        '提点': '提点'
    }
    df.rename(columns=column_mapping, inplace=True)

    # 复制其他列到新的DataFrame
    new_df['续费订单id'] = df['续费订单id']
    new_df['学生ID'] = df['学生ID']
    new_df['学生姓名'] = df['学生姓名']
    new_df['LP_ID'] = df['LP_ID']
    new_df['LP'] = df['LP']
    new_df['续费时间'] = df['续费时间']
    new_df['续费金额'] = df['续费金额']

    # 将提点列转换为字符串类型
    df['提点'] = df['提点'].astype(str)

    # 转换提点列的百分比为小数,并保留4位小数
    new_df['提点'] = df['提点'].str.rstrip('%').astype(float).round(4)

    new_df['类型'] = 1

    # 将整理后的数据保存到新的Excel文件中
    new_df.to_excel(OUTPUT_MC_PATH, index=False)

    print('LP明细数据处理完成')


def ccPerson(df):
    print('CC提成数据开始处理')

    # 创建新的DataFrame来存储整理后的数据
    new_df = pd.DataFrame()

    # 重命名列名
    column_mapping = {
        '工号': '系统ID',
        '姓名': '销售姓名',
        '总GMV': '销售额',
        '提成比例': '提成比例',
        '个人提成': '新签提成'
    }
    df.rename(columns=column_mapping, inplace=True)

    # 复制工号、姓名列到新的DataFrame
    new_df['系统ID'] = df['系统ID']
    new_df['销售姓名'] = df['销售姓名']

    # 处理销售额列
    new_df['销售额'] = df['销售额'].astype(str).str.replace(',', '')  # 去除逗号
    new_df['销售额'] = df['销售额'].astype(float).round(0).astype(int)  # 四舍五入并转为整数

    new_df['销售量'] = 0

    # 处理提成比例列
    new_df['提成比例'] = df['提成比例'].astype(str).str.rstrip('%').astype(float).round(4)

    # 处理新签提成列
    new_df['新签提成'] = df['新签提成'].astype(str).str.replace(',', '')  # 去除逗号
    new_df['新签提成'] = df['新签提成'].astype(float).round(0).astype(int)  # 四舍五入并转为整数

    new_df['归属月份'] = split[-2]

    # 按照工号升序排列
    new_df.sort_values(by='系统ID', inplace=True)

    # 将整理后的数据保存到新的Excel文件中
    new_df.to_excel(OUTPUT_CC_PERSON, index=False)
    print('CC提成数据处理完成')


def ccOrder(df):
    print('CC明细数据开始处理')

    # 创建新的DataFrame来存储整理后的数据
    new_df = pd.DataFrame()

    # 重命名列名
    column_mapping = {
        '订单ID': '订单ID',
        '学生ID': '学生ID',
        'cc_id': '销售ID',
        'cc': '销售',
        '下单时间': '支付日期',
        # '下单日期': '支付日期',
        '实际支付金额': '金额'
    }
    df.rename(columns=column_mapping, inplace=True)

    # 复制其他列到新的DataFrame
    new_df['订单ID'] = df['订单ID']
    new_df['学生ID'] = df['学生ID']
    new_df['销售ID'] = df['销售ID']
    new_df['销售'] = df['销售']

    new_df['支付日期'] = df['支付日期'].astype(str)
    new_df['支付日期'] = new_df['支付日期'].str.replace('\.0$', '', regex=True)

    new_df['金额'] = df['金额']

    new_df['归属月份'] = split[-2]

    new_df['退费'] = None

    # 将整理后的数据保存到新的Excel文件中
    new_df.to_excel(OUTPUT_CC_ORDER, index=False)
    print('CC明细数据处理完成')


# 读取 Excel 文件
xlsx = pd.ExcelFile(SOURCE_FILE_PATH)

# 遍历每个 sheet
for sheet_name in xlsx.sheet_names:
    # 读取当前 sheet 的数据
    df = pd.read_excel(xlsx, sheet_name=sheet_name)
    if sheet_name == 'LP明细':
        mc(df)
    elif sheet_name == 'CC提成':
        ccPerson(df)
    elif sheet_name == 'CC明细':
        ccOrder(df)
    else:
        print('无效的sheet')

总结

在日常工作中,有很多提升效率的手段,若能合理的运用,即能达成事半功倍的效果。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值