我正在寻找一种更具python风格的方法,将一个非常大的地块分割成几个子地块,按月份(二月、三月等)分开
我已使用将df中的所有日期值转换为DateTime
pd.to_datetime(df['dates']
然后,我成功地创建了新的变量,其中包含基于所需日期范围的数据帧片段,但这似乎不是最有效/可复制的方法。我最初的想法是使用datetime()在x轴上设置一个限制,并为所需的日期范围传递两个参数。仍然不是非常有效,但我的初始数据集只有五个月。你知道吗
plt.figure(1)
plt.subplot(511)
plt.plot(x['dates'], y, marker='o')
plt.xticks(rotation='vertical')
plt.rcParams['figure.figsize'] = (30,10)
plt.xlabel('time')
plt.ylabel('day-over-day change')
plt.xlim([datetime.date.strftime(2019, 2, 1),
datetime.date.strftime(2019, 2, 28)])
plt.show()
我希望有一个包含2019年2月1日和2019年2月28日之间的所有数据点的小子包,但当我运行此代码时,会得到一个类型错误,其内容如下:
TypeError: descriptor 'strftime' requires a 'datetime.date' object but
received a 'int'
编辑:我也试过
plt.xlim([datetime.date(2019, 2, 1), datetime.date(2019, 2, 26)])
但这会产生错误:
TypeError: datetime.date(2019, 2, 1) is not a string
这就是为什么我要用strftime
结束编辑
虽然自动创建正确数量的子图是理想的,但现在我只想通过matplotlib.pyplot文件()这样我可以让客户更容易理解数据。如果有人想处理迭代df的过程,目的是自动确定图的数量(以及它们的正确分割),我不会反对。你知道吗
您当前使用的strftime使用的输入不正确。
strftime()
获取日期对象并将其转换为字符串。相反,试试datetime.date(Y, M, D)
。你知道吗此外,您还可以使用pandas的一些内置功能将时间数组索引和分离为不同的时间区域。具体来说,Grouper()功能允许按常用的时间属性(如月、周、年)对datetime列进行分组。下面是一些生成数据帧的示例代码,然后为每个月将数据帧拆分为单独的数据帧:
查看结果
months
显示:有关按日期范围拆分时间序列的信息,请参见SO thread。你知道吗
相关问题 更多 >
编程相关推荐