如何在Python中绘制CSV文件内datetime时间序列对应的数值图表
Python绘制CSV时间序列数据可视化方案
1. 前置准备
你已经安装了pandas、matplotlib、numpy,无需额外安装依赖,直接在Spyder中运行以下代码即可。
2. 完整实现代码
场景1:仅包含时间+单个观测值的CSV数据
# 导入依赖库 import pandas as pd import matplotlib.pyplot as plt # 读取CSV数据 # sep='\t' 表示字段用制表符分隔 # header=None 表示CSV没有表头,如果你有表头可以删除这个参数 # parse_dates=[0] 表示把第一列解析为时间格式 # date_format 指定时间字符串的解析规则,匹配你提供的dd/mm/yyyy hh.mm.ss格式 df = pd.read_csv( '你的数据文件路径.csv', sep='\t', header=None, parse_dates=[0], date_format="%d/%m/%Y %H.%M.%S" ) # 给列命名方便调用 df.columns = ['datetime', 'observation'] # 绘制折线图 plt.figure(figsize=(12, 6), dpi=100) plt.plot(df['datetime'], df['observation'], linewidth=1.2, color='#2c7fb8', label='观测数值') # 图表样式设置 plt.xlabel('日期时间', fontsize=12) plt.ylabel('观测值', fontsize=12) plt.title('跨天时间序列观测值变化趋势', fontsize=14) plt.legend() plt.grid(alpha=0.3, linestyle='--') # 旋转x轴标签避免重叠 plt.xticks(rotation=45) # 自动调整布局防止标签被截断 plt.tight_layout() plt.show()
场景2:包含多字段的CSV数据(对应你补充的数据示例)
如果你的CSV有多个数值字段,只需要修改列命名和绘图部分即可,示例如下:
# 读取数据部分和上面一致,修改列命名即可,字段数量和顺序匹配你实际的CSV即可 df.columns = ['datetime', 'val1', 'val2', 'val3', 'val4', 'val5', 'val6', 'val7', 'val8', 'val9', 'val10', 'val11', 'val12', 'val13'] # 示例:绘制前两个数值的对比曲线 plt.figure(figsize=(12, 6), dpi=100) plt.plot(df['datetime'], df['val1'], linewidth=1.2, color='#2c7fb8', label='观测值1') plt.plot(df['datetime'], df['val2'], linewidth=1.2, color='#ff7f0e', label='观测值2') # 样式设置和上面一致 plt.xlabel('日期时间', fontsize=12) plt.ylabel('观测值', fontsize=12) plt.title('多字段时间序列变化趋势', fontsize=14) plt.legend() plt.grid(alpha=0.3, linestyle='--') plt.xticks(rotation=45) plt.tight_layout() plt.show()
3. 常见调整方案
- 如果x轴时间标签太密集,可以添加
plt.gca().xaxis.set_major_locator(plt.MaxNLocator(10))限制显示的刻度数量 - 如果需要绘制子图展示不同字段,可使用
plt.subplots()创建多子图布局 - 确认CSV文件路径填写正确,Windows路径可以用正斜杠
C:/Users/xxx/data.csv或者双反斜杠C:\\Users\\xxx\\data.csv
内容的提问来源于stack exchange,提问作者user1999
相关产品推荐
相关产品推荐

