Pandas技术问题:合并日期时间后绘制与value值的关系图
解决Pandas中日期时间组合的绘图问题
没问题,我来帮你搞定这个需求!你需要把date和time合并成符合要求的日期时间格式,再用来做X轴绘制和value的关系图,具体步骤如下:
步骤1:处理时间列,合并成完整的datetime对象
你的time列是数字格式(比如515对应05:15,1014对应10:14),首先得把它转换成标准的时分格式,再和date列合并成Pandas的datetime类型:
import pandas as pd import matplotlib.pyplot as plt # 你的原始数据 raw_data = {'date': ['1975-07-03','1975-07-03','1975-07-04','1975-08-01'], 'time': [515,1014,1401,1201], 'value': [1,-1,2,11]} df = pd.DataFrame(raw_data, columns = ['date', 'time', 'value']) # 把time转成4位字符串(补前导零),再拆成时分 df['time_str'] = df['time'].astype(str).str.zfill(4) df['hour'] = df['time_str'].str[:2] df['minute'] = df['time_str'].str[2:] # 合并date和时分,生成完整的datetime列 df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['hour'] + ':' + df['minute'])
步骤2:生成需要的X轴显示格式
按照要求,把datetime转换成"月-日 时:分"的格式,用来作为X轴的标签:
df['x_label'] = df['datetime'].dt.strftime('%m-%d %H:%M')
步骤3:绘制关系图
现在就可以用matplotlib来绘制value和处理后的日期时间的关系图了,这里用折线图为例,你也可以换成散点图:
plt.figure(figsize=(10, 6)) plt.plot(df['x_label'], df['value'], marker='o', linestyle='-', color='b') # 设置图表样式 plt.xlabel('Date-Time (Month-Day Hour:Minute)') plt.ylabel('Value') plt.title('Value vs Date-Time') plt.xticks(rotation=45) # 旋转X轴标签避免重叠 plt.tight_layout() # 自动调整布局 plt.show()
简化版代码(合并步骤)
如果你觉得上面的步骤太繁琐,也可以用一行代码直接生成datetime列,省去中间的hour和minute列:
df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'].astype(str).str.zfill(4).str.replace(r'(\d{2})(\d{2})', r'\1:\2', regex=True)) df['x_label'] = df['datetime'].dt.strftime('%m-%d %H:%M')
这样处理后,X轴就会显示成你需要的"月-日 时:分"格式,完美匹配你的需求啦!
内容的提问来源于stack exchange,提问作者F.M.R.
相关产品推荐
相关产品推荐

