5 python数据分析基础——批量进行数据分析(一)
目录
一、批量升序排序一个工作簿中的所有工作表
1、批量升序/降序排序一个工作簿中的所有工作表
2、批量排序多个工作簿中的数据
二、筛选一个工作簿中的所有工作表数据
1、筛选一个工作簿中的所有工作表数据
2、在一个工作簿中筛选单一类别数据
三、对多个工作簿中的工作表分别进行分类汇总
1、对多个工作簿中的工作表分别进行分类汇总
2、批量分类汇总多个工作簿中的指定工作表
3、将多个工作簿数据分类汇总到一个工作簿
四、对一个工作簿中的所有工作表分别求和
1、对一个工作簿中的所有工作表分别求和
2、对一个工作簿中的所有工作表分别求和并将求和结果写入固定单元格
五、批量统计工作簿的最大、最小值
1、批量统计工作簿的最大、最小值
2、批量统计一个工作簿中所有工作表的最大、最小值
六、批量制作数据透视表
1、批量制作数据透视表
2、为一个工作簿的所有工作表制作数据透视表
练习数据下载链接:https://download.csdn.net/download/weixin_44940488/19270592
一、批量升序排序一个工作簿中的所有工作表
1、批量升序/降序排序一个工作簿中的所有工作表
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False) # 启动Excel程序
workbook = app.books.open('产品销售统计表.xlsx') # 打开要排序的工作簿
worksheet = workbook.sheets # 列出工作簿中的所有工作表for i in worksheet: # 遍历工作簿中的工作表values = i.range('A1').expand('table').options(pd.DataFrame).value # 读取当前工作表的数据并转换为DataFrame格式result = values.sort_values(by = '销售利润') # 对“销售利润”列进行升序排列# result = values.sort_values(by='销售利润', ascending=False) # 对“销售利润”列进行降序排列i.range('A1').value = result # 将排序结果写入当前工作表,替换原有数据workbook.save()
workbook.close()
app.quit()
2、批量排序多个工作簿中的数据
import os
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
file_path = '产品销售统计表'
file_list = os.listdir(file_path)for i in file_list:if os.path.splitext(i)[1] == '.xlsx': workbook = app.books.open(file_path + '\\' + i)worksheet = workbook.sheetsfor j in worksheet: values = j.range('A1').expand('table').options(pd.DataFrame).value result = values.sort_values(by = '销售利润') j.range('A1').value = resultworkbook.save() workbook.close()
app.quit()
二、筛选一个工作簿中的所有工作表数据
1、筛选一个工作簿中的所有工作表数据
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('采购表.xlsx')
worksheet = workbook.sheetstable = pd.DataFrame()
for i, j in enumerate(worksheet): values = j.range('A1').options(pd.DataFrame, header=1, index=False, expand='table').value data = values.reindex(columns=['采购物品', '采购日期', '采购数量', '采购金额'])table = table.append(data, ignore_index = True)
table = table.groupby('采购物品')
new_workbook = xw.books.add() for idx, group in table:new_worksheet = new_workbook.sheets.add(idx) new_worksheet['A1'].options(index = False).value = group last_cell = new_worksheet['A1'].expand('table').last_cell last_row = last_cell.row last_column = last_cell.column last_column_letter = chr(64 + last_column) sum_cell_name = '{}{}'.format(last_column_letter, last_row+1) sum_last_row_name = '{}{}'.format(last_column_letter, last_row) formula = '=SUM({}2:{})'.format(last_column_letter, sum_last_row_name)new_worksheet[sum_cell_name].formula = formula new_worksheet.autofit()new_workbook.save('采购分类表.xlsx')
workbook.close()
app.quit()
2、在一个工作簿中筛选单一类别数据
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('采购表.xlsx')
worksheet = workbook.sheets
table = pd.DataFrame() for i, j in enumerate(worksheet): values = j.range('A1').options(pd.DataFrame, header = 1, index = False, expand = 'table').value data = values.reindex(columns = ['采购物品', '采购日期', '采购数量', '采购金额'])table = table.append(data, ignore_index = True) product = table[table['采购物品'] == '保险箱']
new_workbook = xw.books.add()
new_worksheet = new_workbook.sheets.add('保险箱')
new_worksheet['A1'].options(index = False).value = product
new_worksheet.autofit()
new_workbook.save('保险箱.xlsx')
workbook.close()
app.quit()
三、对多个工作簿中的工作表分别进行分类汇总
1、对多个工作簿中的工作表分别进行分类汇总
import os
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
file_path = '销售表'
file_list = os.listdir(file_path) for i in file_list: # 遍历文件夹下的文件if os.path.splitext(i)[1] == '.xlsx': # 判断文件是否是工作簿workbook = app.books.open(file_path + '\\' + i) # 打开文件夹中的工作簿worksheet = workbook.sheets # 列出工作簿中的所有工作表 for j in worksheet: values = j.range('A1').expand('table').options(pd.DataFrame).value # 读取当前工作表的数据values['销售利润'] = values['销售利润'].astype('float') # 转换“销售利润”列的数据类型result = values.groupby('销售区域').sum() # 根据“销售区域”列对数据进行分类汇总,汇总运算方式为求和j.range('J1').value = result['销售利润'] # 将各个销售区域的销售利润汇总结果写入当前工作表workbook.save() workbook.close()
app.quit()
2、批量分类汇总多个工作簿中的指定工作表
import os
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
file_path = '销售表1'
file_list = os.listdir(file_path) for i in file_list: if os.path.splitext(i)[1] == '.xlsx': workbook = app.books.open(file_path + '\\' + i) worksheet = workbook.sheets['销售记录表'] # 指定要分类汇总的工作表# 进行分类汇总values = worksheet.range('A1').expand('table').options(pd.DataFrame).value values['销售利润'] = values['销售利润'].astype('float')result = values.groupby('销售区域').sum() worksheet.range('J1').value = result['销售利润'] workbook.save() workbook.close()
app.quit()
3、将多个工作簿数据分类汇总到一个工作簿
import os
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
file_path = '销售表'
file_list = os.listdir(file_path)collection = []for i in file_list:if os.path.splitext(i)[1] == '.xlsx':workbook = app.books.open(file_path + '\\' + i)worksheet = workbook.sheets['销售记录表']values = worksheet.range('A1').expand('table').options(pd.DataFrame).valuefiltered = values[['销售区域', '销售利润']] collection.append(filtered)workbook.close()new_values = pd.concat(collection, ignore_index = False).set_index('销售区域')
new_values['销售利润'] = new_values['销售利润'].astype('float')
result = new_values.groupby('销售区域').sum()new_workbook = app.books.add()
sheet = new_workbook.sheets[0]
sheet.range('A1').value = result
new_workbook.save('汇总.xlsx')
app.quit()
四、对一个工作簿中的所有工作表分别求和
1、对一个工作簿中的所有工作表分别求和
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('采购表.xlsx')
worksheet = workbook.sheetsfor i in worksheet: # 遍历工作簿中的工作表values = i.range('A1').expand('table') # 选中工作表中含有数据的单元格区域data = values.options(pd.DataFrame).value # 使用选中的单元格区域中的数据创建一个DataFramesums = data['采购金额'].sum() # 在创建的DataFrame中对“采购金额”列进行求和column = values.value[0].index('采购金额') + 1 # 获取“采购金额”列的列号row = values.shape[0] # 获取数据区域最后一行的行号i.range(row + 1, column).value = sums # 将求和结果写入“采购金额”列最后一个单元格下方的单元格中workbook.save()
workbook.close()
app.quit()
2、对一个工作簿中的所有工作表分别求和并将求和结果写入固定单元格
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('采购表.xlsx')
worksheet = workbook.sheetsfor i in worksheet: values = i.range('A1').expand('table').options(pd.DataFrame).valuesums = values['采购金额'].sum() # 对“采购金额”列数据进行求和i.range('F1').value = sums # 将当前工作表中数据的求和结果写入当前工作表的单元格F1中workbook.save()
workbook.close()
app.quit()
五、批量统计工作簿的最大、最小值
1、批量统计工作簿的最大、最小值
import os
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
file_path = '产品销售统计表'
file_list = os.listdir(file_path) for j in file_list: # 遍历文件夹下的文件if os.path.splitext(j)[1] == '.xlsx': # 判断文件是否是工作簿workbook = app.books.open(file_path + '\\' + j) # 打开文件夹中的工作簿worksheet = workbook.sheets # 列出当前工作簿中的所有工作表for i in worksheet: # 遍历工作簿中的工作表 values = i.range('A1').expand('table').options(pd.DataFrame).value # 读取当前工作表的数据max = values['销售利润'].max() min = values['销售利润'].min() i.range('I1').value = '最大销售利润' i.range('J1').value = max i.range('I2').value = '最小销售利润' i.range('J2').value = minworkbook.save() workbook.close()
app.quit()
2、批量统计一个工作簿中所有工作表的最大、最小值
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
workbook = xw.Book('产品销售统计表.xlsx')
worksheet = workbook.sheetsfor i in worksheet: values = i.range('A1').expand('table').options(pd.DataFrame).value max = values['销售利润'].max() min = values['销售利润'].min() i.range('I1').value = '最大销售利润' i.range('J1').value = max i.range('I2').value = '最小销售利润' i.range('J2').value = minworkbook.save()
workbook.close()
app.quit()
六、批量制作数据透视表
1、批量制作数据透视表
import os
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
file_path = '商品销售表'
file_list = os.listdir(file_path) for j in file_list: if os.path.splitext(j)[1] == '.xlsx': workbook = app.books.open(file_path + '\\' + j) worksheet = workbook.sheets for i in worksheet: values = i.range('A1').expand('table').options(pd.DataFrame).value # 读取当前工作表中的数据# 用读取的数据制作数据透视表pivottable = pd.pivot_table(values, values = '销售金额', index = '销售地区', columns = '销售分部', aggfunc = 'sum', fill_value = 0, margins = True, margins_name = '总计') # 将制作的数据透视表写入当前工作表i.range('J1').value = pivottableworkbook.save()workbook.close()
app.quit()
2、为一个工作簿的所有工作表制作数据透视表
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('商品销售表.xlsx')
worksheet = workbook.sheets for i in worksheet: values = i.range('A1').expand('table').options(pd.DataFrame).value # 读取当前工作表中的数据# 用读取的数据制作数据透视表pivottable = pd.pivot_table(values, values = '销售金额', index = '销售地区', columns = '销售分部', aggfunc = 'sum', fill_value = 0, margins = True, margins_name = '总计') i.range('J1').value = pivottable # 将制作的数据透视表写入当前工作表workbook.save()
workbook.close()
app.quit()
参考书目:《超简单 用python让Excel飞起来》
5 python数据分析基础——批量进行数据分析(一)相关推荐
- python数据分析基础教程 numpy_Python数据分析基础教程:NumPy学习指南(第2版)
Python数据分析基础教程:NumPy学习指南(第2版) Ivan Idris (作者) 张驭宇 (译者) NumPy是一个优秀的科学计算库,提供了很多实用的数学函数.强大的多维数组对象和优异的计算 ...
- python数据分析基础试题_Python数据分析基础知识
数据库:绝大会要求会SQL,部分要求SQL/NoSQL会一种,高级的分析师或者大型企业要求能够处理大数据,需要Hive(较少的需要Hadoop/Spark): 统计学:若无相关专业背景,需要具备相应的 ...
- python统计数据分析基础教程_Python数据分析基础教程:NumPy学习指南(第2版)
第1章 NumPy快速入门 让我们开始吧.首先,我们将介绍如何在不同的操作系统中安装NumPy和相关软件,并给出使用NumPy的简单示例代码.然后,我们将简单介绍IPython(一种交互式shell工 ...
- python数据分析实验报告_Python 数据分析入门实战
本训练营中,我们将学习怎么样使用 Python 进行数据分析.课程将从数据分析基础开始,一步步深入讲解.从 Python 的基础用法到数据分析的各种算法,并结合各种实例,讲解数据分析过程中的方方面面. ...
- python 数据分析基础 day1-初窥内容
在读这本书之前,我已经有开始学python,用的是anaconda 的jupyter notebook. 看了<python 数据分析基础>的前言部分,发现这本书的实用性很高,其讲解的内容 ...
- python数据分析与excel_读Python数据分析基础之Excel读写与处理
对于业务型数据分析来说,Excel可以说是打交道最多的软件了,可以说没有之一.之前有比较系统地读过<Python数据分析基础>(Foundations for Analysis with ...
- 简书python数据分析基础reading_Python数据分析基础ReadingDay5_sqlite3
reading Foundations for Analysis with Python Day 5 <Python数据分析基础>封面 这篇笔记开始记录数据库的内容,会用两篇笔记分别讲述P ...
- python数据分析基础 余本国_Python数据分析基础
本书根据作者多年教学经验编写, 条理清楚, 内容深浅适中, 尽量让读者从实例出发, 结合课后练习, 少走弯路.本书涉及的内容主要包括Python数据类型与运算.流程控制及函数与类.Pandas库的数据 ...
- python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析
自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...
最新文章
- 抓老鼠啊~亏了还是赚了?
- 是否提交由npm 5创建的package-lock.json文件?
- Facebook Docusaurus 中文文档 自定义页面
- Python中 ‘==‘ 与‘is‘ 以及它们背后的故事
- getElementById 和 getElementByName的区别
- eclipse项目中的.settings .project .classpath 个人见解
- Windows RabbitMQ 命令
- C - Digital Path 计蒜客 - 42397(dp记忆化搜索)
- python文件按行读取变为嵌套列表_迭代两个嵌套的2D列表,其中list2具有list1的行号...
- Qt工作笔记-QTreeWidget中itemAt中的坑
- Markdown--绘制流程图(flowchart)
- requests与bs4编码
- APM终端用户体验监控分析(下)
- codeforces 1B 模拟
- 由MindManager命令构成的实用导图
- 力扣-1128 等价多米诺骨牌对的数量
- 关于metasploit的一些架构目录
- 字节教育开辟新业务线,推出“闪电搜题”App可拍题和自习
- 使用 FUMA 鉴定 Independent SNPs 和 Lead SNPs
- RCE(命令执行)总结