Python中用pandas和openpyxl向Excel填入数据,不覆盖源数据和格式

Python中用pandas和openpyxl向Excel填入数据,不覆盖源数据和格式

Python中处理Excel数据时,正常遇到需要Excel表中对几项数据统计后,填入源表对应的单元格里,平时我们用DataFrame的to_excel方法,填入Excel数据时,没办法源表指定的单元格写入数据,那我们怎么样才能不覆盖源表的条件下,填写数据那?
下面我讲一下用Pandas和openpyxl实现以上操作的方法。

要求:以上工作表中的人员学历情况汇总,填入相应的单元格。
1.先导入我们需要的两个库
Python中用pandas和openpyxl向Excel填入数据,不覆盖源数据和格式_第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()

5.运行程序。
结果如下:
Python中用pandas和openpyxl向Excel填入数据,不覆盖源数据和格式_第2张图片
完整的代码如下:

#导入需要的类库
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()

你可能感兴趣的:(python,excel,数据分析,pandas)