You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Pandas处理用户登录数据并按指定格式输出统计结果

Pandas 统计用户登录行为指标实现方案

原始数据集格式

event_date | user_id | user_city | user_state |
06-09-2021 | 23      | Thane     | Maharashtra
04-09-2021 | 3224    | Madurai   | Tamil Nadu
02-08-2021 | 2331    | Ghaziabad | Utter Pradesh

实现代码

import pandas as pd

# 读取并清洗数据
df = pd.read_csv("login_data.csv", sep="|", skipinitialspace=True)
# 清除多余空列、字段两端空格
df = df.dropna(axis=1, how="all")
df.columns = df.columns.str.strip()
for col in df.select_dtypes(include="object").columns:
    df[col] = df[col].str.strip()

# 转换日期格式用于排序
df["event_date"] = pd.to_datetime(df["event_date"], format="%d-%m-%Y")

# 自定义每个用户的统计逻辑
def user_stat_calc(group):
    # 按登录时间倒序排序取最新记录
    group = group.sort_values("event_date", ascending=False).reset_index(drop=True)
    latest = group.iloc[0]
    # 统计城市登录频次
    city_rank = group["user_city"].value_counts().index.tolist()
    return pd.Series({
        "最后登录日期": latest["event_date"].strftime("%d-%m-%Y"),
        "最新登录地点": latest["user_city"],
        "最高登录频次地点": city_rank[0] if len(city_rank) >=1 else "-",
        "次高登录频次地点": city_rank[1] if len(city_rank) >=2 else "-"
    })

# 按用户ID分组统计并重命名列
result_df = df.groupby("user_id", as_index=False).apply(user_stat_calc)
result_df.rename(columns={"user_id": "用户ID"}, inplace=True)

# 打印结果
print(result_df.to_string(index=False))

输出效果(示例数据运行结果)

用户ID 最后登录日期 最新登录地点 最高登录频次地点 次高登录频次地点
   23 06-09-2021    Thane     Thane        -
 3224 04-09-2021  Madurai   Madurai        -
 2331 02-08-2021 Ghaziabad Ghaziabad        -

注:示例数据中每个用户仅1条登录记录,因此最高频次登录地和最新登录地一致,次高频次登录地无值。若用户存在多条不同城市的登录记录,会自动返回对应排名的城市。

内容的提问来源于stack exchange,提问作者user16795956

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:57:02