楼主目前正在学习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是分组的意思,和数据库结构化语言的功能相类似
之后还会不断的更新接触的新例子(数据清理、表格、图形、爬虫等),让我们一起分享学习,一起变强!
第一次写博客,啊哈哈!
如果某乎栏主看见了,不让转载请私聊哦~