Облака слов, созданные из слов, извлеченных по дате - PullRequest
0 голосов
/ 19 июня 2020

У меня есть некоторые сомнения, как извлечь текст из списка строк, чтобы построить облако слов.

У меня есть следующие два столбца в моем фрейме данных:

Account                    Date
ttt-property-por         2020-05-12
ttt-retail-por           2020-05-12
ccc-credit-crd           2020-05-12
ttt-loan-por             2020-05-13
ccc-credit-crd           2020-05-21
ccc-credit-crd           2020-05-21
ttt-nonretail-por        2020-05-21

и многие другие.

Я хотел бы создать облако слов со словами, включенными между двумя -, т.е.

property
retail
credit
loan
credit
credit
nonretail

, но мне нужно собрать эту информацию по дате.

Я попытался извлечь слова с помощью df['patterns'] = [x.split('-')[1].replace('(', '') for x in df['Account']]

Для облака слов:

from wordcloud import WordCloud 

text = df.patterns[0]
wordcloud = WordCloud().generate(text)

plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

Однако я не знаю, как «группировать» учетные записи, чтобы отображать облака слов дата по дате.

1 Ответ

1 голос
/ 19 июня 2020

После применения разделения, как предложено в комментариях, и создания столбца шаблона вы можете использовать этот код для создания облака слов:

def show_wordcloud(data):
    wordcloud = WordCloud(
        background_color='white',
        stopwords=stopwords,
        max_words=200,
        max_font_size=40, 
        scale=3,
        random_state=1
    ).generate(str(data))

    fig = plt.figure(1, figsize=(12, 12))
    plt.axis('off')
    if title: 
        fig.suptitle(title, fontsize=20)
        fig.subplots_adjust(top=2.3)

    plt.imshow(wordcloud)
    plt.show()


df.groupby('Date').apply(
    lambda x: show_wordcloud(x.patterns.tolist())
)

Надеюсь, это поможет

...