сюжет 20 самых распространенных слов - PullRequest
4 голосов
/ 01 октября 2019

здесь я пытаюсь установить наиболее часто встречающиеся слова в сюжете, но я столкнулся с проблемой, потому что это арабский язык, и он не соответствует формату

fig, ax = plt.subplots(figsize=(12, 10))
sns.barplot(x="word", y="freq", data=word_counter_df, palette="PuBuGn_d", ax=ax)
plt.show();

я пробовал ast с декодированием, ноон не соответствует им с сюжетом

import ast
fig, ax = plt.subplots(figsize=(12, 10))
sns.barplot(x="word", y="freq", data=word_counter_df.apply(ast.literal_eval).str.decode("utf-8"), palette="PuBuGn_d", ax=ax)
plt.show();

word_counter_df выглядит так:

<class 'pandas.core.frame.DataFrame'>
      word  freq
0   الله    6829
1   علي     5636
2   ان      3732
3   اللهم   2575
4   انا     2436
5   صباح    2115
6   اللي    1792
7   الي     1709
8   والله   1645
9   الهلال  1520
10  الا     1394
11  الخير   1276
12  انت     1209
13  يارب    1089
14  يوم     1082
15  رتويت   1019
16  كان     1004
17  اذا     994 
18  لله     982 
19  اي      939 

он возвращает пустой граф с помощью этой ошибки:

ValueError: ('Неверно сформированный узел или строка: 0n13 يارب \ n14 يوم \ n15 رتويت \ n16 \ان \ n17
اذا \ n18 لله \ n19 اي \ nName: word, dtype: object ',' произошло в индексном слове ')

1 Ответ

2 голосов
/ 02 октября 2019

Вы можете использовать встроенную функцию панд plot.bar:

word_counter_df.plot.bar(x="word", y="freq")
plt.show()



Обновление для подключенных арабских букв
import arabic_reshaper
from bidi.algorithm import get_display
word_counter_df['disp'] = word_counter_df.word.apply(arabic_reshaper.reshape).apply(get_display)
word_counter_df.plot.bar(x="disp", y="freq")

enter image description here

То же самое с морским (версия 0.9.0) здесь .

...