我对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']]
我试图提供一张每张纸的外观图片。它们都具有相同的标题和布局,这很有帮助。
修改
因此,我添加了下面建议的代码,并删除了手动切片,现在我的所有数据都以字典格式保存,但是我无法为我绘制大熊猫或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']]
答案 0 :(得分:1)
您可以先在同一循环中创建每个切片的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']]