Skip to content

BUG: plotting regular tz-aware timeseries gives UserWarning #31205

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jorisvandenbossche opened this issue Jan 22, 2020 · 1 comment · Fixed by #31207
Closed

BUG: plotting regular tz-aware timeseries gives UserWarning #31205

jorisvandenbossche opened this issue Jan 22, 2020 · 1 comment · Fixed by #31207
Assignees
Labels
Visualization plotting Warnings Warnings that appear or should be added to pandas
Milestone

Comments

@jorisvandenbossche
Copy link
Member

With this example of plotting a tz-aware, regular timeseries:

df = pd.DataFrame(np.random.randn(100, 3), index=pd.date_range("2012", freq='H', periods=100, tz='UTC'), columns=['a', 'b', 'c'])
df.plot()

gives a warning that the user shouldn't see I think (there is nothing to do about it):

/home/joris/scipy/pandas/pandas/core/arrays/datetimes.py:1099: UserWarning: Converting
to PeriodArray/Index representation will drop timezone information.
  UserWarning,

When setting a filterwarning to error, you can see the warning is coming from a to_period() call in the matplotlib plotting backend included in pandas:

In [5]: warnings.simplefilter("error", UserWarning)

In [6]: df.plot()  
---------------------------------------------------------------------------
UserWarning                               Traceback (most recent call last)
<ipython-input-6-848b80e64df8> in <module>
----> 1 df.plot()

~/scipy/pandas/pandas/plotting/_core.py in __call__(self, *args, **kwargs)
    846                     data.columns = label_name
    847 
--> 848         return plot_backend.plot(data, kind=kind, **kwargs)
    849 
    850     def line(self, x=None, y=None, **kwargs):

~/scipy/pandas/pandas/plotting/_matplotlib/__init__.py in plot(data, kind, **kwargs)
     59             kwargs["ax"] = getattr(ax, "left_ax", ax)
     60     plot_obj = PLOT_CLASSES[kind](data, **kwargs)
---> 61     plot_obj.generate()
     62     plot_obj.draw()
     63     return plot_obj.result

~/scipy/pandas/pandas/plotting/_matplotlib/core.py in generate(self)
    261         self._compute_plot_data()
    262         self._setup_subplots()
--> 263         self._make_plot()
    264         self._add_table()
    265         self._make_legend()

~/scipy/pandas/pandas/plotting/_matplotlib/core.py in _make_plot(self)
   1050             from pandas.plotting._matplotlib.timeseries import _maybe_convert_index
   1051 
-> 1052             data = _maybe_convert_index(self._get_ax(0), self.data)
   1053 
   1054             x = data.index  # dummy, not used

~/scipy/pandas/pandas/plotting/_matplotlib/timeseries.py in _maybe_convert_index(ax, data)
    252 
    253         if isinstance(data.index, ABCDatetimeIndex):
--> 254             data = data.to_period(freq=freq)
    255         elif isinstance(data.index, ABCPeriodIndex):
    256             data.index = data.index.asfreq(freq=freq)

~/scipy/pandas/pandas/core/frame.py in to_period(self, freq, axis, copy)
   8379         axis = self._get_axis_number(axis)
   8380         if axis == 0:
-> 8381             new_data.set_axis(1, self.index.to_period(freq=freq))
   8382         elif axis == 1:
   8383             new_data.set_axis(0, self.columns.to_period(freq=freq))

~/scipy/pandas/pandas/core/accessor.py in f(self, *args, **kwargs)
     97         def _create_delegator_method(name):
     98             def f(self, *args, **kwargs):
---> 99                 return self._delegate_method(name, *args, **kwargs)
    100 
    101             f.__name__ = name

~/scipy/pandas/pandas/core/indexes/datetimelike.py in _delegate_method(self, name, *args, **kwargs)
    986 
    987     def _delegate_method(self, name, *args, **kwargs):
--> 988         result = operator.methodcaller(name, *args, **kwargs)(self._data)
    989         if name not in self._raw_methods:
    990             result = Index(result, name=self.name)

~/scipy/pandas/pandas/core/arrays/datetimes.py in to_period(self, freq)
   1097                 "Converting to PeriodArray/Index representation "
   1098                 "will drop timezone information.",
-> 1099                 UserWarning,
   1100             )
   1101 

UserWarning: Converting to PeriodArray/Index representation will drop timezone information.
@jreback
Copy link
Contributor

jreback commented Jan 24, 2020

commented on the PR, this is post 0.25.3?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Visualization plotting Warnings Warnings that appear or should be added to pandas
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants