Подплот несколько столбцов в Pandas Python - PullRequest
0 голосов
/ 12 июня 2019

Я новичок в Python и изо всех сил пытаюсь решить эту проблему эффективно. Я прочитал несколько примеров, но они были сложными и не понимали. Для приведенного ниже фрейма данных я предпочитаю разбивать графики на столбцы, игнорируя первые два, т. Е. Site_ID и Cell_ID:

  • Наличие
  • VoLTE CSSR
  • Попытки VoLTE

Каждый подзаголовок (Доступность и т. Д.) Будет содержать «Сгруппированный» Site_ID в качестве легенды. Каждый подзаголовок сохраняется в нужном месте.

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

Date   Site_ID  Cell_ID   Availability  VoLTE CSSR   VoLTE Attempts
22/03/2019  23181   23181B11    100      99.546435  264
03/03/2019  91219   91219A11    100      99.973934  663
17/04/2019  61212   61212A80    100      99.898843  1289
29/04/2019  91219   91219B26    99.907407   100 147
24/03/2019  61212   61212A11    100      99.831425  812
25/04/2019  61212   61212B11    100      99.91107   2677
29/03/2019  91219   91219A26    100      99.980066  1087
05/04/2019  91705   91705C11    100      99.331263  1090
04/04/2019  91219   91219A26    100      99.984588  914
19/03/2019  61212   61212B11    94.21875    99.934376   2318
23/03/2019  23182   23182B11    100      99.47367   195
02/04/2019  91219   91219A26    100      99.980123  958
26/03/2019  23181   23181A11    100      99.48185   543
19/03/2019  61212   61212A11    94.21875    99.777605   1596
18/04/2019  23182   23182B11    100      99.978012  264
26/03/2019  23181   23181C11    100      99.829911  1347
01/03/2019  91219   91219A11    100      99.770661  1499
12/03/2019  91219   91219B11    100      99.832273  1397
19/04/2019  61212   61212B80    100      99.987946  430
12/03/2019  91705   91705C11    100      98.789819  1000

Вот мое неэффективное решение, и, учитывая, что в нем более 100 столбцов, я очень волнуюсь.

#seperates dataframes
Avail = new_df.loc[:,["Site_ID","Cell_ID","Availability"]]
V_CSSR = new_df.loc[:,["Site_ID","Cell_ID","VoLTE CSSR"]]
V_Atte = new_df.loc[:,["Site_ID","Cell_ID","VoLTE Attempts"]]

#plot each dataframe
Avail.groupby("Site_ID")["Availability"].plot(y="Availability", legend = True) 
V_CSSR.groupby("Site_ID")["VoLTE CSSR"].plot(y="VoLTE CSSR", legend = True)
V_Atte.groupby("Site_ID")["VoLTE Attempts"].plot(y="VoLTE Attempts", legend = True)

Это результат, которого я добиваюсь. End Result

1 Ответ

0 голосов
/ 14 июня 2019

Не лучшее решение, но вы можете попробовать:

fig, axes = plt.subplots(1,3, figsize=(10,4))

for col, ax in zip(cols, axes):
    for site in df.Site_ID.unique():
        tmp_df = df[df.Site_ID.eq(site)]
        ax.plot(tmp_df.Date, tmp_df[col], label=site)

    ax.set_title(col) 
    ax.legend()

plt.show()

Выход:

enter image description here

...