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

如何用Python基于渠道列值转置Web流量数据生成多时间序列

Python实现Web流量数据的宽表转换

我有一份分渠道的Web流量数据,原始格式如下:

day    main_channel visits  CR
11/2/2022   a   443645  1.248513488
11/2/2022   b   382870  3.441750617
11/2/2022   c   51249   0.315164766
11/1/2022   a   390267  2.725545677
11/1/2022   b   15361   0.478254073
11/1/2022   c   450734  1.513615502

需要将数据转置为以日期为唯一行标识,不同渠道的visits和CR作为独立列的格式,目标输出如下:

day         a_visits    b_visits    c_visits    a_CR    b_CR    c_CR
11/2/2022   443645  382870  51249   1.248513488 3.441750617 0.315164766
11/1/2022   390267  15361   450734  2.725545677 0.478254073 1.513615502

实现方法

使用Python的pandas库可以快速完成这个转换,以下是具体步骤:

1. 导入库并加载数据

先将原始数据加载为pandas的DataFrame,这里直接构造数据示例,你也可以用pd.read_csv()读取本地文件:

import pandas as pd

# 构造原始数据
data = [
    ["11/2/2022", "a", 443645, 1.248513488],
    ["11/2/2022", "b", 382870, 3.441750617],
    ["11/2/2022", "c", 51249, 0.315164766],
    ["11/1/2022", "a", 390267, 2.725545677],
    ["11/1/2022", "b", 15361, 0.478254073],
    ["11/1/2022", "c", 450734, 1.513615502]
]
df = pd.DataFrame(data, columns=["day", "main_channel", "visits", "CR"])

2. 执行数据转置

用pivot方法指定索引、列和需要转换的字段,再调整列名格式:

# 执行pivot转换
pivoted_df = df.pivot(index="day", columns="main_channel", values=["visits", "CR"])

# 调整列名为「渠道_指标」的格式
pivoted_df.columns = [f"{col[1]}_{col[0]}" for col in pivoted_df.columns]

# 重置索引,让day回到普通列
pivoted_df = pivoted_df.reset_index()

# 按目标顺序整理列
target_columns = ["day", "a_visits", "b_visits", "c_visits", "a_CR", "b_CR", "c_CR"]
pivoted_df = pivoted_df[target_columns]

# 打印结果
print(pivoted_df)

3. 导出结果(可选)

如果需要将转换后的数据保存为文件,可以用to_csv()方法:

# 导出为制表符分隔的文本文件
pivoted_df.to_csv("transposed_traffic_data.txt", index=False, sep="\t")

处理重复数据的补充说明

如果原始数据存在同一天同一渠道的多条重复记录,改用pivot_table并指定聚合函数(如求和、均值)处理:

# 以求和为例处理重复数据
pivoted_df = df.pivot_table(
    index="day",
    columns="main_channel",
    values=["visits", "CR"],
    aggfunc="sum"
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:30:54