You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas在CSV文件中筛选特定日期范围并绘制图表?

嘿,作为Python新手处理CSV和可视化确实得注意几个细节,我来帮你搞定日期筛选和绘图的问题~

首先看你现有代码的小问题:你读取CSV的时候只选了Close列,没包含日期列,这就没法筛选日期,而且x轴的日期也会出问题。咱们一步步来修正:

1. 正确读取CSV并处理日期

首先得确保把日期列读进来,并且让Pandas识别成日期类型。假设你的CSV里日期列叫Date,修改读取代码:

import pandas as pd
import matplotlib.pyplot as plt

# 读取文件,指定日期列,把它设为索引(方便后续筛选)
prc = pd.read_csv(
    "your_file.csv",  # 这里替换成你的实际文件名
    parse_dates=["Date"],  # 告诉Pandas哪一列是日期
    index_col="Date",  # 将日期设为DataFrame的索引
    nrows=150,
    usecols=["Date", "Close"]  # 必须包含日期列和收盘价列
)

如果你的日期列名字不是Date,记得改成CSV里实际的列名哦~

2. 筛选指定日期范围

因为我们把日期设成了索引,直接用切片就能轻松筛选:

# 定义你要的日期范围
start_date = "2013-03-20"
end_date = "2014-03-04"

# 筛选出这个范围内的数据
filtered_prc = prc.loc[start_date:end_date]

如果没把日期设为索引,也可以用布尔索引:

filtered_prc = prc[(prc["Date"] >= start_date) & (prc["Date"] <= end_date)]

3. 计算移动平均并绘图

基于筛选后的数据计算移动平均,然后绘图,还要优化一下图表的可读性:

# 计算5日移动平均
prc_ma = filtered_prc["Close"].rolling(5).mean()

# 绘制图表
plt.figure(figsize=(10, 6))  # 设置图表大小,看着更舒服
plt.plot(filtered_prc["Close"], color="blue", label="Price")
plt.plot(prc_ma, color="red", label="5-Day Moving Average")
plt.xlabel("Date")
plt.ylabel("Price")
plt.title("Price & 5-Day Moving Average (2013-03-20 to 2014-03-04)")
plt.legend()  # 显示图例
plt.xticks(rotation=45)  # 旋转日期标签,避免挤在一起
plt.tight_layout()  # 自动调整布局,防止标签被截断
plt.show()

小提示

如果Pandas识别不了你的日期格式,可以用date_parser参数自定义解析函数,比如:

from datetime import datetime

prc = pd.read_csv(
    "your_file.csv",
    parse_dates=["Date"],
    date_parser=lambda x: datetime.strptime(x, "%Y/%m/%d"),  # 替换成你的日期格式
    index_col="Date",
    usecols=["Date", "Close"]
)

内容的提问来源于stack exchange,提问作者Hun3u5ek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:09:42