来自CSV文件的统计信息

时间:2017-01-21 17:25:38

标签: python csv

我有一个像这样的CSV文件:

location start                          end
house    Mon Jul 25 19:04:30 GMT+01:00 2016 Mon Jul 25 19:04:33 GMT+01:00 2016
store    Mon Jul 26 19:04:30 GMT+01:00 2016 Mon Jul 26 19:04:33 GMT+01:00 2016
store    Mon Jul 27 19:04:30 GMT+01:00 2016 Mon Jul 27 19:04:33 GMT+01:00 2016
...      ...                            ...

还有几千行。它包含有关用户活动的数据。它列出了他们的位置和他们输入的时间并离开了该位置。他们可能会多次访问该位置。没有完整的地点列表。我想生成一个CSV文件,其中包含每个位置花费的总时间和平均花费的时间。对于上面的示例数据,这将是我想要的输出:

 location, total time spent, average
 store, 6, 3
 house, 3, 3

我已经编写了以下代码来开始这个:

import csv
import pandas as pd

filepath = '...'
df = pd.read_csv(filepath)
cat = set()
for index, row in df.iterrows():
    cat.add(df['StartLocation'][index].lower())

上面的代码创建了一个集合cat,其中包含一个唯一位置列表。我现在需要查找包含该位置的所有行。我怎样才能有效地做到这一点?

编辑:使用@ DZY的建议我写了这个:

import csv
import pandas as pd
import re
from datetime import datetime

def toEpoch(x):
    x1 = re.sub(r":(?=[^:]+$)", "", x)
    return (datetime.strptime(x1, '%a %b %d %H:%M:%S %Z%z %Y').strftime('%s'))

filepath = '...'
df = pd.read_csv(filepath)
start = []
end = []
for index, row in df.iterrows():
    df['StartTime'][index] = toEpoch(df['StartTime'][index])
    df['EndTime'][index] = toEpoch(df['EndTime'][index])
    df['TimeTaken'][index] = int(df['EndTime'][index]) - int(df['StartTime'][index])
print(df.groupby('StartLocation').sum())

然而,我仍然对最后一行感到困惑。什么是实际总结?

0 个答案:

没有答案