Как вручную добавить метки к графику или эффективно отобразить словарь для отображения на вашем графике - PullRequest
0 голосов
/ 23 марта 2020

Я работаю с двумя Pandas dataframes. В первом dataframe. Я заинтересован в сопоставлении ProductID с CompanyName, который приобрел продукт.

Для того, чтобы решить эту проблему соответствия. Сначала я создаю empty dictionary, а затем loop через rows из dataframe и update dictionary, как показано ниже

Slice = {}
for i,j in df.iterrows():
    Slice.update({j.ProductID:j.CompanyName})

Теперь я пытаюсь построить productID и поставить label компании, с которой ProductID связан

plt.figure(figsize=(30,25))
color = ["#FF0000", "#00FF00", "#008080", "#FF00FF",
          "#FFD088", "#B3AFB2", "#A9CCE3", "#3333eb"]
figure1 = df.ProductID.value_counts().nlargest(8).plot(kind="bar", color=color)
figure1.tick_params(labelsize=30)
Tar_1 = [Slice[124],Slice[920],Slice[162],Slice[166], Slice[165], Slice[923],Slice[1759], Slice[476]]

plt.legend(handles=Tar_1)

Я получаю следующую ошибку: AttributeError: 'str' object has no attribute 'get_label'

Пожалуйста, как я могу решить эту проблему? Или у вас есть лучший подход? Я думал о mapping productID из созданного словаря, но созданный столбец сгенерировал все NaN

Просьба сообщить.

1 Ответ

0 голосов
/ 23 марта 2020

Я решил, что лучший способ решить эту проблему - действительно преобразовать два интересующих столбца в словарь, а затем отобразить этот словарь в столбец.

map_obj = dict(df[['ProductID', 'CompanyName']].values)
df['Product_Company'] = df['ProductID'].map(map_obj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...