为每个Excel工作表创建框和胡须图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为每个Excel工作表创建框和胡须图相关的知识,希望对你有一定的参考价值。

我对python / pandas / matplotlib的世界非常陌生,但我最近一直用它来制作盒子和胡须图。我很好奇如何使用特定的数据列为每张纸创建一个盒子和胡须图,即我有17张,我需要每个列都有一个名为HMB和DV的列。我想在HMB的Box和Whisker上绘制17个数据集,在DV图上绘制另外17个数据集。以下是我到目前为止的情况。

我可以打开文件,将所有表格放入list_dfs,但后来不知道从那里去哪里。我打算尝试手动切片每一组(在我来到这里之前开始寻求帮助),但是当我将来有更多数据时,我不想手动这样做。任何帮助将不胜感激!

import pandas as pd
import numpy as np
import xlrd
import matplotlib.pyplot as plt
%matplotlib inline
from pandas import ExcelWriter
from pandas import ExcelFile

excel_file =  'Comparison.xlsm'

list_dfs = []

xls = xlrd.open_workbook(excel_file,on_demand=True)
for sheet_name in xls.sheet_names():
    df = pd.read_excel(excel_file,sheet_name)
    list_dfs.append(df) 
#print(len(list_dfs))

a = list_dfs[0]
b = list_dfs[1]
c = list_dfs[2]
d = list_dfs[3]
e = list_dfs[4]
f = list_dfs[5]

data_a = a.loc[:,['DV','HMB']]
data_b = b.loc[:,['DV','HMB']]

我试图包括每张纸看起来像什么的图片。它们都具有相同的标题和布局,这是有帮助的。

编辑

所以我添加了下面建议的代码并删除了手动切片,现在我以字典格式提供了所有数据,但我不能让pandas或matplotlib为我绘图。我想知道是否有一个我失踪的步骤。我正在考虑为HMB制作一本字典,为DV制作一本字典。我想在列表中的每个条目的同一子图上有一个框和胡须图。

d_dv = {}
d_hmb = {}
for i, sheet_name in enumerate(xls.sheet_names()):
    df = pd.read_excel(excel_file,sheet_name)
    d_dv["PSPPM" + str(i)] = df.loc[:,['DV']]
    d_hmb["HMB" + str(i)] = df.loc[:,['HMB']]

Example of each sheets format

答案

您可以从同一循环中创建每个切片df开始。为此,您可以定义字典并在每次迭代时添加新条目:

d = {}
for i, sheet_name in enumerate(xls.sheet_names()):
    df = pd.read_excel(excel_file,sheet_name)
    d["data" + str(i)] = df.loc[:,['DV','HMB']]

以上是关于为每个Excel工作表创建框和胡须图的主要内容,如果未能解决你的问题,请参考以下文章

使用Excel VBA,如何将某一个工作表保存到新建的Excel中?

为dataframe python列中的每个唯一值创建excel工作表

将 Excel 工作表转换为 PDF,无限循环错误

VBA代码根据列的内容将excel文件拆分为多个工作簿?

如何使用 C# 从 DataSet 创建包含多个工作表的 excel 文件

将 Access 表导出到 Excel,但每个名称都有不同的工作表