Сгруппированный бокс в Seaborn - PullRequest
0 голосов
/ 27 ноября 2018

с помощью некоторых замечательных людей, присутствовавших здесь, я смог сгенерировать свои первые коробочные сюжеты в морском заливе.У меня есть 2 отдельных графика морского происхождения, которые показывают два сравнения из листа Excel.То, что я хочу сделать сейчас, это представить оба сравнения данных (что показано в 2 столбцах ниже) на одном графике, по существу создав сгруппированный блок-график.Я пытался преобразовать данные в кадры данных, объединить и растопить их, но безуспешно.Я довольно плохо знаком с Python, поэтому мне было интересно, если вы все могли бы помочь мне.Ниже то, что у меня есть для кода.

import pandas as pd
import numpy as np
import xlrd
import matplotlib.pyplot as plt
import seaborn as sns
%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)

sheet_names = xls.sheet_names()

d_data = {}
for i, sheet_name in enumerate(xls.sheet_names()):
    df = pd.read_excel(excel_file,sheet_name)
    d_data[sheet_names[i]] = df.loc[:,['HMB','PSPPM']]


keys = list(d_data.keys())
values_list1 = list(d_data.values())

print(keys[0])
print(values_list1[0])

Что возвращает

Check1.xlsm
                             HMB                                  PSPPM
0                            0.141005                             0.429498
1                            0.141005                             0.429498
2                            0.066071                             0.706797
3                                 NaN                             0.080378
4                            0.045815                             0.004076
5                                 NaN                             0.630156
6                                 NaN                             0.723957
7                                 NaN                             0.712118
8                            0.391531                             0.791329
9                            0.036823                             0.506834
10                           0.391531                             0.791329

Теперь я застрял здесь.У меня есть values_list, который имеет 17 элементов (по одному на каждый лист в файле Excel).Я хотел бы, чтобы данные с каждого листа были сгруппированы вместе.Я думаю, что я мог столкнуться с проблемой, потому что есть 2 столбца в каждом элементе списка?Любые предложения будут оценены!

1 Ответ

0 голосов
/ 29 ноября 2018

Я не совсем уверен, чтобы полностью понять вашу проблему, в частности, в отношении боксов.Но, насколько я понимаю, у вас есть словарь с именем ваших таблиц Excel в качестве ключей и DataFrame в качестве значения.И вы хотите объединить все эти DataFrame в один, чтобы вы могли построить все значения вместе?

Если это правильно, тогда простой pd.concat может принять словарь и сгенерировать новый DataFrame с ключами какиндексов.Затем вы можете использовать reset_index(), чтобы сгладить DataFrame:

new_df = pd.concat(d_data).reset_index()

После этого я не знаю, как вы хотите нарисовать свой блокпост, но вы могли бы, например, нарисовать значения одного из вашихстолбец в каждом из листов:

sns.boxplot(x='level_0', y='HMB', data=new_df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...