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

Pandas绘制时序大数据集:重采样与X轴优化方案问询

解决时序数据折线图卡顿与X轴刻度杂乱问题

核心前提:先把时间列转为datetime类型

不管用哪种方案,第一步必须把DateTime列转换成pandas的datetime类型并设为索引,否则时序处理和刻度优化都没法正常工作:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import MinuteLocator, DateFormatter

# 读取数据
df = pd.read_csv("C:/WG/Temp/TimeSeries.csv", sep=',')
# 转换时间列并设为索引
df['DateTime'] = pd.to_datetime(df['DateTime'], format='%d/%m/%Y %H:%M:%S')
df = df.set_index('DateTime').drop(columns=['Temp', 'no'])

方案一:重采样降维(解决卡顿)+ 优化X轴刻度

按分钟取均值把4万条数据压缩到几千条,彻底解决卡顿,同时通过matplotlib的日期定位器控制X轴刻度显示间隔:

# 按分钟重采样,取Light的均值
resampled_df = df['Light'].resample('1min').mean()

# 绘制折线图
fig, ax = plt.subplots(figsize=(12,6))
resampled_df.plot(ax=ax, kind='line', label='Light (1min avg)')

# 设置X轴刻度:每隔30分钟显示一个刻度,自定义日期格式
ax.xaxis.set_major_locator(MinuteLocator(interval=30))
ax.xaxis.set_major_formatter(DateFormatter('%H:%M %d/%m'))

# 旋转刻度标签避免重叠
plt.xticks(rotation=45)
plt.legend()
plt.tight_layout()  # 自动调整布局,防止标签被截断
plt.show()
  • 可以根据需求调整resample的频率(比如'5min'按5分钟采样),以及MinuteLocator的interval参数(比如interval=60显示每小时刻度)。

方案二:保留所有数据点 + 自定义X轴刻度间隔

如果必须保留全部4万条数据,通过手动设置X轴显示的刻度位置和标签,只展示每隔n个点的时间:

# 绘制全数据折线图
fig, ax = plt.subplots(figsize=(12,6))
df['Light'].plot(ax=ax, kind='line', label='Light (raw data)')

# 设置每隔1000个点显示一个X轴刻度(可根据需求调整n值)
n = 1000
ticks = df.index[::n]
ax.set_xticks(ticks)
# 自定义日期显示格式
ax.set_xticklabels(ticks.strftime('%H:%M %d/%m'), rotation=45)

plt.legend()
plt.tight_layout()
plt.show()
  • 注意n的取值要根据数据总量调整,比如4万条数据设n=1000会显示40个刻度,既不会太挤也能看清时间趋势。
  • 如果觉得折线太密,可以把kind='line'换成kind='scatter',但4万点的散点图还是可能卡顿,优先推荐方案一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:45:57