如何调整散点图代码以筛选显示指定日期范围的数据?
问题描述
我有一段绘制散点图的代码,数据日期范围覆盖2015年1月1日至2022年3月1日,想调整代码只查看特定日期范围(比如2015年1月1日至2015年12月30日)的数据,该怎么修改?
原代码
import matplotlib.pyplot as plt import numpy as np import pandas as pd df = pd.read_excel('Outliers.xlsx', 'ATL') print(df.head()) print(df.tail()) fig, ax = plt.subplots(figsize =(10,6,)) ax.scatter(x=df['HDDs'], y = df['UPBU'], c='blue') plt.xlabel("HDDs") plt.ylabel("Use Per Billing Unit") plt.title("LDC HDD Vs. UPBU") plt.show()
原脚本输出
df.head() 输出
Date HDDs UPBU 0 2015-01-01 17.0 0.457539 1 2015-01-02 16.5 0.429936 2 2015-01-03 7.3 0.311634 3 2015-01-04 16.6 0.432595 4 2015-01-05 26.8 0.703082
df.tail() 输出
Date HDDs UPBU 2642 2022-03-27 11.6 0.311739 2643 2022-03-28 7.5 0.267713 2644 2022-03-29 0.2 0.165169 2645 2022-03-30 0.0 0.118345 2646 2022-03-31 4.7 0.154248
解决方案
要实现特定日期范围的数据筛选,按以下步骤修改代码即可:
1. 确保日期列格式正确
先把Date列转换为datetime类型,避免因格式问题导致筛选失败:
df['Date'] = pd.to_datetime(df['Date'])
2. 筛选目标日期范围数据
用布尔索引筛选出指定时间段的数据,以2015年1月1日至2015年12月30日为例:
start_date = '2015-01-01' end_date = '2015-12-30' filtered_df = df[(df['Date'] >= start_date) & (df['Date'] <= end_date)]
3. 用筛选后的数据绘图
把原代码中调用df的地方替换成filtered_df即可。
完整修改代码
import matplotlib.pyplot as plt import numpy as np import pandas as pd df = pd.read_excel('Outliers.xlsx', 'ATL') # 转换日期列格式 df['Date'] = pd.to_datetime(df['Date']) # 筛选目标日期范围数据 start_date = '2015-01-01' end_date = '2015-12-30' filtered_df = df[(df['Date'] >= start_date) & (df['Date'] <= end_date)] print(filtered_df.head()) print(filtered_df.tail()) fig, ax = plt.subplots(figsize=(10,6)) ax.scatter(x=filtered_df['HDDs'], y=filtered_df['UPBU'], c='blue') plt.xlabel("HDDs") plt.ylabel("单位计费用量") plt.title("LDC HDD 与 UPBU 关系散点图") plt.show()
补充说明
- 如果你的
Date列已经是datetime类型,可以跳过格式转换步骤,但建议保留该代码以兼容不同数据格式。 - 日期字符串格式需与数据中的格式匹配,或通过
pd.to_datetime自动解析。
内容的提问来源于stack exchange,提问作者Philip Dyche
相关产品推荐
相关产品推荐

