使用Pandas读取Excel日期列用于绘图,是否需包含年份信息?
问题:无年份的日期列用于绘图是否必须包含年份?
问题背景
我编写了如下Python脚本:
import pandas as pd def main(): readExcelFile() def readExcelFile(): fileName = "abc.xlsx" data = pd.read_excel(fileName,engine='openpyxl') print(data['Date']) data['Date1'] = pd.to_datetime(data['Date'],format='%mm/%dd') print(data['Date1']) main()
Excel文件中日期列内容为:
12/01 12/02 12/03 12/04
但通过Pandas DataFrame输出后显示为:
2001-12-01 2002-12-01 2003-12-01 2004-12-01
日期类型为datetime64[ns],因Excel中无年份信息,Pandas自动添加了年份,导致显示的日期与原数据不符。基于@cottontail的评论,现询问:仅用于读取数据绘图、无需计算日期差时,包含日期列的Excel文件是否必须包含年份信息?
回答
不需要必须包含年份信息。
如果只是用于绘图,完全可以将日期列以字符串类型读取,这样能保留原始的MM/DD格式,避免Pandas自动补全年份。
具体修改方式:
- 读取Excel时,通过
dtype参数强制指定Date列为字符串类型:
data = pd.read_excel(fileName, engine='openpyxl', dtype={'Date': str})
后续绘图直接使用该字符串列即可,主流绘图库(如Matplotlib、Seaborn)会按原始顺序展示日期,完全满足绘图需求。
另外,若你想保留日期类型但不想让Pandas自动补全年份,也可以手动指定固定年份(比如2024),同时注意修正格式字符串(原代码中%mm/%dd是错误的,正确格式应为%m/%d):
data['Date1'] = pd.to_datetime('2024/' + data['Date'], format='%Y/%m/%d')
不过这种方式不如直接使用字符串简便,毕竟你不需要计算日期差,没必要转换为datetime类型。
内容的提问来源于stack exchange,提问作者subhasmita
相关产品推荐
相关产品推荐

