如何在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
相关产品推荐
相关产品推荐

