You need to enable JavaScript to run this app. 如何在R中使用非数值时间数据绘制histogram(直方图)
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中使用非数值时间数据绘制histogram(直方图)

实现思路

  • 先提取departure_time的小时数值:把“时:分”格式的字符串拆分,取小时部分转为整数
  • 对齐1~12的小时区间统计频次,无数据的小时频次记为0
  • 绘制直方图时固定x轴刻度为1到12即可

Python 实现代码示例

首先导入需要的库:

import pandas as pd
import matplotlib.pyplot as plt

如果是你自己的本地数据,用pd.read_csv()或者对应读入方法替换下方构造示例数据的代码即可:

# 构造示例数据
data = {
    "serialno": [1,2,3,4,5],
    "departure_time": ["5:34", "9:03", "6:10", "7:50", "9:00"],
    "mode": ["walk", "bus", "car", "car", "car"]
}
df = pd.DataFrame(data)

预处理时间字段并统计频次:

# 拆分时间字符串提取小时,转为整数
df['hour'] = df['departure_time'].str.split(':', expand=True)[0].astype(int)
# 统计1~12每个小时的出现频次
freq = [len(df[df['hour'] == h]) for h in range(1, 13)]

绘制直方图:

plt.figure(figsize=(10, 6))
plt.bar(range(1, 13), freq, width=0.8, edgecolor='black')
# 固定x轴刻度为1~12
plt.xticks(range(1, 13))
plt.xlabel('出发时间(小时)')
plt.ylabel('频次')
plt.title('出发时间分布直方图')
plt.show()

补充说明

如果你的原始时间是24小时制,需要先转成12小时制再统计,只需要在提取小时后加一行调整代码即可:

# 24小时转12小时,0点对应12点
df['hour'] = df['hour'].apply(lambda x: x%12 if x%12 !=0 else 12)

内容的提问来源于stack exchange,提问作者SHIRLEEN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 14:06:07