2017-02-19 12 views
-1

Ниже, как мой набор данных выглядит следующим образом:Python group на нескольких столбцах и вывести результат?

Levels  Role  Status 
ABC  SE  Open 
XYZ  SSE  Closed 
KYZ  LA  Closed 

Вот мое требование, чтобы получить счетчик на каждый «Уровень» и для каждого «роли» где статус «Закрыт».

Я использую код ниже, чтобы получить требуемый результат.

df[df['Status'] == 'Closed'].groupby(['Levels','Role']).size() 

Теперь я хочу построить эти результаты. Как мне построить этот результат. Он должен быть самопознающим. Какой сюжет лучше всего подходит для моего требования.

Я новичок в области визуализации.

Благодаря

ответ

1

Если вы не знаете, как визуализировать результат, как если кто-нибудь знает. Но какой-то общий способ сделать это может заключаться в создании сводной таблицы, в которой можно использовать одну из категорий в качестве столбца, а другую как индекс, а затем строить график.

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

levels=["ABC", "XYZ", "KYZ", "KYZ"] 
roles = ["SE", "SSE", "LA", "SSE"] 
status = ["Open", "Closed", "Closed", "Closed"] 

df=pd.DataFrame({"Levels" : levels, "Role":roles, "Status":status}) 

df2 = df[df['Status'] == 'Closed'].groupby(['Levels','Role']).size().reset_index(name='Count') 
df3 = pd.pivot_table(df2, values='Count', columns=['Levels'], index = "Role", 
         aggfunc=np.sum, fill_value=0) 

df3.plot(kind="bar") 
plt.show() 

enter image description here

+0

Мои извинения. Я имел в виду, что лучший способ визуализировать такие результаты, чтобы было легко интерпретировать. Благодарю. Это хорошо для меня. Только одно, что у меня более 50 значений в столбце уровня, из-за этого это перекрытие. Есть ли способ справиться с этим. – Niranjanp

+0

Что такое перекрытие? Если речь идет о легенде, это может помочь уменьшить размер шрифта и увеличить размерность. Вы также можете обмениваться Уровнями и Ролями, если Роль имеет менее возможные записи. Различные типы сюжетов также могут быть лучше подобраны, но опять же вам нужно приблизительное представление о том, как должен выглядеть последний сюжет, иначе мы будем рыть в темноте. – ImportanceOfBeingErnest

+0

спасибо. Этот вид заговора кажется хорошим в соответствии с моим требованием. Я добавил эту строку 'plt.legend (bbox_to_anchor = (0., 1.02, 1., .108), loc = 3, ncol = 8, borderaxespad = 0,3) '. Теперь легенды читабельны. Только проблема с решетками как цвета не очень хорошо различима. В любом случае, спасибо снова. – Niranjanp