временные ряды seaborn из фрейма данных pandas

Я борюсь с тем, что кажется очень простой проблемой: как заставить seaborn построить линейную диаграмму временных рядов из фрейма данных pandas. Что я здесь делаю не так?

import seaborn as sns
import pandas as pd
df=pd.DataFrame({"Date":["2015-03-03","2015-03-02","2015-03-01"],"Close":[1,3,2]})
df["Date"]=pd.to_datetime(df["Date"])#Not sure if seaborn can parse strings as dates
sns.tsplot(data=df,unit=None, time="Date", value="Close")

Я получаю этот вывод:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-306-20e252f661c2> in <module>()
      1 df=pd.DataFrame({"Date":["2015-03-03","2015-03-02","2015-03-01"],"Close":[1,3,2]})
      2 df["Date"]=pd.to_datetime(df["Date"])
----> 3 sns.tsplot(data=df,unit=None, time="Date", value="Close")

C:Anacondalibsite-packagesseaborntimeseries.pyc in tsplot(data, time, unit, condition, value, err_style, ci, interpolate, color, estimator, n_boot, err_palette, err_kws, legend, ax, **kwargs)
    275     for c, (cond, df_c) in enumerate(data.groupby(condition, sort=False)):
    276 
--> 277         df_c = df_c.pivot(unit, time, value)
    278         x = df_c.columns.values.astype(np.float)
    279 

C:Anacondalibsite-packagespandascoreframe.pyc in pivot(self, index, columns, values)
   3507         """
   3508         from pandas.core.reshape import pivot
-> 3509         return pivot(self, index=index, columns=columns, values=values)
   3510 
   3511     def stack(self, level=-1, dropna=True):

C:Anacondalibsite-packagespandascorereshape.pyc in pivot(self, index, columns, values)
    324     else:
    325         indexed = Series(self[values].values,
--> 326                          index=MultiIndex.from_arrays([self[index],
    327                                                        self[columns]]))
    328         return indexed.unstack(columns)

C:Anacondalibsite-packagespandascoreframe.pyc in __getitem__(self, key)
   1795             return self._getitem_multilevel(key)
   1796         else:
-> 1797             return self._getitem_column(key)
   1798 
   1799     def _getitem_column(self, key):

C:Anacondalibsite-packagespandascoreframe.pyc in _getitem_column(self, key)
   1802         # get column
   1803         if self.columns.is_unique:
-> 1804             return self._get_item_cache(key)
   1805 
   1806         # duplicate columns & possible reduce dimensionaility

C:Anacondalibsite-packagespandascoregeneric.pyc in _get_item_cache(self, item)
   1082         res = cache.get(item)
   1083         if res is None:
-> 1084             values = self._data.get(item)
   1085             res = self._box_item_values(item, values)
   1086             cache[item] = res

C:Anacondalibsite-packagespandascoreinternals.pyc in get(self, item, fastpath)
   2858                         loc = indexer.item()
   2859                     else:
-> 2860                         raise ValueError("cannot label index with a null key")
   2861 
   2862             return self.iget(loc, fastpath=fastpath)

ValueError: cannot label index with a null key

к сожалению, я не нашел ответа в документации.

1 ответов


на tsplot of seaborn предназначен не для построения простого графика временных рядов, а для построения неопределенностей, см.:https://stanford.edu / ~mwaskom/software/seaborn/generated/seaborn.tsplot.html.

для линейного графика вы можете просто сделать

df.set_index('Date').plot()