简单的使用Python处理Excel数据文件

楼主目前正在学习python,从各种渠道获取不少的例子,这些例子简单但具有启发性。在记录自己学习的同时,分享一起探讨。

这个小例子时楼主在某乎专栏中发现的,是一个简单的excel数据集,下面是数据的部分数据截图:

 

目标城市部分数据:

现在要做的是计算总的销售额、订单总量、目标城市的销售额以及目标城市的订单量。

下面是代码:

import pandas as pd


def get_sum(data, agency):
    writer = pd.ExcelWriter('数据汇总.xlsx')  # 设置保存的Excel文件名
    stars = 0  # 从第1行开始写入数据
    for i in agency:  # 按照代理商进行迭代,并按日期分组统计数据汇成Excel表格
        # data_agency = data[data['代理商'] == i]  #  记录每个代理商对应的所有记录,后面加个print就可以输出相应代理商的所有记录
        order = data.groupby('日期')['城市'].count()
        sold = data.groupby('日期')['价格(元)'].sum()
        order_target = data[data['是否为目标城市'] == 1].groupby('日期')['城市'].count()
        sold_target = data[data['是否为目标城市'] == 1].groupby('日期')['价格(元)'].sum()
        table = pd.concat([order, sold, order_target, sold_target], axis=1)  # 将各字段堆叠在一起(个人为了区分merge,理解成堆叠)
        table.columns = ['总订单数额', '总销售额', '目标城市订单数额', '目标城市销售额']
        title = pd.DataFrame(['代理商:' + i])  # 设置每个表格的小title
        title.to_excel(writer, startrow=stars, index=False, header=False)  # 按每个代理商的数据逐行写入
        table.to_excel(writer, startrow=stars + 1)  # 按每个代理商的数据逐行写入
        stars = stars + len(table) + 3  # 下一个代理商写入数据的起始位置
    print(table)
    writer.save()  # 保存Excel文件


def target_city(data, agency):
    info = pd.read_excel('目标城市.xlsx')  # 读取目标城市Excel表格
    info = list(info['城市'])  # 转换成list列表
    data['是否为目标城市'] = None  # 新建判断字段
    data.loc[data['城市'].isin(info), '是否为目标城市'] = 1  # 判断赋值
    data.loc[data['是否为目标城市'].isnull(), '是否为目标城市'] = 0  # 判断赋值
    get_sum(data, agency)


def unique(data):
    agency = data['代理商'].unique()  # 使用unique函数(Series返回元组或者列表)
    target_city(data, agency)


def split(data):
    data['日期'] = [x.split(' ')[0]for x in data['时间']]  # 因为时间为字符串形式,我们只需要日期部分,索所以我们进行字段穿的拆分,写成for循环进行迭代赋值也可以
    unique(data)


def read_excel_file():
    data = pd.read_excel('data.xlsx')  # 读取excel文件
    split(data)


if __name__ == "__main__":
    read_excel_file()

运行的结果:

我将文件保存在了E盘,打开Excel文件之后转成表格形式,就是Excel报表了:

有什么用呢,方便日、周、月甚至是年的固定报表,修改一下文件点击运行就OK了~

也可以连接数据库,一样的操作,节约了很多时间。

这个例子虽然简单,但可以根据自己的需求进行举一反三,可以修改成学习工作想要的模板。

PS:groupby是分组的意思,和数据库结构化语言的功能相类似

之后还会不断的更新接触的新例子(数据清理、表格、图形、爬虫等),让我们一起分享学习,一起变强!

第一次写博客,啊哈哈!

如果某乎栏主看见了,不让转载请私聊哦~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值