Topic
本文主要是使用Pandas批量处理Excel文件,使用read_excel函数获取指定列的数据,然后使用concat功能把所有文件合并,合并完成的数据使用groupby函数按两个Key分组求取平均值,最后可视化画图;
1. 导入使用到的模块 Numpy,Matplotlib,Pandas OS
# -*- coding:UTF-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
2. 批量获取Excel文件,并把需要的数据合并
#获取指定文件夹下所有Excel文件名称并传送给List1
List1 = os.listdir('c:\\Users\\Zstrong\\Desktop\\')
#定义DataFrame变量用来存放获取的所有数据
Result = pd.DataFrame()
#for循环逐个读取每个Excel里面的数据
for i in List1:
if(i[-4:]=='xlsx'):#筛选只读取xlsx结尾的文件
#read_excel方法,参数sheet_name表示读取的工作簿,skiprows表示忽略几行,usecols表示读取的制定的列
EXCEL1 = pd.read_excel(r'C:\\Users\\Zstrong\\Desktop\\%s'%i,sheet_name ='Final AT',skiprows=2,usecols=[2,36,37,60])
#concat方法合并多个文件的数据
Result = pd.concat([Result,EXCEL1],ignore_index=True)
#查看获取的结果
Result.tail()
| Model | EQ-55 | Time-55 | Defocus | |
|---|---|---|---|---|
| 567 | PA | 8APPH16 | 2018-10-22 13:03:23 | 0.000000 |
| 568 | PA | 8APPH16 | 2018-10-22 04:25:55 | 0.000000 |
| 569 | PA | 8APPH16 | 2018-10-22 02:56:26 | 0.002083 |
| 570 | PA | 8APPH16 | 2018-10-22 01:57:12 | 0.000000 |
| 571 | PA | 8APPH16 | 2018-10-22 05:10:15 | 0.000000 |
3. 分组处理数据,可视化展示
#筛选数据源中的一部分处理
Result1 = Result.loc[Result['Model']=='G1']
#数据列Defocus根据key1:Time-55和key2:EQ-55分组,获取分组后的平均值
Result2 = Result1['Defocus'].groupby([Result1['Time-55'],Result1['EQ-55']]).mean().unstack()
Result2.plot()