仅绘制 2021 年 2 月 1 日至 2021 年 3 月 15 日的数据,不删除 2 月之前的数据

时间:2021-03-15 02:46:43

标签: python pandas

让我写下我到目前为止所做的:

import matplotlib.pyplot as plt
import pandas_datareader.data as web
import pandas as pd
import datetime

start = datetime.datetime(2020, 8, 19)
end = datetime.datetime(2021, 3, 15)

KE = web.DataReader("BEKE", "yahoo", start, end)

ma5 = KE['Adj Close'].rolling(window=5).mean()
ma20 = KE['Adj Close'].rolling(window=20).mean()
ma60 = KE['Adj Close'].rolling(window=60).mean()
ma120 = KE['Adj Close'].rolling(window=120).mean()

plt.style.use('classic')

KE.insert(len(KE.columns), "MA5", ma5)
KE.insert(len(KE.columns), "MA20", ma20)
KE.insert(len(KE.columns), "MA60", ma60)
KE.insert(len(KE.columns), "MA120", ma120)

plt.plot(KE.index, KE['Adj Close'], label="Adj Close",)
plt.plot(KE.index, KE['MA5'], label="MA5")
plt.plot(KE.index, KE['MA20'], label="MA20")
plt.plot(KE.index, KE['MA60'], label="MA60")
plt.plot(KE.index, KE['MA120'], label="MA120")

plt.legend(loc='best')
plt.grid()
plt.show()

我只需要绘制 2021 年 2 月 1 日至 2021 年 3 月 15 日的数据。

我不想删除 2 月份之前的数据系列,因为无法绘制 MA60 和 MA120 线。

1 个答案:

答案 0 :(得分:0)

您可以像这样使用 .loc 获取 DataFrame 的子集:

# KE.insert(len(KE.columns), "MA5", ma5)
# KE.insert(len(KE.columns), "MA20", ma20)
# KE.insert(len(KE.columns), "MA60", ma60)
# KE.insert(len(KE.columns), "MA120", ma120)
# above lines shown to indicate where to add the following line:
KE_subset = KE.loc[datetime.date(2021,2,1):datetime.date(2021,3,15)]

然后您只需绘制该子集而不是完整的 DataFrame:

plt.plot(KE_subset.index, KE_subset['Adj Close'], label="Adj Close",) 
plt.plot(KE_subset.index, KE_subset['MA5'], label="MA5") 
plt.plot(KE_subset.index, KE_subset['MA20'], label="MA20") 
plt.plot(KE_subset.index, KE_subset['MA60'], label="MA60") 
plt.plot(KE_subset.index, KE_subset['MA120'], label="MA120")

# I also rotated the x-axis labels to fit better with:
plt.xticks(rotation=45)

enter image description here