把短视频平台想象成一个巨大的数字试衣间,而算法就是那个拿着放大镜的造型师 👗。咱们这次不搞玄学猜测,直接用 Python 当“测色仪”和“版型扫描仪”,中立地拆解男女用户在穿搭偏好上的差异。
短视频穿搭性别偏好分析程序
(Short-Video Fashion Gender Preference Analyzer)
定位:教学级内容偏好分析与数据统计工具
语言:Python 3.10+
适用场景:时尚产业与品牌创新课程、用户画像分析、内容策略研究
一、实际应用场景描述
在短视频平台(如抖音、小红书、TikTok)上,穿搭内容已成为时尚品牌触达消费者的核心渠道。品牌在策划内容时,通常会面对这样的现实问题:
男性和女性用户在观看穿搭短视频时,偏好的色彩和版型是否不同?
例如:
- 女性用户是否更倾向于观看“莫兰迪色系”“柔和色调”的穿搭内容?
- 男性用户是否更关注“版型剪裁”“功能性设计”而非色彩本身?
- 同一套穿搭内容,在不同性别的用户群体中反馈是否存在显著差异?
这些问题直接影响:
- 短视频内容的选题方向
- 品牌在不同平台的投放策略
- 产品设计的性别化调整
本程序的目标是通过结构化的数据分析,量化不同性别用户对色彩与版型的偏好差异,而非依赖主观印象。
二、引入痛点(行业现实问题)
1. 偏好判断依赖经验而非数据
- 常见说法:“女生喜欢温柔色,男生喜欢黑白灰”
- 但缺乏可量化的统计结果支撑
- 内容策略容易陷入刻板印象
2. 数据来源分散,缺乏统一模型
- 色彩偏好:来自评论、标签、画面识别(不统一)
- 版型偏好:来自用户停留时长、完播率、互动行为
- 不同平台数据口径不一致,难以横向对比
3. 分析停留在描述层面
- 多数分析只做“男女比例”“点赞数对比”
- 缺少偏好强度与显著性的量化指标
- 无法回答“差异是否足够明显”这一问题
三、核心逻辑讲解(建模思路)
1. 核心假设(教学简化)
- 每条短视频包含若干色彩标签与版型标签
- 用户对视频的行为(观看、点赞、完播)作为偏好信号
- 通过聚合统计,分别计算男女用户对各类标签的偏好程度
2. 关键指标定义
指标 含义
"interaction_score" 用户互动综合得分(播放×权重₁ + 点赞×权重₂ + 完播×权重₃)
"preference_index" 偏好指数 = 某标签互动占比 / 基准占比
"gender_ratio_diff" 男女偏好差异度(男占比 − 女占比)
3. 核心公式
(1)互动得分计算
interaction_score = plays×0.3 + likes×0.5 + completions×0.2
(2)偏好指数(PI)
PI = (某性别对某标签的互动占比) / (该性别总体互动占比)
- PI > 1:该性别对该标签偏好高于平均水平
- PI < 1:偏好低于平均水平
(3)性别差异度
diff = male_ratio − female_ratio
四、项目结构
fashion-gender-preference/
│
├── README.md
├── USAGE.md
├── main.py
├── modules/
│ ├── data_loader.py # 数据加载与预处理
│ ├── interaction.py # 互动得分计算
│ ├── preference.py # 偏好指数计算
│ ├── comparison.py # 性别差异对比
│ └── reporter.py # 结果输出
└── config/
└── analysis.yaml
五、核心代码实现(Python)
1️⃣ 数据加载模块
"data_loader.py"
# data_loader.py
# 加载并清洗短视频穿搭数据
import yaml
import pandas as pd
def load_dataset(path: str) -> pd.DataFrame:
"""
加载 YAML 格式的数据集,转换为 DataFrame
"""
with open(path, "r", encoding="utf-8") as f:
raw = yaml.safe_load(f)
return pd.DataFrame(raw["videos"])
def normalize_gender(df: pd.DataFrame) -> pd.DataFrame:
"""
标准化性别字段,确保为 'male' / 'female'
"""
df = df.copy()
df["gender"] = df["gender"].str.lower()
return df
2️⃣ 互动得分计算
"interaction.py"
# interaction.py
# 计算用户互动综合得分
def calculate_interaction_score(row: dict, weights=None) -> float:
"""
根据播放、点赞、完播计算互动得分
weights = {
"play": 0.3,
"like": 0.5,
"complete": 0.2
}
"""
if weights is None:
weights = {"play": 0.3, "like": 0.5, "complete": 0.2}
score = (
row["plays"] * weights["play"]
+ row["likes"] * weights["like"]
+ row["completions"] * weights["complete"]
)
return round(score, 2)
3️⃣ 偏好指数计算
"preference.py"
# preference.py
# 计算性别维度的偏好指数(Preference Index)
def calculate_preference_index(df: pd.DataFrame, dimension: str) -> pd.DataFrame:
"""
按性别和标签计算偏好指数
dimension: 'color' 或 'silhouette'
"""
grouped = (
df.groupby(["gender", f"{dimension}_tag"])["interaction_score"]
.sum()
.reset_index()
)
gender_total = (
df.groupby("gender")["interaction_score"].sum().to_dict()
)
grouped["share_in_gender"] = grouped.apply(
lambda r: r["interaction_score"] / gender_total[r["gender"]], axis=1
)
overall_share = (
grouped.groupby(f"{dimension}_tag")["interaction_score"].sum()
/ grouped["interaction_score"].sum()
).to_dict()
grouped["preference_index"] = grouped.apply(
lambda r: r["share_in_gender"] / overall_share[r[f"{dimension}_tag"]],
axis=1,
)
return grouped
4️⃣ 性别差异对比
"comparison.py"
# comparison.py
# 对比男女偏好差异
def compare_gender_preference(pref_df: pd.DataFrame, dimension: str) -> pd.DataFrame:
"""
计算男女在各标签上的差异度
"""
pivot = pref_df.pivot(
index=f"{dimension}_tag",
columns="gender",
values="share_in_gender",
).fillna(0)
pivot["diff"] = pivot.get("male", 0) - pivot.get("female", 0)
return pivot.sort_values("diff", ascending=False)
5️⃣ 结果输出
"reporter.py"
# reporter.py
# 格式化输出分析结果
def print_preference_table(df: pd.DataFrame, dimension: str):
print(f"\n=== {dimension.upper()} 偏好指数 ===")
for _, row in df.iterrows():
print(
f" {row[f'{dimension}_tag']:<12} "
f"| 男: {row.get('preference_index_male', '-'):.3f} "
f"| 女: {row.get('preference_index_female', '-'):.3f}"
)
def print_gender_diff(diff_df: pd.DataFrame):
print("\n=== 性别偏好差异度(男 − 女)===")
for tag, row in diff_df.iterrows():
print(f" {tag:<12} | 差异度: {row['diff']:+.3f}")
6️⃣ 主程序
"main.py"
# main.py
import pandas as pd
from modules.data_loader import load_dataset, normalize_gender
from modules.interaction import calculate_interaction_score
from modules.preference import calculate_preference_index
from modules.comparison import compare_gender_preference
from modules.reporter import print_preference_table, print_gender_diff
def main():
df = load_dataset("config/analysis.yaml")
df = normalize_gender(df)
# 计算互动得分
df["interaction_score"] = df.apply(
calculate_interaction_score, axis=1
)
# 色彩偏好
color_pref = calculate_preference_index(df, "color")
color_diff = compare_gender_preference(color_pref, "color")
# 版型偏好
silhouette_pref = calculate_preference_index(df, "silhouette")
silhouette_diff = compare_gender_preference(silhouette_pref, "silhouette")
print("=" * 50)
print(" 短视频穿搭性别偏好分析报告")
print("=" * 50)
print_preference_table(color_pref, "color")
print_gender_diff(color_diff)
print_preference_table(silhouette_pref, "silhouette")
print_gender_diff(silhouette_diff)
if __name__ == "__main__":
main()
7️⃣ 配置文件
"config/analysis.yaml"
# 短视频穿搭数据集示例
videos:
- id: 1
gender: female
color_tag: pastel
silhouette_tag: oversized
plays: 12000
likes: 950
completions: 6200
- id: 2
gender: male
color_tag: dark
silhouette_tag: structured
plays: 9800
likes: 720
completions: 5100
- id: 3
gender: female
color_tag: vibrant
silhouette_tag: fitted
plays: 15400
likes: 1300
completions: 8100
- id: 4
gender: male
color_tag: neutral
silhouette_tag: relaxed
plays: 8200
likes: 610
completions: 4400
六、README.md
# 短视频穿搭性别偏好分析程序
教学级数据分析工具,用于量化短视频平台上男女用户对穿搭色彩与版型的偏好差异。
## 功能特点
- 基于互动行为(播放、点赞、完播)计算偏好强度
- 引入偏好指数(Preference Index)衡量偏离程度
- 支持色彩与版型两个维度的独立分析
- 输出性别差异度,便于内容策略制定
## 使用方法
bash
pip install pyyaml pandas
python main.py
## 适用对象
- 时尚产业与品牌创新课程
- 用户画像与内容分析
- 数据驱动的品牌策略教学
七、USAGE.md(使用说明)
# 使用说明
## 核心概念
### 偏好指数(Preference Index, PI)
- PI = 1:该性别对该标签的偏好等于平均水平
- PI > 1:偏好高于平均水平
- PI < 1:偏好低于平均水平
### 性别差异度
- 正值:男性偏好更强
- 负值:女性偏好更强
- 绝对值越大,差异越明显
## 数据准备
每条视频需包含:
- gender:用户性别(male / female)
- color_tag:色彩标签(如 pastel、dark)
- silhouette_tag:版型标签(如 oversized、structured)
- plays / likes / completions:互动数据
## 典型实验
### 实验 1:权重调整
- 修改互动得分权重(如提高完播率权重)
- 观察偏好排序是否发生变化
### 实验 2:标签粒度
- 将色彩标签细化(如 light-blue / dark-green)
- 分析更细致的用户偏好结构
### 实验 3:差异阈值设定
- 设定 |diff| > 0.1 为“显著差异”
- 用于筛选最具性别差异的内容方向
八、核心知识点卡片
┌──────────────────────────────────────┐
│ 偏好 ≠ 数量 │
│ 偏好是相对占比,而非绝对互动量 │
└──────────────────────────────────────┘
┌──────────────────────────────────────┐
│ 偏好指数(PI) │
│ 将“关注度”标准化为可比指标 │
│ 是市场细分分析的常用工具 │
└──────────────────────────────────────┘
┌──────────────────────────────────────┐
│ 性别差异度 │
│ 量化“谁更喜欢”,而非“谁更多” │
└──────────────────────────────────────┘
┌──────────────────────────────────────┐
│ 互动行为作为偏好代理 │
│ 在无法直接询问用户时,行为是可靠信号│
└──────────────────────────────────────┘
九、总结(中立立场)
本程序通过结构化数据分析,将“男女穿搭偏好不同”这一经验性认知转化为可量化、可验证的指标:
- 色彩偏好与版型偏好应分开建模,避免混淆
- 偏好指数比单纯计数更能反映真实倾向
- 性别差异度可用于指导内容方向与产品设计
需要强调的是:
- 本程序分析的是行为层面的偏好,不等同于态度或价值观
- 结果高度依赖样本结构与标签体系
- 应避免将分析结果固化为刻板印象
该程序适合用于:
- 时尚产业与品牌创新课程中的用户分析模块
- 数据素养与统计分析的教学案例
- Python 数据处理与聚合分析的编程练习
如需进一步扩展,可加入:
- 多平台数据合并(跨平台对比)
- 时间序列分析(偏好随季节变化)
- 可视化(柱状图、雷达图展示差异)
这套代码跑出来的结果,是不是有点像给不同性别的用户画了一幅“数字肖像”
利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!