怎么用python批处理excel_python批处理excel

作为一名金融狗,小白我在上学的时候用的统计建模软件是R,操作最多的数据就是csv文件,导致小白在现在学习python的时候也会习惯性地把所有的数据都转成csv,然后只会用pandas.read_csv()。

但其实平时咱们会经常性地需要处理excel文件,因此,学习如何用python处理excel文件是非常有必要的。

python这么牛批强大的语言,自然提供了多种处理excel文件的包,小白在此只分享自己觉得最好用的一种方式。

首先,自行创建一个文件夹【小白中学】,里面又包含子文件夹【小白初中】和【小白高中】。【小白初中】文件夹中包含【一年级】和【二年级】两个excel文件,【小白高中】文件夹中也包含【一年级】和【二年级】两个excel文件。而【一年级】和【二年级】的表结构一样,有【班级A】和【班级B】两个sheet,每个班级表包含学生基本信息(学号、姓名、生日)。

基本结构如下:

我们先来看看文件信息:

import os

for root,dirs,files in os.walk(r'F:\小白中学'):

for file in files:

#获取文件所属目录

print(root)

#文件名

print(file)

#获取文件路径

print(os.path.join(root,file))

加载包:

import numpy as np

import pandas as pd

import xlrd

from openpyxl import load_workbook

工作路径切换到【小白中学】这个文件夹所在的路径:

import os

os.chdir('F:/')

任务一、将每个年级的2个班级学生汇总存到新的sheet

我们先来做第一个任务:将初、高中共四个年级的四张excel班级信息分别合并,各自新增一个sheet记录汇总的本年级学生信息。

for root,dirs,files in os.walk(r'F:\小白中学'):

for file in files:

#用来存放每个excel的所有sheet汇总数据

excel_data=pd.DataFrame()

#获取excel路径和文件名

excel_name=os.path.join(root,file)

#读取excel文件

data_wb=xlrd.open_workbook(excel_name)

#获取文件中所有表格名

sheet_names = data_wb.sheet_names()

#在每一个excel文件中,读取所有sheet的数据,加到all_data

for i in sheet_names:

df = pd.read_excel(excel_name, sheet_name=i, index=False, encoding='utf8')

excel_data=excel_data.append(df)

#生成一个文件写入对象,相当于一个excel

writer = pd.ExcelWriter(excel_name,engine='openpyxl')

book = load_workbook(writer.path)

writer.book = book

#写入一个新的sheet

excel_data.to_excel(excel_writer=writer,sheet_name='年级全体学生信息')

writer.save()

writer.close()

这时候我们随便打开一个excel(比如打开初中一年级的excel),发现多了一个sheet,记录了A、B两个班级的汇总学生信息。

任务二:将所有的学生信息汇总到一张新的excel

接下来,我们来做第一个任务,将初中高中总共8个班级的学生信息汇总到一张表,并存到一个excel文件中。

#用来存放汇总数据

all_data=pd.DataFrame()

for root,dirs,files in os.walk(r'F:\小白中学'):

for file in files:

#获取excel路径和文件名

excel_name=os.path.join(root,file)

#读取excel文件

data_wb=xlrd.open_workbook(excel_name)

#获取文件中所有表格名

sheet_names = data_wb.sheet_names()

#在每一个excel文件中,读取前两张sheet的数据,加到all_data

for i in [0,1]:

df = pd.read_excel(excel_name, sheet_name=i, index=False, encoding='utf8')

all_data=all_data.append(df)

查看汇总数据:

all_data=all_data.reset_index()

all_data

all_data部分截图

将汇总的dataframe存储到一张新的excel:

all_data.to_excel(r'F:\小白中学\学生信息.xlsx',sheet_name='全校学生信息')

可以看到【小白中学】文件夹中多了一个excel文件。

任务三:将新生成的学生信息表拆成4张年级表存到一个excel

all_data=pd.read_excel(r'F:\小白中学\学生信息.xlsx',sheet_name='全校学生信息')

#初中一年级

data1=all_data.iloc[:6,:]

#初中二年级

data2=all_data.iloc[6:12,:]

#高中一年级

data3=all_data.iloc[12:18,:]

#高中二年级

data4=all_data.iloc[18:,:]

将其另存为一个excel。

with pd.ExcelWriter(r'.\小白中学\全校学生信息表.xlsx') as writer:

data1.to_excel(writer, sheet_name='初中一年级')

data2.to_excel(writer, sheet_name='初中二年级')

data3.to_excel(writer, sheet_name='高中一年级')

data4.to_excel(writer, sheet_name='高中二年级')

查看表信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值