我对蟒蛇/熊猫/matplotlib的世界非常陌生,但我最近一直用它来制作盒子和胡须情节。我很好奇如何使用一列特定的数据为每一张纸创建一个盒子和晶须图,即我有17张纸,我在每一张纸上有一列名为HMB和DV的列。我想为HMB绘制一个盒子和晶须上的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
from pandas import DataFrame
excel_file = 'Project File Merger.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)
d_psppm = {}
for i, sheet_name in enumerate(xls.sheet_names()):
df = pd.read_excel(excel_file,sheet_name)
d_psppm["PSPPM" + str(i)] = df.loc[:,['PSPPM']]
values_list = list(d_psppm.values())
print(values_list[:])对于17个列表条目,示例输出如下所示,但每个条目的行数不同。
PSPPM
0 0.246769
1 0.599589
2 0.082420
3 0.250000
4 0.205140
5 0.850000,
PSPPM
0 0.500887
1 0.475255
2 0.472711
3 0.412953
4 0.415883
5 0.703716,...接下来我要做的是创建一个盒子和胡须图,一个有17个盒子和胡须的情节。我不知道如何使字典以值和索引作为名称进行绘图。我试着挖掘,并想出如何将字典转换成列表,然后绘制列表中的每个元素,但都没有成功。
谢谢你的帮助!
发布于 2018-11-27 09:26:50
我同意@Alex的观点,即将您的列形成一个新的DataFrame,然后根据它进行绘图将是一种很好的方法,但是,如果您要使用dict,那么它应该是这样的。根据您正在使用的Python版本,字典可能是无序的,因此,如果情节上的排序对您很重要,那么您可能希望按照您想要的顺序创建一个字典键列表,然后进行迭代。
import matplotlib.pyplot as plt
import numpy as np
#colours = []#list of colours here, if you want
#markers = []#list of markers here, if you want
fig, ax = plt.subplots()
for idx, k in enumerate(d_psppm, 1):
data = d_psppm[k]
jitter = np.random.normal(0, 0.1, data.shape[0]) + idx
ax.scatter(jitter,
data,
s=25,#size of the marker
c="r",#colour, could be from colours
alpha=0.35,#opacity, 1 being solid
marker="^",#or ref. to markers, e.g. markers[idx]
edgecolors="none"#removes black border
)按照Alex的建议,您可以使用数据创建一个海运框图,并覆盖一个群集图来显示数据(这取决于每个行有多少行是否实用)。
https://stackoverflow.com/questions/53484051
复制相似问题