Python中处理Excel数据时,正常遇到需要Excel表中对几项数据统计后,填入源表对应的单元格里,平时我们用DataFrame的to_excel方法,填入Excel数据时,没办法源表指定的单元格写入数据,那我们怎么样才能不覆盖源表的条件下,填写数据那?
下面我讲一下用Pandas和openpyxl实现以上操作的方法。
要求:以上工作表中的人员学历情况汇总,填入相应的单元格。
1.先导入我们需要的两个库
#导入需要的类库
import pandas as pd
from openpyxl import load_workbook
2.读取数据并按要求进行相应的统计。
#读取我们要需要统计的数据
df = pd.read_excel(r'人员花名册.xlsx', sheet_name='人员花名册', header=1, usecols=[1, 3])
df_a = pd.DataFrame({'学历': [df['学历'][df.学历 == '本科'].count(),
df['学历'][df.学历 == '大专'].count(),
df['学历'][df.学历 == '中专'].count(),
df['学历'][df.学历 == '高中'].count(),
df['学历'][df.学历 == '初中'].count()]},
index=['本科', '大专', '中专', '高中', '初中'])
print(df_a)
3.读取被写入工作簿并建立写入Excel的对象。
#读取被写入的Excel工作簿
book = load_workbook('人员花名册.xlsx')
#建立写入对象
write = pd.ExcelWriter(r'人员花名册.xlsx', engine='openpyxl')
write.book = book
write.sheets = {ws.title: ws for ws in book.worksheets}
4.把数据写入对应的单元格。
#写入数据
df_a.to_excel(write, sheet_name='人员花名册', header=False, index=False, startrow=4, startcol=7)
write.save()
write.close()
#导入需要的类库
import pandas as pd
from openpyxl import load_workbook
#读取我们要需要统计的数据
df = pd.read_excel(r'人员花名册.xlsx', sheet_name='人员花名册', header=1, usecols=[1, 3])
df_a = pd.DataFrame({'学历': [df['学历'][df.学历 == '本科'].count(),
df['学历'][df.学历 == '大专'].count(),
df['学历'][df.学历 == '中专'].count(),
df['学历'][df.学历 == '高中'].count(),
df['学历'][df.学历 == '初中'].count()]},
index=['本科', '大专', '中专', '高中', '初中'])
print(df_a)
#读取被写入的Excel工作簿
book = load_workbook('人员花名册.xlsx')
#建立写入对象
write = pd.ExcelWriter(r'人员花名册.xlsx', engine='openpyxl')
write.book = book
write.sheets = {ws.title: ws for ws in book.worksheets}
#写入数据
df_a.to_excel(write, sheet_name='人员花名册', header=False, index=False, startrow=4, startcol=7)
write.save()
write.close()