Python读写Excel文件
目标
要使用Python的pandas库对excel进行读写,具体内容是将一张汇总的表格中的数据,按学院分类统计到不同的Sheet中,前后效果图如下。
思路
Python的pandas库可以很方便地对excel表格进行读写操作。由于涉及多张Sheet表的读写,这里引入几个很重要的函数:
import pandas as pd
fp = pd.read_excel('...') # 读取之后,fp将保存excel的二维表
fp.iloc[index].values # 可以获取fp中第index行的数据,列表形式
writer = fp.ExcelWriter('...') # 方便读写一个Excel文件的多个Sheet
事先创建好一个字典(列表也可),键名为各个学院名,值为空列表;
逐行读取汇总表,获取到每一行的学院,将当前行信息加入到学院所属的列表之中,待行遍历结束后,统一调用pd.DataFrame(data, '...')
创建新的Sheet表或者向已有的Sheet中追加数据。
完整代码
import pandas as pd
import numpy as np
# 创建分院统计表并打开,方便写多个Sheet
fresult = pd.DataFrame()
fresult.to_excel('./test.xlsx')
fdata = pd.ExcelWriter('./test.xlsx')
path = '...'
fp = pd.read_excel(path, sheet_name=0)
dicts = {
'计算机科学与技术学院': [],
'材料科学与工程学院': [],
'信息科学与工程学院': [],
'理学院': [],
'新能源学院': [],
'经济管理学院': [],
'船舶与海洋工程学院': [],
'语言文学学院': [],
'汽车工程学院': [],
'海洋科学与技术学院': [],
}
# 逐行读取汇总表,分类加入数组
for i in range(1, fp.shape[0]):
print(fp.iloc[i].values)
data = fp.iloc[i].values
data[1] = str(data[1])
department = data[2] # 获取到学生学院
dicts[department].append(np.array(data))
# 写入分好类的excel表格
for key in dicts.keys():
data = np.array(dicts[key])
write = pd.DataFrame(data, columns=['姓名', '学号', '学院'])
write.to_excel(fdata, sheet_name=key)
fdata.save()