Гистограммы панд объединяют группы - PullRequest
0 голосов
/ 27 октября 2018

У меня довольно большой CSV-файл из набора тестов, и я хотел бы построить группы результатов вместе в 3 с.F.ex:

%matplotlib inline
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
from io import StringIO

TESTDATA = StringIO("""benchmark,smt,speedup
   b1, smt1, 100
   b1, smt2, 111
   b1, smt4, 118
   b2, smt1, 100
   b2, smt2, 108
   b2, smt4, 109
    """)

df = pd.read_csv(TESTDATA, sep=",")

df.plot(kind="bar")

Это дает мне гистограмму с равномерно расположенным каждым баром.Но как я могу получить результаты для группы b1, сгруппированных без пробелов, затем получить пробел до группировки b2?

Т.е. я получаю:

enter image description here

Но нужно что-то вроде:

enter image description here

с 3 барами evert, представляющими ускорение для smt1, smt2 и smt4 для каждого данного теста.

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

У вас есть некоторое несоответствие разделителя, но вы можете преодолеть его как меня

%matplotlib inline
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
from io import StringIO

TESTDATA = StringIO("""benchmark;smt;speedup
   b1, smt1, 100
   b1, smt2, 111
   b1, smt4, 118
   b2, smt1, 100
   b2, smt2, 108
   b2, smt4, 109
    """)

df = pd.read_csv(TESTDATA, sep=",", skiprows=1, names=['benchmark', 'smt', 'speedup'])

df.pivot(index='benchmark', columns='smt').plot(kind='bar')

enter image description here

0 голосов
/ 27 октября 2018

1-й измените ваш сеп в названии столбцов это должно быть , не ;

TESTDATA = StringIO("""benchmark,smt,speedup
   b1, smt1, 100
   b1, smt2, 111
   b1, smt4, 118
   b2, smt1, 100
   b2, smt2, 108
   b2, smt4, 109
    """)
df = pd.read_csv(TESTDATA, sep=",")

Тогда мы делаем pivot и plot

df.pivot(*df.columns)
Out[446]: 
smt         smt1   smt2   smt4
benchmark                     
   b1        100    111    118
   b2        100    108    109
df.pivot(*df.columns).plot(kind='bar')

enter image description here

...