使用Pandas加载CSV数据,找出最频繁的出行起始小时
问题:找出共享单车出行最频繁的起始小时
现有如下格式的CSV表格数据:
Start Time,End Time,Trip Duration,Start Station,End Station,User Type,Gender,Birth Year 2017-05-29 18:36:27,2017-05-29 18:49:27,780,Columbus Dr & Randolph St,Federal St & Polk St,Subscriber,Male,1991.0 2017-06-12 19:00:33,2017-06-12 19:24:22,1429,Kingsbury St & Erie St,Orleans St & Merchandise Mart Plaza,Customer,, 2017-02-13 17:02:02,2017-02-13 17:20:10,1088,Canal St & Madison St,Paulina Ave & North Ave,Subscriber,Female,1982.0
需求:使用Pandas将file.csv加载至DataFrame中,在数据集无小时列的前提下,找出人们开始出行的最频繁小时,请补全以下代码中的popular_hour部分:
import pandas as pd filename = 'file.csv' df = pd.read_csv('file.csv') df['Start Time'] = pd.to_datetime(df['Start Time']) df['hour'] = df['Start Time'].dt.hour popular_hour = print('Most Frequent Start Hour:', popular_hour)
补全方案
以下几种简洁写法都能实现需求:
- 取小时列的众数(最直接的方式)
popular_hour = df['hour'].mode()[0]
注:mode()返回的是Series类型结果,[0]用于提取具体的小时数值。
- 统计频次后取最大值对应的索引
popular_hour = df['hour'].value_counts().idxmax()
value_counts()会按出行次数降序排列各小时,idxmax()直接返回次数最多的小时值。
- 分组统计后取最大值对应小时
popular_hour = df.groupby('hour')['hour'].count().idxmax()
以上三种写法都能得到正确结果,前两种在日常使用中更简洁高效。
内容的提问来源于stack exchange,提问作者Mohamed Awad
相关产品推荐
相关产品推荐

