pandas解析excel文件创建boxplot并再次将其存储在excel文件中

时间:2018-04-13 15:50:52

标签: python excel pandas boxplot

我有以下excel(xlsx)文件,其中包含以下信息:

    files    val_1   val_2      val_3   val_4
1   file_1   545.0   475.20822  116     43.0
2   file_2   179.0   19.791214  17      39.0
3   file_3   600.0   450.54407  302     92.0
4   file_4   1936.0  397.71826  182     271.0

我想解析这个文件,然后例如按列" val_1"绘制一个箱线图 然后将boxplot保存到同一个excel文件中,但是例如工作表:第2页

有没有办法在没有matplotlib的情况下使用pandas?或者matplotlib是强制性的吗?

2 个答案:

答案 0 :(得分:2)

我认为最好的办法是使用像XlsxWriter 这样的东西。 MatPlotLib将图表保存为图像文件,XlsxWriter将图表保存为excel文件中的功能图表

答案 1 :(得分:-1)

谢谢我现在有一个解决方案,它是openpyxl + pandas + matplotlib的混合

workbook = load_workbook(excel_file,read_only=False)
worksheet = workbook['Sheet2']   # make sure this sheet exist e.g. create it before

df = pd.read_excel(excel_file, "Sheet1") #sheet 1 contains the data see above

# combine these different collections into a list    
data_to_plot = [df._series['val_1']]

# Create a figure instance
fig = plt.figure(1, figsize=(8, 8))

# Create an axes instance
ax = fig.add_subplot(111)

# Create the boxplot
bp = ax.boxplot(data_to_plot)

for flier in bp['fliers']:
     flier.set(marker='o', color='#e7298a', alpha=0.5)

# Save the figure
fig.savefig('val_1.png', bbox_inches='tight')

# load the created boxplot image and insert in sheet2
img = openpyxl.drawing.image.Image('val_1.png')
worksheet.add_image(img,'D3')

workbook.save(excel_file)

我尝试将x标签添加为对角线的最后一件事如下所示: https://matplotlib.org/examples/pylab_examples/boxplot_demo2.html

我之前添加了这些行:bp = ax.boxplot(data_to_plot)

xtickNames = plt.setp(ax, xticklabels="Label_1")
plt.setp(xtickNames, rotation=45, fontsize=10)

但有了这个,我只看到一个角色" L"在x轴上不是" Label_1"

而不是这两行,我尝试了这一行:

ax.set_xticklabels( ['Label_1'], rotation=45 )

但它现在也不起作用我看到对角线' 1' ???