Skip to main content

Lightweight utilities for processing Reddit data dumps in ZST format

Project description

redditdumps

Lightweight Python utilities for processing Reddit data dumps in ZST format.

These dumps are commonly found on Academic Torrents (Pushshift archives) and contain newline-delimited JSON compressed with Zstandard.

Installation

uv add redditdumps

Or with pip:

pip install redditdumps

Usage

Read a ZST file into a DataFrame

import redditdumps as rd

# Read entire file
df = rd.read_zst("RC_2024-01.zst")

# Filter by subreddit
df = rd.read_zst("RC_2024-01.zst", subreddit="science")

# Filter by multiple subreddits
df = rd.read_zst("RC_2024-01.zst", subreddit=["science", "askscience"])

# Select specific columns
df = rd.read_zst("RC_2024-01.zst", columns=["author", "body", "score"])

# Combine filters
df = rd.read_zst(
    "RC_2024-01.zst",
    subreddit="python",
    columns=rd.MINIMAL_COMMENT_COLUMNS,
    max_lines=100000,
)

Stream records with bounded memory

Use iter_zst when you want one decoded record at a time:

for record in rd.iter_zst("RC_2024-01.zst", subreddit="science"):
    process(record)

Use read_zst_batches to receive bounded pandas DataFrames. Exact filters and the optional predicate run before records enter a batch.

start_utc = 1704067200
end_utc = 1706745600
stats = rd.ReadStats()

for batch in rd.read_zst_batches(
    "RC_2024-01.zst",
    subreddit="science",
    record_filter=lambda record: (
        start_utc <= int(record["created_utc"]) < end_utc
    ),
    batch_size=100_000,
    stats=stats,
):
    process(batch)

print(stats)

read_zst remains available when the complete result fits in memory.

Inspect file schema

# Discover columns in a file
schema = rd.inspect_schema("RC_2024-01.zst", sample_size=1000)
for col, info in schema.items():
    print(f"{col}: {info['type']} ({info['count']} records)")

Built-in column schemas

# Common column sets for convenience
rd.COMMENT_COLUMNS       # All standard comment fields
rd.SUBMISSION_COLUMNS    # All standard submission fields
rd.MINIMAL_COMMENT_COLUMNS   # Lightweight subset for comments
rd.MINIMAL_SUBMISSION_COLUMNS  # Lightweight subset for submissions

File naming conventions

  • RC_*.zst - Reddit Comments
  • RS_*.zst - Reddit Submissions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

redditdumps-0.2.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

redditdumps-0.2.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file redditdumps-0.2.0.tar.gz.

File metadata

  • Download URL: redditdumps-0.2.0.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for redditdumps-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4e31d0b0424a18c57e32b4531f39fc1fcf19d8430acd177ad3ee4c7b0062216c
MD5 2100ddd6475ba6e42e3ff35976065152
BLAKE2b-256 ac20c09713e9a18048a2862c9ee337e146900defa0713eea3265b55200e890f4

See more details on using hashes here.

File details

Details for the file redditdumps-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: redditdumps-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for redditdumps-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fa6f69a6f4a4039dc15635d3b3f8ffac53bec704b52d3f3cfd86cecb0a11e4da
MD5 b9c285f09012b2f1278d881677a2e03b
BLAKE2b-256 82d8ca34685ffb7273ab78d663d89e2647f46392ae8f6295dd54bd0bb49d3dd9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page