如何抑制matplot datetime索引上的周末?

2024-04-28 05:15:12 发布

您现在位置:Python中文网/ 问答频道 /正文

在mathplot上绘制金融数据系列时,我面临一个问题

基本上,我的数据框架包含一个日期时间索引和3列数据(市场价格:“打开”、“关闭”和“PRC_RL”)

DATETIME索引中的数据仅包含工作日

在基于datetime索引绘制序列时会出现此问题,在周末绘制时会显示间隙。我怎样才能修好它

gaps on the weekendsenter image description here


Tags: 数据框架datetime市场时间绘制序列价格
1条回答
网友
1楼 · 发布于 2024-04-28 05:15:12

问题是数据不再等距,这在聚合x轴上的标签时会产生问题。尽管如此,您仍然可以通过切片数据来实现这一点:

from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
# create dummy data
dates = pd.date_range(start='24/4/2020', end='24/5/2020', freq='D')
val = np.random.rand(len(dates))
df = pd.DataFrame()
df['date'] = dates
df['value'] = val

现在使用

df.plot(x='date',y='value')

结果: enter image description here

可以通过创建逻辑向量lg来排除周末,表示非周末:

lg = []
for day in df['date']:
    day_ISO = day.isoweekday()
    if day_ISO == 6 or day_ISO == 7: # check for saturday & sunday
        lg.append( False )
    else:
        lg.append( True )

并再次绘制数据,但使用此逻辑向量进行切片:

df[lg].plot(x='date',y='value')

enter image description here

你也可以通过这种方式轻松地查看银行假期

上面的虚拟数据表明您实际上忽略了数据。如果您使用的是财务数据,则情况并非如此,因为财务数据根本不是在周末生成的。所以这条线仍然是连续的,但是x轴不再清晰了。因此,我建议调整轴,例如,通过为每个标签设置明确的日期,或者通过在绘图本身中用一条小的、灰色的垂直线指示被切碎的天数。。。或者类似的东西

编辑:使用pandas.DatetimeInex

from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
# create dummy data
dates = pd.date_range(start='24/4/2020', end='24/5/2020', freq='D')
val = np.random.rand(len(dates))
df = pd.DataFrame()
df['date'] = dates
df['value'] = val
df = df.set_index('date') # create a pandas.DatetimeIndex

lg = []
for day in df.index: # iterate over the indeces
    day_ISO = day.isoweekday()
    if day_ISO == 6 or day_ISO == 7: # check for saturday & sunday
        lg.append( False )
    else:
        lg.append( True )

df[lg].plot(y='value') # no need to set the x-axis explicitly

相关问题 更多 >