Python数据清洗:如何将带时区日期转换为仅年月日格式?
解决Python折线图X轴日期仅显示YYYY-MM-DD格式的问题
你可以通过两种方式实现需求:要么先清洗日期列生成仅含日期的字段,要么直接在绘图时配置X轴刻度格式。
方法一:先清洗日期列,再基于处理后的字段绘图
这种方式适合需要后续重复使用日期字段的场景,步骤如下:
- 导入依赖库并读取数据集:
import pandas as pd import matplotlib.pyplot as plt # 假设数据集已读取到df中 # df = pd.read_csv('你的数据集路径.csv')
- 将
Formatted Date列转换为带时区的datetime类型,并提取日期部分:
# 转换为datetime类型(处理时区信息) df['Formatted Date'] = pd.to_datetime(df['Formatted Date'], utc=True) # 生成仅含日期的新列,格式为YYYY-MM-DD的字符串 df['Date'] = df['Formatted Date'].dt.strftime('%Y-%m-%d') # 或者生成date对象(matplotlib也能识别) # df['Date'] = df['Formatted Date'].dt.date
- 使用处理后的
Date列绘制折线图:
plt.plot(df['Date'], df['目标数值列']) plt.xlabel('日期') plt.ylabel('数值') # 可选:旋转X轴标签避免重叠 plt.xticks(rotation=45) plt.tight_layout() plt.show()
方法二:不修改原始数据,直接配置绘图时的X轴格式
如果不需要修改原始数据集,可直接通过matplotlib的日期格式化器设置刻度显示:
- 导入依赖库并转换日期列:
import pandas as pd import matplotlib.pyplot as plt from matplotlib.dates import DateFormatter # 转换日期列为datetime类型 df['Formatted Date'] = pd.to_datetime(df['Formatted Date'], utc=True)
- 绘制折线图并设置X轴格式:
fig, ax = plt.subplots() ax.plot(df['Formatted Date'], df['目标数值列']) # 设置X轴刻度显示为YYYY-MM-DD格式 date_formatter = DateFormatter('%Y-%m-%d') ax.xaxis.set_major_formatter(date_formatter) # 可选配置:旋转标签、调整布局 plt.xticks(rotation=45) plt.xlabel('日期') plt.ylabel('数值') plt.tight_layout() plt.show()
注意事项
- 转换datetime时必须处理时区信息(
utc=True或指定对应时区),否则可能导致日期解析错误或显示异常; - 如果你的日期列已经是datetime类型,可跳过转换步骤直接处理格式。
内容的提问来源于stack exchange,提问作者BravoDelta
相关产品推荐
相关产品推荐

