Как построить график на основе всех значений в двух отдельных столбцах? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь составить график выигрышей Рейнхардта на всех рангах по трем платформам: XBL, PSN и PC. Я хочу, чтобы гистограмма имела три значения х, по одному для каждой платформы. У меня проблема с использованием двух отдельных столбцов в качестве данных.

Я пробовал следующее:

df[(['Hero'] == 'Reinhardt') & (['Rank'] == 'All')].plot.bar(x='Platform', y='Win_rate')

Это дает ошибку: KeyError: False

df[.loc[df['Hero'] == 'Reinhardt' & df['Rank'] == 'All']].plot.bar(x='Platform', y='Win_rate')

Что дает: TypeError: невозможно сравнить dtyped [object] массив со скаляром типа [bool]

Я ожидаю, что появятся три гистограммы с метками x, такими как PC, XBOX и PSN, а по оси y - скорости винта. Извините, если об этом уже спрашивали, но я зашел в тупик. Вот столбцы: Dataframe со всеми значениями Рейнхардта, не может напрямую вставлять из-за репутации

1 Ответ

0 голосов
/ 24 апреля 2019

Я сгенерировал некоторые примеры данных с помощью этого кода, пожалуйста, укажите, если формат правильный:

In[1]: 
import numpy as np
import pandas as pd

hero = np.random.choice(['Ana', 'Reinhardt', 'Widow', 'Hanzo', 'Torb'], 30)
platform = np.random.choice(['XBL', 'PSN', 'PC'], 30)
winrate = np.random.rand(30) * 100

df = pd.DataFrame({'Hero': hero,
                   'Platform': platform,
                   'Winrate': winrate})

unique = df.groupby(['Platform', 'Hero']).agg({'Winrate': 'mean'}).reset_index()
unique.head()

Out[1]:     
    Platform    Hero        Winrate
0   PC          Ana         33.721728
1   PC          Hanzo       27.350393
2   PC          Reinhardt   60.182229
3   PC          Torb        71.929657
4   PC          Widow       51.911960

Самый удобный способ построения данных в группах - это использовать seaborn, который построен поверх matplotlib (см. sns.barplot)

In[2]: import seaborn as sns
sns.barplot(data=unique, x='Hero', y='Winrate', hue='Platform')

plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...