对于每个单元格和每一天,确定Python中出现次数最多的3次

2024-04-18 02:25:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要python的帮助(我正在使用pandas)。 任务: 对于每个小区和每一天,确定每小时连接用户的3个最高出现次数(小时),并计算这3个值的平均值。你知道吗

我得到了136000个单元格(行),列的名称并不重要,我们称之为“date”和“users”(连接的用户)。你知道吗

I can't post original file, but here is similar


Tags: 用户名称pandasdate小区post次数can
1条回答
网友
1楼 · 发布于 2024-04-18 02:25:12

首先,我没怎么用熊猫,但我试着从你的问题中构造一个例子。你知道吗

编辑:根据示例数据更新。你知道吗

这个例子应该让你开始,它加载你的数据和分析一个日期。它可能会被简化很多,我不能告诉你是否有特殊情况在你的数据,脚本不考虑。您还必须至少调整列名。你知道吗

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)

相关问题 更多 >