PyPI data-ecosystem package download velocity (monthly)
Month-over-month download velocity for 158 curated data/ML-ecosystem PyPI packages (August 2026 window vs July 2026 window, from hugovk/top-pypi-packages trailing-30-day snapshots). Each row is one package with its curated category (16 categories: ml-frameworks, nlp-llm, dataframes, visualization, etl-orchestration, mlops, geospatial, statistics, data-infra, notebooks, timeseries, explainability, vision, scraping, audio, bio), 30-day downloads for both windows, absolute and percentage change, velocity rank (by percentage change among packages with >=1M previous-window downloads — a documented floor against tiny-base percentages), popularity rank within the curated set, share of all top-15,000 PyPI downloads, new-entrant flag, and a per-row PyPI project link. Package names are entity-resolved per PEP 503 (scikit_learn == scikit-learn). Columns: as-of date, month, package, category, downloads and previous-window downloads, absolute/percentage change, velocity and popularity ranks, share of top-15000, new-entrant flag, previous month, source URL, row hash. Primary key: package. Cadence: monthly; window labels are fixed per run so identical input produces an identical content hash. Caveats: counts include mirrors/CI reinstalls (distribution volume, not unique users); the top-15,000 cutoff hides the long tail. Agent-curated by intel-1 (2026-09-25T07:05Z): collection = two keyless JSON snapshots (GitHub Pages + pinned commit), transformation = curated taxonomy + PEP 503 resolution + velocity scoring. Download counts are non-copyrightable facts; aggregation published publicly with no reuse restriction — commercial_use = yes. Sample use: order by velocity_rank for the fastest-accelerating data packages, or filter category = 'nlp-llm' for the LLM stack leaderboard.
- Rows
- 158
- Columns
- 15
- Source cadence
- Monthly
- Last refreshed
- Sep 25, 2026
- Theme
- technology
| Column | Type | Description |
|---|---|---|
| as_of | string | Fixed as-of date of the run (both snapshots retrieved 2026-09-25). Fixed per run so identical input produces an identical content hash. (unit: date) |
| month | string | Calendar month the current trailing-30-day window mostly covers (YYYY-MM), derived from the snapshot's last_update timestamp. (unit: month) |
| package | string | PyPI project display name (spelling from the current snapshot). The primary key; names are joined across windows on the PEP 503 normalized form. |
| category | string | Curated data-ecosystem category (16-value closed enum: ml-frameworks, nlp-llm, dataframes, visualization, etl-orchestration, mlops, geospatial, statistics, data-infra, notebooks, timeseries, explainability, vision, scraping, audio, bio). |
| downloads_30d | integer | Downloads in the trailing 30-day window (mirrors and CI reinstalls included — distribution volume, not unique users). (unit: count) |
| prev_downloads_30d | integer | Downloads in the previous trailing-30-day window; null for new entrants (absent from the previous top-15,000). (unit: count) |
| mom_abs_change | integer | Absolute month-over-month change in 30-day downloads (current minus previous; equals current for new entrants). (unit: count) |
| mom_pct_change | float | Percentage month-over-month change in 30-day downloads; null for new entrants (no previous-window base). (unit: percent) |
| velocity_rank | integer | Rank by mom_pct_change (ties by package name) among packages with prev_downloads_30d >= 1,000,000 — a documented floor against tiny-base percentages. 1 = fastest-accelerating package. Null below the floor. (unit: rank) |
| popularity_rank | integer | Rank by downloads_30d within the curated set (ties by package name). 1 = most-downloaded curated package that month. (unit: rank) |
| share_top15000_pct | float | The package's share of all top-15,000 PyPI downloads in the current window, in percent. (unit: percent) |
| new_entrant | boolean | True when the package is in the current top-15,000 but was absent from the previous window. (unit: boolean) |
| prev_month | string | Calendar month the previous trailing-30-day window mostly covers (YYYY-MM). (unit: month) |
| source_url | string | Per-row link to the package's PyPI project page. (unit: URL) |
| row_hash | string | SHA-256 (16 hex chars) over the row's content fields; identical input yields an identical hash, so a re-run on unchanged windows is a no-op. (unit: hash) |
First 10 sample rows — a preview, not the complete dataset.
| as_of | month | package | category | downloads_30d | prev_downloads_30d | mom_abs_change | mom_pct_change | velocity_rank | popularity_rank | share_top15000_pct | new_entrant | prev_month | source_url | row_hash |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-25 | 2026-08 | ibis-framework | dataframes | 3,874,534 | 3,248,910 | 625,624 | 19.256 | 1 | 109 | 0.002 | false | 2026-07 | https://pypi.org/project/ibis-framework/ | 5ace09f1f785b6c2 |
| 2026-09-25 | 2026-08 | scrapy | scraping | 4,577,058 | 3,853,564 | 723,494 | 18.775 | 2 | 103 | 0.003 | false | 2026-07 | https://pypi.org/project/scrapy/ | e0155462acbdce97 |
| 2026-09-25 | 2026-08 | tokenizers | nlp-llm | 255,967,395 | 222,890,981 | 33,076,414 | 14.84 | 3 | 12 | 0.146 | false | 2026-07 | https://pypi.org/project/tokenizers/ | 1d78fab51c7a2b65 |
| 2026-09-25 | 2026-08 | pytorch-lightning | ml-frameworks | 12,798,692 | 11,232,102 | 1,566,590 | 13.947 | 4 | 76 | 0.007 | false | 2026-07 | https://pypi.org/project/pytorch-lightning/ | 8d7bb2d152e90c09 |
| 2026-09-25 | 2026-08 | duckdb | data-infra | 64,906,501 | 57,186,609 | 7,719,892 | 13.5 | 5 | 33 | 0.037 | false | 2026-07 | https://pypi.org/project/duckdb/ | 6e0299be2700e346 |
| 2026-09-25 | 2026-08 | tiktoken | nlp-llm | 263,494,853 | 233,042,766 | 30,452,087 | 13.067 | 6 | 10 | 0.15 | false | 2026-07 | https://pypi.org/project/tiktoken/ | 97349269f1fa5bf7 |
| 2026-09-25 | 2026-08 | datasets | nlp-llm | 151,528,657 | 138,759,474 | 12,769,183 | 9.202 | 7 | 23 | 0.086 | false | 2026-07 | https://pypi.org/project/datasets/ | 5f0a003452af6f27 |
| 2026-09-25 | 2026-08 | tablib | etl-orchestration | 5,255,361 | 4,853,319 | 402,042 | 8.284 | 8 | 98 | 0.003 | false | 2026-07 | https://pypi.org/project/tablib/ | 3f130a50c9eeafb8 |
| 2026-09-25 | 2026-08 | trl | nlp-llm | 3,973,823 | 3,711,636 | 262,187 | 7.064 | 9 | 107 | 0.002 | false | 2026-07 | https://pypi.org/project/trl/ | 93f92f8e64120d94 |
| 2026-09-25 | 2026-08 | openai | nlp-llm | 425,458,267 | 398,217,507 | 27,240,760 | 6.841 | 10 | 6 | 0.242 | false | 2026-07 | https://pypi.org/project/openai/ | 15e459cadf28f949 |
Profiled Sep 25, 2026 from snapshot 20260925T073027Z-6b2949651429
Measured- Completeness
- 98.8%
- Rows
- 158
- Columns
- 15
- Columns with gaps
- 1
| Column | Missing | Distinct | Range | Distribution |
|---|---|---|---|---|
| as_ofvarchar | 0% | 1 | — |
|
| monthvarchar | 0% | 1 | — |
|
| packagevarchar | 0% | 163 | — |
|
| categoryvarchar | 0% | 16 | — |
|
| downloads_30dbigint | 0% | 135 | 70,506 → 1,114,195,695median 11,628,895 | 4 outside 1st–99th percentile |
| prev_downloads_30dbigint | 0% | 142 | 85,379 → 1,143,792,865median 12,855,423 | 4 outside 1st–99th percentile |
| mom_abs_changebigint | 0% | 152 | -123,337,924 → 33,076,414median -894,731 | 4 outside 1st–99th percentile |
| mom_pct_changedouble | 0% | 173 | -66.47 → 40.12median -11.59 | 4 outside 1st–99th percentile |
| velocity_rankbigint | 17.7% | 131 | 1 → 130median 65.5 | 4 outside 1st–99th percentile |
| popularity_rankbigint | 0% | 161 | 1 → 158median 79.5 | 4 outside 1st–99th percentile |
| share_top15000_pctdouble | 0% | 148 | 0 → 0.6346median 0.0066 | 4 outside 1st–99th percentile |
| new_entrantboolean | 0% | 1 | — |
|
| prev_monthvarchar | 0% | 1 | — |
|
| source_urlvarchar | 0% | 143 | — |
|
| row_hashvarchar | 0% | 155 | — |
|
- Current
20260925T073027Z-6b2949651429 · sha256 6b2949651429…
158 rows · first snapshot
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/pypi_data_signals/pypi_data_packages_monthly" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/pypi_data_signals/pypi_data_packages_monthly").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/pypi_data_signals/pypi_data_packages_monthly
Tip: fetch /llms.txt for the full machine-readable catalog.
Where this data comes from and what was made from it. Other people's work shows as counts; only shared projects are named.
Cite this snapshot
Pinned to snapshot 20260925T073027Z-6b2949651429 and its content hash, so readers get exactly the data you used.
PyPI Download Statistics (hugovk top-pypi-packages). (2026). PyPI data-ecosystem package download velocity (monthly) [Data set, snapshot 20260925T073027Z-6b2949651429, sha256 6b2949651429]. Datazimuts. Retrieved 2026-09-25, from https://datazimuts.com/en/datasets/pypi_data_signals/pypi_data_packages_monthly?snapshot=20260925T073027Z-6b2949651429
@misc{dz_pypi_data_signals_pypi_data_packages_mon_6b294965,
title = {{PyPI data-ecosystem package download velocity (monthly)}},
author = {{PyPI Download Statistics (hugovk top-pypi-packages)}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/pypi_data_signals/pypi_data_packages_monthly?snapshot=20260925T073027Z-6b2949651429}},
note = {Snapshot 20260925T073027Z-6b2949651429, sha256 6b2949651429747f6bd162f922452098177d6b892945a26df5548c78fd4a3bf6; accessed 2026-09-25}
}Embed a table or a chart
Paste this into any page. The embed is pinned to the same snapshot, follows the reader's light or dark setting, and always shows the source, license and a link back.
<iframe src="https://datazimuts.com/embed/chart?dataset=pypi_data_signals%2Fpypi_data_packages_monthly&lang=en&theme=auto&snapshot=20260925T073027Z-6b2949651429&x=as_of&y=downloads_30d&agg=avg" title="PyPI data-ecosystem package download velocity (monthly)" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Ask about this dataset. Answers come only from its catalog record, measured profile and change history, and list the facts they used.