2016-11-30 3 views
2

Я все еще новичок в Pandas и провел день, пытаясь прочитать форумы и понять это. Я застрял, поднял белый флаг и попросил о помощи, пожалуйста.Установите масштаб оси y для Pandas Dataframe Boxplot(), 3 Отклонения?

Я пытаюсь создать единую область диаграммы ящика в месяц с разными квадратиками, сгруппированными по (и помеченными) по отраслям, а затем с помощью оси Y использую масштаб, который я определяю.

В идеальном мире это было бы динамичным, и я мог бы установить ось как определенное количество стандартных отклонений от общего среднего. Я мог бы жить с другим типом динамической установки оси y, но я бы хотел, чтобы он был стандартным для всех «ежемесячных» сгруппированных ящиков. Я не знаю, какой лучший способ справиться с этим - еще и открыт для мудрости - все, что я знаю, - это число, которое теперь используется для больших целей, чтобы графики были значимыми.

Я пробовал все виды кода и имел нулевую удачу с масштабированием оси, а приведенный ниже код был как можно ближе к графику.

Вот ссылка на какие-то фиктивные данные: https://drive.google.com/open?id=0B4xdnV0LFZI1MmlFcTBweW82V0k

И для кода я использую Anaconda, Python 3.5:

Вот мой код:

import pandas as pd 
import numpy as np 
import matplotlib 
import matplotlib.pyplot as plt 
matplotlib.use('TkAgg') 
import pylab  
df = pd.read_csv('Query_Final_2.csv') 
df['Ship_Date'] = pd.to_datetime(df['Ship_Date'], errors = 'coerce') 
df1 = (df.groupby('Industry')) 
print(
df1.boxplot(column='Gross_Margin',layout=(1,9), figsize=(20,10), whis=[5,95]) 
,pylab.show() 
) 

Спасибо заранее за ваша помощь и комментарии, я очень рад использовать Pandas, но кривая обучения занимает некоторое время, чтобы вам было удобно.

+0

Мне нравится, как вы вызвали функцию построения графика на объекте 'pandas.core.groupby.DataFrameGroupBy', я не знал, что это возможно. – AlexG

ответ

4

Вот очистка версия вашего кода с решением:

import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.read_csv('Query_Final_2.csv') 
df['Ship_Date'] = pd.to_datetime(df['Ship_Date'], errors = 'coerce') 
df1 = df.groupby('Industry') 

axes = df1.boxplot(column='Gross_Margin',layout=(1,9), figsize=(20,10), 
        whis=[5,95], return_type='axes') 
for ax in axes.values(): 
    ax.set_ylim(-2.5, 2.5) 

plt.show() 

Ключа вернуть делянки в качестве осей объектов и установить пределы индивидуально.

Смежные вопросы