Мультииндексирование и построение графиков с использованием панд - PullRequest
0 голосов
/ 05 марта 2019

Я бы хотел представить этот пандас DataFrame как три 2D строки: no_transfer, Transfer и random_transfer, где каждая соответствующая строка из столбцов от 0 до 9. DataFrame имеет MultiIndex.Я также хотел бы избавиться от уровня "is_greedy", так как значение одинаково для всех.

                              0    1     2     3  ...      6     7     8     9
config          is_greedy                         ...                         
no_transfer     True        9.0  9.0  14.0  15.0  ...   16.5  15.0  11.0   9.5
transfer        True        9.0  9.5  27.5  10.5  ...   19.5  55.5  14.0  24.0
random_transfer True       35.5  9.0  13.5  10.0  ...   10.0  13.0  27.5  32.0

1 Ответ

0 голосов
/ 05 марта 2019

Падение уровня индекса, транспонирование и построение графика.

df.reset_index('is_greedy', drop=True).T.plot()

Пример данных

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(30, 50, (3, 11)), 
                  index=['no_transfer', 'transfer', 'random_transfer'])
df = df.set_index(10, append=True)
df.index.names=['config', 'is_greedy']
#                            0   1   2   3   4   5   6   7   8   9
#config          is_greedy                                        
#no_transfer     40         35  49  47  36  48  47  39  48  38  32
#transfer        33         35  33  45  38  38  45  36  30  46  36
#random_transfer 36         32  41  36  41  37  35  40  42  49  32

df.reset_index('is_greedy', drop=True).T.plot()

enter image description here


Или итерация по строкам:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
for idx, row in df.iterrows():
    ax.plot(df.columns, row, label=idx[0])
plt.legend()
plt.show()
...