你好,我试图用一些真实数据学习一些新的python,但是我陷入了困境。
可以在此处找到数据(https://edinburghcyclehire.com/open-data/historical)。选择任何月份和csv格式。我想计算一下从一个车站到另一个车站的旅行次数。
导入后:
data = pd.read_csv('09.csv')
有“ start_station_id”和“ end_station_id”列。
我想计算从每个站点到另一个站点的旅行次数,即有多少行:“ a到b”,“ a到c”,“ b到a”,等等(注意:最初“ a到b”和“ b到a”应该是不同的旅程,尽管我也很想听到我将如何将“ a到b”和“ b到a”视为同一旅程进行计数)。
我认为我需要使用groupby和/或value_counts,但是在阅读文档和浏览堆栈后我不知道如何实现它。
任何建议将不胜感激。
答案 0 :(得分:2)
使用 group_by 查找station_a和station_b的唯一组合
df = df.groupby(['start_station_name','end_station_name']).count()
count = len(df)
print(count)
请注意,必须将汇总函数应用于 group_by 的结果。聚合函数是诸如 count(),mean(),max()等函数。这些方法将指定如何聚合分组行中的数据。在这种情况下,您使用 count(),因为我们要计算每次旅行的次数
df = df.groupby(['start_station_name','end_station_name']).count()
请注意,在此行^^^中调用 count(),会将数据框中的所有列设置为该行进的次数。
例如
started_at ended_at duration ... end_station_description end_station_latitude end_station_longitude
start_station_name end_station_name
...
Bristo Square Bristo Square 1 1 1 ... 1 1 1
Brunswick Place 6 6 6 ... 6 6 6
Canonmills 1 1 1 ... 1 1 1
Castle Street 1 1 1 ... 1 1 1
请注意, started_at , end_at 等的所有值都相同。现在将所有这些设置为该旅程进行了多少次的计数。即从布里斯托广场到不伦瑞克的旅程进行了6次
答案 1 :(得分:1)
您可以使用布尔代数! 你可以做
data['start_station_id'] == 183
获取布尔地图,其中唯一的True
的start_Station_id为183
同样,您可以
data['end_station_id'] == 261
您可以将两者结合起来并获得
bmap = (data['start_station_id'] == 183) & (data['end_station_id'] == 261)
请注意括号很重要!
这将为您提供一张地图,起始站与终点站相匹配,然后您可以查看此数据
data[bmap]