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: Нет
Это вызвано отсутствием 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'
Ах, я действительно могу воспроизвести это, и я полагаю, что это из-за
где мы импортируем _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.
перезапуск ядра у меня не работает
Самый полезный комментарий
Испытал это в Jupyter Notebook. Установлен
matplotlib
, импортирован, а затем повторно импортированpandas
, исключение не исчезло. Перезагрузил ноутбук, и это было исправлено. Такое ощущение, что какое-то глобальное состояние не инициализируется повторно.