如何在R中从CSV文件统计每秒/每小时/每日请求数并绘图
基于CSV请求数据生成统计图表方案
一、数据预处理
先清洗并转换CSV中的时间格式,原数据时间为YYYY.MM.DD HH:MM:SS.sss格式,需转为可被程序解析的时间类型。以下是Python实现示例:
import pandas as pd # 读取CSV,跳过开头的注释行 df = pd.read_csv('requests.csv', comment='#', header=0, names=['type_of_r', 'date_time']) # 转换时间格式 df['date_time'] = pd.to_datetime(df['date_time'], format='%Y.%m.%d %H:%M:%S.%f')
二、按时间粒度统计请求量
1. 每秒请求量
将时间向下取整到秒,再分组计数:
# 生成秒级时间戳 df['second'] = df['date_time'].dt.floor('S') # 统计每秒请求数 second_counts = df.groupby('second').size().reset_index(name='request_count')
2. 每小时请求量
将时间向下取整到小时后分组:
df['hour'] = df['date_time'].dt.floor('H') hour_counts = df.groupby('hour').size().reset_index(name='request_count')
3. 每日请求量
当前数据仅1天,结果为单条记录;后续新增多天数据时代码可直接复用:
df['day'] = df['date_time'].dt.floor('D') day_counts = df.groupby('day').size().reset_index(name='request_count')
三、生成可视化图表
用matplotlib绘制不同粒度的统计图表:
import matplotlib.pyplot as plt # 每秒请求量折线图 plt.figure(figsize=(12, 4)) plt.plot(second_counts['second'], second_counts['request_count']) plt.title('每秒请求量统计') plt.xlabel('时间') plt.ylabel('请求数') plt.xticks(rotation=45) plt.show() # 每小时请求量柱状图 plt.figure(figsize=(10, 5)) plt.bar(hour_counts['hour'].dt.strftime('%H:%M'), hour_counts['request_count']) plt.title('每小时请求量统计') plt.xlabel('小时') plt.ylabel('请求数') plt.show() # 每日请求量柱状图 plt.figure(figsize=(6, 4)) plt.bar(day_counts['day'].dt.strftime('%Y-%m-%d'), day_counts['request_count']) plt.title('每日请求量统计') plt.xlabel('日期') plt.ylabel('请求数') plt.show()
四、实用提示
- 若后续数据包含多天,每日统计逻辑会自动适配,无需修改代码
- 时间格式转换需严格匹配原数据格式,避免解析报错
- 可根据需求调整图表的尺寸、颜色、标注样式等参数
内容的提问来源于stack exchange,提问作者rrn_di
相关产品推荐
相关产品推荐

