Построение сообщения об ошибке «Ошибка типа: __init __ () получила неожиданный аргумент ключевого слова« кодировка »» - Python - PullRequest
2 голосов
/ 28 апреля 2019

Я столкнулся только с Plotly вчера, я пытаюсь найти способ для создания таблиц хорошим способом, похожим на создание диаграмм в Matplotlib.

Сначала я пытался использовать свои собственные данные и продолжал получать сообщение об ошибке в заголовке. Таким образом, я скопировал и вставил точный код с сайта, на котором все написано, и все еще получаю эту ошибку. Кто-нибудь сталкивался с этим раньше? У кого-нибудь есть решение. У меня такое чувство, что это не простая проблема с моим кодом.

import plotly.plotly as py
import plotly.graph_objs as go
import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/2014_usa_states.csv')

trace = go.Table(
    header=dict(values=list(df.columns),
                fill = dict(color='#C2D4FF'),
                align = ['left'] * 5),
    cells=dict(values=[df.Rank, df.State, df.Postal, df.Population],
               fill = dict(color='#F5F8FF'),
               align = ['left'] * 5))

data = [trace]
py.iplot(data, filename = 'pandas_table')

Это код, который я использовал, который приводит к следующей ошибке:

TypeError: __init__() got an unexpected keyword argument 'encoding'

Если у кого-нибудь есть альтернатива сюжетной линии, где я мог бы создать симпатичные таблицы, которые также были бы очень полезны.

Большое спасибо

Ответы [ 2 ]

5 голосов
/ 28 апреля 2019

Зависит от вашей среды. Если вы используете ноутбуки, qgrid - действительно хороший инструмент для работы с фреймами данных Pandas, но я не знаю, работает ли он в других средах.

Что касается кода, он работает для меня (снова в среде ноутбука), изменив

import plotly.plotly as py

для

import plotly.offline as py
py.init_notebook_mode(connected=False)

Я обычно использую график в автономном режиме, что стандартно для графика 3.

1 голос
/ 28 апреля 2019

Похоже, ошибка.Если вы спешите и не можете дождаться исправления, вы можете сделать следующее:

Открыть /usr/lib/python3/dist-packages/simplejson/__init__.py и отредактировать переменную cls внутри метода dumps следующим образом: cls = JSONEncoder

Так это выглядит так:

    if cls is None:
        cls = JSONEncoder
    cls = JSONEncoder
    return cls(
        skipkeys=skipkeys, ensure_ascii=ensure_ascii,
        check_circular=check_circular, allow_nan=allow_nan, indent=indent,
        separators=separators, encoding=encoding, default=default,
        use_decimal=use_decimal,
        namedtuple_as_object=namedtuple_as_object,
        tuple_as_array=tuple_as_array,
        iterable_as_array=iterable_as_array,
        bigint_as_string=bigint_as_string,
        sort_keys=sort_keys,
        item_sort_key=item_sort_key,
        for_json=for_json,
        ignore_nan=ignore_nan,
        int_as_string_bitcount=int_as_string_bitcount,
        **kw).encode(obj)

В основном вынудите его использовать JSONEncoder по умолчанию вместо кодера Plotly.Также убедитесь, что изменение не нарушает работу любого другого кода, в котором вы используете JSON.У меня это сработало, но, безусловно, есть лучшие решения.

...