python代码 统计每个站点每半小时的进出流量(比如9:00-9:30的流量),显示数据表的前5条数据。(提示;原始数据集中starttime和stoptime是object类型,需要转化为datatime类型,然后通过分钟数判断进出站点的流量。)
时间: 2024-05-12 21:16:52 浏览: 86
好的,可以为您提供代码如下:
```python
import pandas as pd
# 读取原始数据集
data = pd.read_csv('data.csv')
# 将starttime和stoptime转化为datetime类型
data['starttime'] = pd.to_datetime(data['starttime'])
data['stoptime'] = pd.to_datetime(data['stoptime'])
# 新增两列,记录进出站点时间(单位:分钟)
data['enter_time'] = data['starttime'].dt.hour * 60 + data['starttime'].dt.minute
data['exit_time'] = data['stoptime'].dt.hour * 60 + data['stoptime'].dt.minute
# 新增一列,记录进出站点半小时区间
data['time_interval'] = pd.cut(data['enter_time'], bins=[0, 30, 60, 90, 120, 150, 180, 210, 240], labels=['0:00-0:30', '0:30-1:00', '1:00-1:30', '1:30-2:00', '2:00-2:30', '2:30-3:00', '3:00-3:30', '3:30-4:00'])
# 统计每个站点每半小时的进出流量
result = data.groupby(['stationID', 'time_interval']).agg({'userID': 'count'})
result = result.rename(columns={'userID': 'passenger_count'}).reset_index()
# 显示数据表的前5条数据
print(result.head(5))
```
在这里,我们首先读取了原始数据集;然后将starttime和stoptime转化为datetime类型,方便后续时间计算;接着新增两列记录进出站点时间(单位:分钟),并新增一列记录进出站点半小时区间;随后,我们使用groupby函数按照站点和时间区间进行分组,统计每个站点每半小时的进出流量,并对列名进行重命名;最后,我们使用reset_index函数将groupby后的多级索引转化为列,并显示数据表的前5条数据。
阅读全文