python - 为每个 Excel 工作表创建箱须图
问题描述
我对 python/pandas/matplotlib 的世界非常陌生,但我最近一直在使用它来创建盒须图。我很好奇如何使用特定的数据列为每张纸创建一个箱须图,即我有 17 张纸,我需要每个名为 HMB 和 DV 的列。我想在 HMB 的 Box and 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']]
解决方案
您可以从在同一个循环中创建每个切片 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']]
推荐阅读
- java - 在java中将HTML字符串修剪到一定的限制
- java - 如何将 ProfileModel 链接到 SharedPreference
- sorting - Go 语言界面中的排序
- javascript - 当滚动()调用时,jQuery fadeTo 调用未按预期运行
- r - 如何仅为一种结果类型计算新数据框?
- loops - 找到第一行的第一个数值并将其插入到第二行的末尾,对同一目录中的多个文件执行此操作
- c++ - 一个“constexpr”标记的变量和一个静态存储持续时间的变量是否可以通过带有推导指南的类类型进行存储?
- arrays - SAS 错误:引用的未声明数组:attrib
- c# - char 二维数组压缩
- javascript - 从字符串计算天数