2024-04-18 02:25:12 发布
网友
我需要python的帮助(我正在使用pandas)。 任务: 对于每个小区和每一天,确定每小时连接用户的3个最高出现次数(小时),并计算这3个值的平均值。你知道吗
我得到了136000个单元格(行),列的名称并不重要,我们称之为“date”和“users”(连接的用户)。你知道吗
I can't post original file, but here is similar
首先,我没怎么用熊猫,但我试着从你的问题中构造一个例子。你知道吗
编辑:根据示例数据更新。你知道吗
这个例子应该让你开始,它加载你的数据和分析一个日期。它可能会被简化很多,我不能告诉你是否有特殊情况在你的数据,脚本不考虑。您还必须至少调整列名。你知道吗
import pandas as pd data = pd.read_excel("Workbook1.xlsx") users_active = {} for i in range(len(data)): current_hour = int(data['Date'][i].split("-")[0].split(" ")[1].split(":")[0]) end_hour = int(data['Date'][i].split("-")[1].split(":")[0]) if end_hour - current_hour > 1: for hour in range(end_hour - current_hour - 1): incumbent = current_hour + hour + 1 stamp = data['Date'][i].split(" ")[0] stamp += " "+str(incumbent)+":00" try: users_active[stamp] += data['Users'][i] except KeyError: users_active[stamp] = data['Users'][i] stamp = current_hour = data['Date'][i].split("-")[0] try: users_active[stamp] += data['Users'][i] except KeyError: users_active[stamp] = data['Users'][i] date = "1.16.2017" users_sorted = sorted(users_active, key = users_active.get, reverse = True) found, idx, mean, tophour = 0, 0, 0, [] while found < 3: if date in users_sorted[idx]: mean += users_active[users_sorted[idx]]/3 found += 1 tophour.append(users_sorted[idx]) idx += 1 print(mean, tophour)
首先,我没怎么用熊猫,但我试着从你的问题中构造一个例子。你知道吗
编辑:根据示例数据更新。你知道吗
这个例子应该让你开始,它加载你的数据和分析一个日期。它可能会被简化很多,我不能告诉你是否有特殊情况在你的数据,脚本不考虑。您还必须至少调整列名。你知道吗
相关问题 更多 >
编程相关推荐