Pandas: NameError: имя _converter не определено

Созданный на 21 февр. 2018  ·  11Комментарии  ·  Источник: pandas-dev/pandas

Пример кода, копируемый пример, если возможно

import pandas
d = pandas.DataFrame({"lat": [-6.081690, -5.207080], "lon": [145.789001, 145.391998]})
d.plot(kind='scatter', x='lat', y='lon')

Описание проблемы

NameError                                 Traceback (most recent call last)
<ipython-input-4-f42fef061f30> in <module>()
      1 import pandas
      2 d = pandas.DataFrame({"lat": [-6.081690, -5.207080], "lon": [145.789001, 145.391998]})
----> 3 d.plot(kind='scatter', x='lat', y='lon')

~/.local/lib/python3.6/site-packages/pandas/plotting/_core.py in __call__(self, x, y, kind, ax, subplots, sharex, sharey, layout, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, secondary_y, sort_columns, **kwds)
   2675                           fontsize=fontsize, colormap=colormap, table=table,
   2676                           yerr=yerr, xerr=xerr, secondary_y=secondary_y,
-> 2677                           sort_columns=sort_columns, **kwds)
   2678     __call__.__doc__ = plot_frame.__doc__
   2679 

~/.local/lib/python3.6/site-packages/pandas/plotting/_core.py in plot_frame(data, x, y, kind, ax, subplots, sharex, sharey, layout, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, secondary_y, sort_columns, **kwds)
   1900                  yerr=yerr, xerr=xerr,
   1901                  secondary_y=secondary_y, sort_columns=sort_columns,
-> 1902                  **kwds)
   1903 
   1904 

~/.local/lib/python3.6/site-packages/pandas/plotting/_core.py in _plot(data, x, y, subplots, ax, kind, **kwds)
   1685         if isinstance(data, DataFrame):
   1686             plot_obj = klass(data, x=x, y=y, subplots=subplots, ax=ax,
-> 1687                              kind=kind, **kwds)
   1688         else:
   1689             raise ValueError("plot kind %r can only be used for data frames"

~/.local/lib/python3.6/site-packages/pandas/plotting/_core.py in __init__(self, data, x, y, s, c, **kwargs)
    835             # the handling of this argument later
    836             s = 20
--> 837         super(ScatterPlot, self).__init__(data, x, y, s=s, **kwargs)
    838         if is_integer(c) and not self.data.columns.holds_integer():
    839             c = self.data.columns[c]

~/.local/lib/python3.6/site-packages/pandas/plotting/_core.py in __init__(self, data, x, y, **kwargs)
    802 
    803     def __init__(self, data, x, y, **kwargs):
--> 804         MPLPlot.__init__(self, data, **kwargs)
    805         if x is None or y is None:
    806             raise ValueError(self._kind + ' requires and x and y column')

~/.local/lib/python3.6/site-packages/pandas/plotting/_core.py in __init__(self, data, kind, by, subplots, sharex, sharey, use_index, figsize, grid, legend, rot, ax, fig, title, xlim, ylim, xticks, yticks, sort_columns, fontsize, secondary_y, colormap, table, layout, **kwds)
     98                  table=False, layout=None, **kwds):
     99 
--> 100         _converter._WARN = False
    101         self.data = data
    102         self.by = by

NameError: name '_converter' is not defined

Вывод pd.show_versions()

УСТАНОВЛЕННЫЕ ВЕРСИИ

фиксация: Нет
питон: 3.6.4.final.0
биты Python: 64
ОС: Linux
Релиз ОС: 4.14.0-3-amd64
машина: x86_64
процессор:
byteorder: маленький
LC_ALL: Нет
ЯЗЫК: en_US.UTF-8
МЕСТО: en_US.UTF-8

панды: 0.22.0
pytest: Нет
пункт: 9.0.1
setuptools: 38.5.1
Cython: Нет
число: 1.14.1
scipy: 0.19.1
pyarrow: Нет
xarray: Нет
IPython: 6.2.1
сфинкс: 1.6.6
Пэтси: Нет
dateutil: 2.6.1
pytz: 2018.3
blosc: Нет
узкое место: нет
таблицы: нет
numexpr: Нет
перо: нет
matplotlib: Нет
openpyxl: Нет
xlrd: Нет
xlwt: Нет
xlsxwriter: Нет
lxml: Нет
bs4: Нет
html5lib: 0,999999999
sqlalchemy: Нет
pymysql: Нет
psycopg2: Нет
jinja2: 2.10
s3fs: Нет
fastparquet: Нет
pandas_gbq: Нет
pandas_datareader: Нет

Blocker Error Reporting Visualization

Самый полезный комментарий

Испытал это в Jupyter Notebook. Установлен matplotlib , импортирован, а затем повторно импортирован pandas , исключение не исчезло. Перезагрузил ноутбук, и это было исправлено. Такое ощущение, что какое-то глобальное состояние не инициализируется повторно.

Все 11 Комментарий

Это вызвано отсутствием matplotlib:

>>> from pandas.plotting import _converter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/whitequark/.local/lib/python3.6/site-packages/pandas/plotting/_converter.py", line 8, in <module>
    import matplotlib.units as units
ModuleNotFoundError: No module named 'matplotlib'

Ошибка должна быть полезнее.

Итак, это дубликат https://github.com/pandas-dev/pandas/issues/19340 , и проблема в том, что мы не можем его воспроизвести. Это явно проявляется у нескольких людей, но нам нужно диагностировать, почему это происходит.

Можете ли вы запустить код на https://github.com/pandas-dev/pandas/issues/19340#issuecomment -359416261 и проверить, не работает ли это?

Конечно:

>>> from pandas.plotting._misc import (scatter_matrix, radviz,
...                                    andrews_curves, bootstrap_plot,
...                                    parallel_coordinates, lag_plot,
...                                    autocorrelation_plot)
>>> from pandas.plotting._core import boxplot
>>> from pandas.plotting._style import plot_params
>>> from pandas.plotting._tools import table
>>>
>>> from pandas.plotting._converter import \
...     register as register_matplotlib_converters
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/whitequark/.local/lib/python3.6/site-packages/pandas/plotting/_converter.py", line 8, in <module>
    import matplotlib.units as units
ModuleNotFoundError: No module named 'matplotlib'
>>> from pandas.plotting._converter import \
...     deregister as deregister_matplotlib_converters
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/whitequark/.local/lib/python3.6/site-packages/pandas/plotting/_converter.py", line 8, in <module>
    import matplotlib.units as units
ModuleNotFoundError: No module named 'matplotlib'

Ах, я действительно могу воспроизвести это, и я полагаю, что это из-за

https://github.com/pandas-dev/pandas/blob/f8dfcfb35ca975575dcfba625eac6c9f231c0e5e/pandas/plotting/_core.py#L44 -L50

где мы импортируем _converter , который позже используется в файле, но затем не выводит хорошее сообщение об ошибке, когда matplotlib недоступен.

Да, это непременно нужно решить.

Я также получаю ту же ошибку при изучении курса google pandas.
Я использую python3.6
а компьютерная система - mac osx 11

>>> import pandas as pd
>>> pd.__version__
'0.22.0'
>>> california_housing_dataframe = pd.read_csv("https://storage.googleapis.com/ml_universities/california_housing_train.csv", sep=",")
>>> california_housing_dataframe.head()
   longitude  latitude  housing_median_age  total_rooms  total_bedrooms  \
0    -114.31     34.19                15.0       5612.0          1283.0   
1    -114.47     34.40                19.0       7650.0          1901.0   
2    -114.56     33.69                17.0        720.0           174.0   
3    -114.57     33.64                14.0       1501.0           337.0   
4    -114.57     33.57                20.0       1454.0           326.0   

   population  households  median_income  median_house_value  
0      1015.0       472.0         1.4936             66900.0  
1      1129.0       463.0         1.8200             80100.0  
2       333.0       117.0         1.6509             85700.0  
3       515.0       226.0         3.1917             73400.0  
4       624.0       262.0         1.9250             65500.0  
>>> california_housing_dataframe.hist('housing_median_age')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/pandas/plotting/_core.py", line 2160, in hist_frame
    _converter._WARN = False
NameError: name '_converter' is not defined

Испытал это в Jupyter Notebook. Установлен matplotlib , импортирован, а затем повторно импортирован pandas , исключение не исчезло. Перезагрузил ноутбук, и это было исправлено. Такое ощущение, что какое-то глобальное состояние не инициализируется повторно.

Испытал это в Jupyter Notebook. Установил matplotlib, импортировал его, а затем повторно импортировал панды, исключение не исчезло. Перезагрузил ноутбук, и это было исправлено. Такое ощущение, что какое-то глобальное состояние не инициализируется повторно.

@megaserg, чтобы надежно проверять импорт с помощью python, вам всегда нужно перезапускать процесс python.
Но в любом случае это ошибка, и мы должны исправить ее в следующем выпуске.

@tonyshare Я встретил такой же вопрос, как решить?

@ Ako520 Установив matplotlib. Это будет исправлено в следующей версии pandas.

Решение - перезапустить ядро ​​или перезапустить сервер jupyter.

перезапуск ядра у меня не работает

Была ли эта страница полезной?
0 / 5 - 0 рейтинги