我有一个包含大量信息的Dataframe,但我想绘制一系列图表(如箱线图和累积密度函数),以六个月为间隔,在几个月内迭代,如:从最早的一个月(一月、二月、三月、四月、五月、六月)开始的前六个月的绘图,然后从第二早的一个月(二月、三月、四月、五月、六月、七月)开始的另一个六个月的绘图,然后(三月、四月、五月、六月、七月、八月)等等。
我尝试了一种可能非常幼稚的方法来迭代循环:
months = df_filt['time'].unique()
其输出如下:
然后道:
j = 0
k = 0
while j < len(months) - 5:
while k < 6:
dff = df_filt.loc[df_filt['time'] == months[k]]
dff = pd.concat(dff)
k += 1
sns.histplot(data=df_filt,
x='hrs_prev',
hue='Faltou',
bins=len(df_filt),
stat="density",
element="step",
fill=False,
cumulative=True,
common_norm=False)
plt.title("Cumulative distribution function")
plt.show()
k = 0
这显然是错误的,因为当k=0
在循环结束时,我会一遍又一遍地绘制相同的东西。我可以将while k < 6
改为另一个东西,因为循环总是完成工作,但它们从来不是完成工作的最佳方式......
我可以尝试如下方法:.... k = k-5
这个方法是可行的,因为在循环结束时,j会以正确的方式递增,看起来是可行的,但是我听说Pandas有一个内置的函数,它可以处理时间序列的滞后,或者叫做ThreadPoolExecutor
,但是我似乎没有找到能帮我的例子。
所以,我的问题是:
有没有什么最佳的方法来处理时间序列,并且可以按照我需要的方式绘制数据间隔?ThreadPoolExecutor
是正确的方法吗?或者我必须手工完成?
任何帮助都将是巨大的感谢,并将真正保存我一个巨大的时间
1条答案
按热度按时间6jjcrrmo1#
我试过这个,它不是最好的解决方案,但效果很好:
我想要一些更优雅和最优的东西,因为我不喜欢循环。但它做了一段时间的工作。