西里尔符号在numpy数组中解码

时间:2019-01-24 16:18:36

标签: python numpy

我需要获取带有西里尔字母符号的饼图,即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西里尔字母标签设置param标签吗?

1 个答案:

答案 0 :(得分:0)

您在错误消息中得到了答案,宪章被解码为ASCII而不是UTF-8

https://stackoverflow.com/a/10406161

https://stackoverflow.com/a/36454865