График DataFrames на основе иерархии столбцов / значения другого столбца - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь построить гистограмму X / Y на основе верхней 'n' частоты / ударных слов на основе местоположения с осью Y, являющейся wordCount этих слов - НЕ вычисление частоты (tf_idf)- предположим, что tf_idf являются наиболее важными словами, и некоторые слова являются кодами, но все же важны. Примеры данных:

SITEID  word    wordCount   wordTotal   tf      SiteID  idf         tf_idf
CAK     hpci    328         187653      0.001   1       1.098       0.001920272

Используя следующую функцию (которую я не разработал, но полностью понимаю), я могу получить хороший график наиболее важных tf_idf слов:

def pretty_plot_top_n(series, top_n=5, index_level=0):
    r = series\
    .groupby(level=index_level)\
    .nlargest(top_n)\
    .reset_index(level=index_level, drop=True)
    r.plot.bar()
    return r.to_frame()

pretty_plot_top_n(tf_idf['tf_idf'])

enter image description here

Это изображение имеет идеальную ось X - я хочу SITEID и word. Теперь я хочу «наложить» слой так, чтобы ось Y была wordCount для каждого из этих слов, а не tf_idf.

Я пробовал несколько разных вещей, включая (но не ограничиваясь)тоже):

#plot without function 
tf_idf.plot(x=['SITEID', 'tf_idf'], y='wordCount', kind="bar")

Настройка функций:

# second layer grouping by tf_idf

def pretty_plot_top_n(series, top_n=5, index_level=0, level2=7):
    r = series\
    .groupby(level=index_level)\
    .groupby(level=level2)\
    .nlargest(top_n)\
    .reset_index(level=index_level, drop=True)
    r.plot.bar()
    return r.to_frame()

И многострочные (очевидно, почему не работает, но в некоторых случаях говорят)

pretty_plot_top_n(tf_idf['tf_idf'])
pretty_plot_top_n(tf_idf['wordCount'])

Мой вывод всегда заканчивается пустым ИЛИ я получаю слова на основе наибольшего wordCount. Однако весь смысл вычисления tf_idf заключается в устранении стоп-слов.

Incorrect because these words are not the ones I want

Я не хочу, чтобы 'и' из. Я хочу мои слова сверху. Как я могу наложить это на слой, чтобы создать график, основанный сначала на tf_idf, а затем нарисуйте ось Y как wordCount для этих слов? Главное предпочтение - просто настроить мою существующую функцию.

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