Кириллические символы декодируются в массив NumPy - PullRequest
0 голосов
/ 24 января 2019

Мне нужно получить круговую диаграмму с метками кириллическими символами, то есть в df.index

plt.pie(df['reg_created'], labels = df.index)

Итак, это ошибка возврата:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

df.index:

Index([u'Бизнес', u'Вечеринки', u'Выставки', u'Гражданские проекты',
   u'Для детей', u'Другие развлечения', u'Другие события', u'Еда',
   u'ИТ и интернет', u'Иностранные языки', u'Интеллектуальные игры',
   u'Искусство и культура', u'Кино', u'Концерты', u'Красота и здоровье',
   u'Наука', u'Образование за рубежом', u'Психология и самопознание',
   u'Спорт', u'Театры', u'Хобби и творчество', u'Экскурсии и путешествия'],
  dtype='object', name=u'name')

Параметр метки matplotlib.pyplot.pie должен быть списком, поэтому, если я попытаюсь:

df.index.tolist()

возвращается:

['\xd0\x91\xd0\xb8\xd0\xb7\xd0\xbd\xd0\xb5\xd1\x81', '\xd0\x92\xd0\xb5\xd1\x87\xd0\xb5\xd1\x80\xd0\xb8\xd0\xbd\xd0\xba\xd0\xb8', '\xd0\x92\xd1\x8b\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2\xd0\xba\xd0\xb8', '\xd0\x93\xd1\x80\xd0\xb0\xd0\xb6\xd0\xb4\xd0\xb0\xd0\xbd\xd1\x81\xd0\xba\xd0\xb8\xd0\xb5 \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb5\xd0\xba\xd1\x82\xd1\x8b', '\xd0\x94\xd0\xbb\xd1\x8f \xd0\xb4\xd0\xb5\xd1\x82\xd0\xb5\xd0\xb9', '\xd0\x94\xd1\x80\xd1\x83\xd0\xb3\xd0\xb8\xd0\xb5 \xd1\x80\xd0\xb0\xd0\xb7\xd0\xb2\xd0\xbb\xd0\xb5\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f', '\xd0\x94\xd1\x80\xd1\x83\xd0\xb3\xd0\xb8\xd0\xb5 \xd1\x81\xd0\xbe\xd0\xb1\xd1\x8b\xd1\x82\xd0\xb8\xd1\x8f', '\xd0\x95\xd0\xb4\xd0\xb0', '\xd0\x98\xd0\xa2 \xd0\xb8 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xbd\xd0\xb5\xd1\x82', '\xd0\x98\xd0\xbd\xd0\xbe\xd1\x81\xd1\x82\xd1\x80\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb5 \xd1\x8f\xd0\xb7\xd1\x8b\xd0\xba\xd0\xb8', '\xd0\x98\xd0\xbd\xd1\x82\xd0\xb5\xd0\xbb\xd0\xbb\xd0\xb5\xd0\xba\xd1\x82\xd1\x83\xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbd\xd1\x8b\xd0\xb5 \xd0\xb8\xd0\xb3\xd1\x80\xd1\x8b', '\xd0\x98\xd1\x81\xd0\xba\xd1\x83\xd1\x81\xd1\x81\xd1\x82\xd0\xb2\xd0\xbe \xd0\xb8 \xd0\xba\xd1\x83\xd0\xbb\xd1\x8c\xd1\x82\xd1\x83\xd1\x80\xd0\xb0', '\xd0\x9a\xd0\xb8\xd0\xbd\xd0\xbe', '\xd0\x9a\xd0\xbe\xd0\xbd\xd1\x86\xd0\xb5\xd1\x80\xd1\x82\xd1\x8b', '\xd0\x9a\xd1\x80\xd0\xb0\xd1\x81\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xb8 \xd0\xb7\xd0\xb4\xd0\xbe\xd1\x80\xd0\xbe\xd0\xb2\xd1\x8c\xd0\xb5', '\xd0\x9d\xd0\xb0\xd1\x83\xd0\xba\xd0\xb0', '\xd0\x9e\xd0\xb1\xd1\x80\xd0\xb0\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb7\xd0\xb0 \xd1\x80\xd1\x83\xd0\xb1\xd0\xb5\xd0\xb6\xd0\xbe\xd0\xbc', '\xd0\x9f\xd1\x81\xd0\xb8\xd1\x85\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb3\xd0\xb8\xd1\x8f \xd0\xb8 \xd1\x81\xd0\xb0\xd0\xbc\xd0\xbe\xd0\xbf\xd0\xbe\xd0\xb7\xd0\xbd\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5', '\xd0\xa1\xd0\xbf\xd0\xbe\xd1\x80\xd1\x82', '\xd0\xa2\xd0\xb5\xd0\xb0\xd1\x82\xd1\x80\xd1\x8b', '\xd0\xa5\xd0\xbe\xd0\xb1\xd0\xb1\xd0\xb8 \xd0\xb8 \xd1\x82\xd0\xb2\xd0\xbe\xd1\x80\xd1\x87\xd0\xb5\xd1\x81\xd1\x82\xd0\xb2\xd0\xbe', '\xd0\xad\xd0\xba\xd1\x81\xd0\xba\xd1\x83\xd1\x80\xd1\x81\xd0\xb8\xd0\xb8 \xd0\xb8 \xd0\xbf\xd1\x83\xd1\x82\xd0\xb5\xd1\x88\xd0\xb5\xd1\x81\xd1\x82\xd0\xb2\xd0\xb8\xd1\x8f']

если я распечатываю список по элементу:

 for i in df.index.tolist():
    print i

возвращает кириллический текст

    Бизнес
Вечеринки
Выставки
Гражданские проекты
...

Почему у меня есть разница в распечатке списка кириллицы и печати этого списка по элементам? И что я получу в параметре pyplot.pie для кириллицы?

1 Ответ

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

Вы получили ответ в сообщении об ошибке, кодировки декодируются как ASCII, а не как UTF-8

https://stackoverflow.com/a/10406161

https://stackoverflow.com/a/36454865

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