【发布时间】:2020-05-29 11:50:18
【问题描述】:
我有一个如下所示的数据框:
Time Instances
00:32:00 1
00:35:00 1
00:51:00 1
01:51:00 1
04:08:00 1
05:13:00 1
05:14:00 1
05:34:00 1
05:51:00 1
07:36:00 1
07:53:00 1
08:20:00 1
09:34:00 1
10:01:00 1
10:18:00 1
10:38:00 1
10:51:00 1
11:15:00 1
12:14:00 1
13:16:00 1
13:28:00 1
13:51:00 1
15:56:00 1
16:22:00 1
16:35:00 1
17:19:00 1
我想绘制此图,但我希望 x 轴上的“刻度”为 00:00:00,04:00:00,08:00:00,12:00:00,16:00 :00,20:00:00,23:59:00。所以我从这段代码开始('t' 是我的数据框的名称)。
编辑:添加加载数据的部分代码。
import pandas as pd
from datetime import date, timedelta
import numpy as np
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
from matplotlib import cm
import random
import datetime
df=pd.read_csv(path)
df['Time']= pd.to_datetime(df['Time'])
df=df.sort_values("Time")
df.Time = df.Time.map(lambda x: x.replace(second=0))
df['Time'] =df['Time'].dt.time
t=df['Time'].value_counts().reset_index()
t.columns=['Time','Instances']
t=t.sort_values("Time")
ax = t.plot(x='Time',y='Instances',kind='bar', title ="Number of Instances By Time of Day", figsize=(20, 10), legend=True, fontsize=12)
ax.set_xticks([datetime.time(0,0,0,0),datetime.time(4,0,0,0),datetime.time(8,0,0,0),datetime.time(12,0,0,0),datetime.time(16,0,0,0),datetime.time(20,0,0,0),datetime.time(23,59,0,0)])
ax.set_xticklabels([datetime.time(0,0,0,0),datetime.time(4,0,0,0),datetime.time(8,0,0,0),datetime.time(12,0,0,0),datetime.time(16,0,0,0),datetime.time(20,0,0,0),datetime.time(23,59,0,0)])
希望解决此问题并提供任何帮助!
【问题讨论】:
-
请同时提供数据加载(例如 csv/excel 读取和日期时间转换,如果已完成)
-
@Nikaido 添加了那部分代码。
标签: python pandas datetime matplotlib