如何使用pandas在csv文件中选择特定的日期范围?

时间:2018-04-05 17:37:33

标签: python pandas plot

我是Python的新手,正在使用csv文件。我想通过选择特定日期范围找到打印图表的方法,例如 2013-03-20:2014-03-04。

以下代码:

import pandas as pd
import matplotlib.pyplot as plt

prc=pd.read_csv("csv",parse_dates=True, nrows=150, usecols=["Close"])

prc_ma=prc.rolling(5).mean()


plt.plot(prc, color="blue", label="Price")
plt.plot(prc_ma, color="red", label="Moving Average")
plt.xlabel("Date")
plt.ylabel("Price")
plt.title("Moving Average")
plt.grid()

我目前使用参数nrows。

谢谢

1 个答案:

答案 0 :(得分:1)

只需使用.loc过滤日期,假设日期时间是数据帧的索引:

prc = pd.read_csv("csv", parse_dates=True, nrows=150, usecols=["Close"])

prc_sub = prc.loc['2013-03-20':'2014-03-04']

使用2013年和2014年所有日子中的随机数据进行演示:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.width', 1000)
np.random.seed(1001)

prc = pd.DataFrame({'PRICE': abs(np.random.randn(730))}, 
                    index=pd.date_range("2013-01-01", "2014-12-31", freq="D"))

# SUBSETTED DATAFRAME
prc_sub = prc.loc['2013-03-20':'2014-03-04']

prc_ma = prc_sub.rolling(5).mean()

plt.plot(prc_sub, color="blue", label="Price")
plt.plot(prc_ma, color="red", label="Moving Average")
plt.xlabel("Date")
plt.ylabel("Price")
plt.title("Moving Average")
plt.grid()

Plot Output