我正试着用有时间间隔的熊猫DataFrame (熊猫TimeStamp )来制作熊猫。使用pandas.plot()可以在前一个段的最后一个TimeStamp和下一个段的第一个TimeStamp之间进行线性插值。我不需要线性插值,也不需要在两个日期段之间的空空间。有办法吗?
假设我们有一个带有DataFrame indize的TimeStamp:
>>> import numpy as np
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
>>> df = pd.DataFrame(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
>>> df = df.cumsum()
现在,让我们分两段时间来绘制它:
>>> df = pd.concat([df['Jan 2000':'Aug 2000'], df['Jan 2001':'Aug 2001']])
>>> df.plot()
>>> plt.show()
生成的图形有一条连接TimeStamps的内插线,包围着间隙。我不知道如何在这台机器上上传图片,但是来自谷歌集团的这些图片显示了我的问题(interpolated.jpg,无插值. out,没有gaps.jpg)。我可以重新创建第一个如上面所示。第二个可以通过用NaN替换所有gap值来实现(参见这个问题)。如何实现第三个版本,省去了时间间隔?
发布于 2016-01-29 10:37:33
尝试:
df.plot(x=df.index.astype(str))
您可能需要自定义滴答和滴答标签。
编辑
这对于我使用熊猫0.17.1和numpy 1.10.4是有效的。
您真正需要的是一种将DatetimeIndex
转换为另一种类型的方法,而这种类型与日期时间不一样。为了得到有意义的标签,我选择了str
。如果x=df.index.astype(str)
不适合你的熊猫/矮胖/任何你可以尝试其他选择的组合:
df.index.to_series().dt.strftime('%Y-%m-%d')
df.index.to_series().apply(lambda x: x.strftime('%Y-%m-%d'))
...
我意识到重新设置索引是不必要的,所以我删除了这个部分。
发布于 2019-09-28 18:00:24
在我的例子中,我使用的是DateTimeIndex对象而不是TimeStamp,但是下面的工作为我在熊猫0.24.2中工作,以消除将DatetimeIndex对象转换为string后的时间序列间隙。
df = pd.read_sql_query(sql, sql_engine)
df.set_index('date'), inplace=True)
df.index = df.index.map(str)
https://stackoverflow.com/questions/35085830
复制