☰
tiktok-5.6B-videos × Pandas/Polars/DuckDB:10招高效分析1TB+ Parquet大规模数据
2026/10/16 1:11:11 网站建设 项目流程
  • 数据集
  • 大数据
  • 社交

【免费下载链接】tiktok-5.6B-videos

项目地址:https://ai.gitcode.com/hf_mirrors/datasocial/tiktok-5.6B-videos
点击查看免费下载

tiktok-5.6B-videos 是一个包含56 亿条 TikTok 视频记录的开源数据集,以 148 个月度 Parquet 文件存储(2014-07 至 2026-10,数据量 400GB 以上,单月文件最大约 20GB)。本文带你用 Pandas、Polars、DuckDB 三个工具,掌握 10 个在个人电脑上高效加载、过滤与聚合这份 Parquet 大规模数据集的实用技巧——无需集群,按部就班即可跑通。

📦 数据集概览:先看懂你要分析什么

每条视频一行元数据:视频 ID、发布时间、国家、语言、时长、封面尺寸、views/likes/comments/shares/saves等统计、hashtags、engagement_rate(互动率)、is_ai_generated(AI 生成标记)等 26+ 个字段。数据组织非常简洁:

  • 全部数据位于 data/ 目录,一个月一个文件,命名YYYY-MM.parquet,共 148 个文件,例如最新的 data/2026-10.parquet;
  • 完整字段定义、类型与含义见 README.md 中的 Columns 说明表;
  • 许可证为 CC BY-NC 4.0,免费用于研究与个人用途。

"按月份切分"正是这份数据的最大分析优势:它相当于天然的时间分区,大部分问题你根本不需要触碰全部数据。

🚀 获取数据:两步命令完整上手

数据集通过 Git LFS 存储大文件。clone 后data/目录里的文件只是几百字节的"指针文件",必须手动拉取真实内容:

git clone https://gitcode.com/hf_mirrors/datasocial/tiktok-5.6B-videos cd tiktok-5.6B-videos && git lfs pull

💡 磁盘紧张时只拉需要的月份:git lfs pull data/2024-01.parquet

下面是核心 10 招。

10 招高效分析 Parquet 大规模数据

招式 1:过滤列再加载 —— Pandas 的columns=参数

大多数分析只用几个字段。read_parquet的columns参数让 Pandas 只读取指定列:

import pandas as pd df = pd.read_parquet("data/2024-01.parquet", columns=["video_id", "views", "likes"])

原理:Parquet 是列式存储,只读指定列时磁盘上也只读对应列的数据,速度和内存通常能省九成。

招式 2:先按时间筛文件 —— 月度文件就是分区

最重要的一招:先挑文件,再读数据。"分析 2024 年上半年"只需 6 个文件,而不是 148 个:

files = [f"data/2024-{m:02d}.parquet" for m in range(1, 7)] df = pd.concat([pd.read_parquet(f, columns=["video_id", "views"]) for f in files])

一句话心法:能在加载前缩小范围,就不要加载后再过滤。

招式 3:Polars 惰性引擎 —— 先搭计划,最后才算

scan_parquet不读任何数据,只构建计算计划,真正执行发生在最后的collect(),过滤与选列会自动下推到文件层:

import polars as pl top = (pl.scan_parquet("data/2024-01.parquet") .filter(pl.col("views") > 1_000_000) .select(["video_id", "views", "likes"]) .sort("views", descending=True) .head(20) .collect())

这是处理单个十几 GB 大文件时最顺手的"过滤 + 排序 + 取前 N"工具。

招式 4:DuckDB —— 用 SQL 直查 Parquet

DuckDB 可以不导入、直接查询Parquet 文件,就像查普通数据库表:

SELECT country, COUNT(*) AS videos, AVG(views) AS avg_views FROM 'data/2024-01.parquet' GROUP BY country ORDER BY videos DESC LIMIT 10;

配合 glob 还能一次查满一整年:

SELECT strftime(posted_at, '%Y-%m') AS month, COUNT(*) AS n FROM read_parquet('data/2024-*.parquet') GROUP BY month;

有 SQL 基础的人,这是上手最快的姿势。

招式 5:谓词下推 —— 把过滤条件放进加载环节

Polars 的filter参数让条件在读文件时就生效,不匹配的行根本不进内存:

import polars as pl df = pl.read_parquet("data/2024-01.parquet", filter=(pl.col("type") == "video"))

DuckDB 则在 SQL 里写WHERE时自动完成下推,零配置。

招式 6:分批读取防 OOM —— 流式处理大文件

内存装不下一整月数据时,按批处理。Polars 的batched让 20GB 文件可以一块一块消费:

import polars as pl for batch in pl.scan_parquet("data/2024-01.parquet").batched(1_000_000): process(batch) # 每次处理 100 万行

DuckDB 对大文件默认也是流式读取,LIMIT类查询通常不会把全部数据读进内存。

招式 7:聚合优先 —— 先缩成每组合一行,再看明细

回答"哪个国家视频最多"这类问题时,千万不要先拉全部明细再分组,直接让引擎聚合:

SELECT country, COUNT(*) AS n FROM read_parquet('data/2025-*.parquet') GROUP BY country ORDER BY n DESC;

聚合结果通常只有几十行,内存压力从 GB 级直接降到 KB 级。

招式 8:抽样验证 —— 复杂逻辑先在小样本上跑通

正式分析前,抽 1% 数据验证逻辑,把 20GB 文件的试错成本从几十分钟降到秒级:

import polars as pl sample = (pl.scan_parquet("data/2024-01.parquet") .filter(pl.random(42) < 0.01) .collect())

逻辑在样本上稳定了,再放心跑全量。

招式 9:工具组合拳 —— 三件套各司其职

10 招不是"三选一",而是常用组合拳:

工具最适合的场景
DuckDBSQL 聚合、快速探索式查询
Polars大表过滤、变换、复杂 Python 逻辑
Pandas聚合后的小结果、可视化绘图

中间结果用pl.write_parquet(...)存成 Parquet 即可在工具之间自由传递。

招式 10:缓存中间结果 —— Parquet 也是输出格式

多步分析会反复用到同一张"干净"的中间表时,用小sink_parquet把它落盘:

import polars as pl (pl.scan_parquet("data/2024-01.parquet") .select(["video_id", "views", "likes", "shares"]) .filter(pl.col("views") > 0) .sink_parquet("videos_2024_01.parquet"))

下次分析直接读它,不用再扫原始 20GB 文件。

⚠️ 新手避坑速查

  1. clone 后忘了git lfs pull:文件只是几百字节的指针,直接读取会报Parquet magic bytes not found之类的错误;
  2. 老数据部分字段为 0 或 null:2016 年前的记录来自存档,downloads、is_ai_generated等字段可能是 0 或 null,duration_ms只精确到秒,详见 README.md 的说明;
  3. 一次性read_parquet整个目录:148 个文件合计数百 GB,务必先用时间、列、条件缩小范围再加载。

写在最后

tiktok-5.6B-videos 用 148 个月度 Parquet 文件承载 56 亿行视频数据,"月度切分"让它天然可分区、可裁剪。记住核心思路:先筛选再加载,先聚合后展开。Pandas、Polars、DuckDB 三件套各有所长、互补组合,TB 级分析在个人电脑上完全可以跑起来。想深入了解字段细节,随时回看 README.md 的字段说明表。

  • 数据集
  • 大数据
  • 社交

【免费下载链接】tiktok-5.6B-videos

项目地址:https://ai.gitcode.com/hf_mirrors/datasocial/tiktok-5.6B-videos
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询