Python接口到PyPI统计API https://pypistats.org/api
项目描述
pypistats
Python接口到 PyPI统计API,用于获取Python包索引上Python包的聚合下载统计,无需直接执行针对Google BigQuery的查询。
数据可访问最近 180天。 (对于更长的时间段,pypinfo 可以帮助,您需要API密钥并获取免费配额。)
安装
从PyPI
python3 -m pip install --upgrade pypistats
从源
git clone https://github.com/hugovk/pypistats
cd pypistats
python3 -m pip install .
示例命令行使用
运行 pypistats
命令,然后是子命令(对应于 PyPI统计端点)的选项。
顶级帮助
$ pypistats --help
usage: pypistats [-h] [-V]
{recent,overall,python_major,python_minor,system} ...
positional arguments:
{recent,overall,python_major,python_minor,system}
options:
-h, --help show this help message and exit
-V, --version show program's version number and exit
子命令的帮助
$ pypistats recent --help
usage: pypistats recent [-h] [-p {day,week,month}]
[-f {html,json,pretty,md,markdown,rst,tsv}] [-j]
[-v]
package
Retrieve the aggregate download quantities for the last day/week/month
positional arguments:
package
options:
-h, --help show this help message and exit
-p {day,week,month}, --period {day,week,month}
-f {html,json,pretty,md,markdown,rst,tsv}, --format {html,json,pretty,md,markdown,rst,tsv}
The format of output (default: pretty)
-j, --json Shortcut for "-f json" (default: False)
-v, --verbose Print debug messages to stderr (default: False)
获取最近下载
$ pypistats recent pillow
┌───────────┬────────────┬────────────┐
│ last_day │ last_month │ last_week │
├───────────┼────────────┼────────────┤
│ 3,419,597 │ 91,237,125 │ 21,259,217 │
└───────────┴────────────┴────────────┘
另一个子命令的帮助
$ pypistats python_minor --help
usage: pypistats python_minor [-h] [-V VERSION]
[-f {html,json,pretty,md,markdown,rst,tsv}]
[-j] [-sd yyyy-mm[-dd]|name]
[-ed yyyy-mm[-dd]|name] [-m yyyy-mm|name] [-l]
[-t] [-d] [--monthly] [-c {yes,no,auto}] [-v]
package
Retrieve the aggregate daily download time series by Python minor version
number
positional arguments:
package
options:
-h, --help show this help message and exit
-V VERSION, --version VERSION
eg. 2.7 or 3.6 (default: None)
-f {html,json,pretty,md,markdown,rst,tsv}, --format {html,json,pretty,md,markdown,rst,tsv}
The format of output (default: pretty)
-j, --json Shortcut for "-f json" (default: False)
-sd yyyy-mm[-dd]|name, --start-date yyyy-mm[-dd]|name
Start date (default: None)
-ed yyyy-mm[-dd]|name, --end-date yyyy-mm[-dd]|name
End date (default: None)
-m yyyy-mm|name, --month yyyy-mm|name
Shortcut for -sd & -ed for a single month (default:
None)
-l, --last-month Shortcut for -sd & -ed for last month (default: False)
-t, --this-month Shortcut for -sd for this month (default: False)
-d, --daily Show daily downloads (default: False)
--monthly Show monthly downloads (default: False)
-c {yes,no,auto}, --color {yes,no,auto}
Color terminal output (default: auto)
-v, --verbose Print debug messages to stderr (default: False)
获取版本下载
$ pypistats python_minor pillow --last-month
┌──────────┬─────────┬────────────┐
│ category │ percent │ downloads │
├──────────┼─────────┼────────────┤
│ 3.8 │ 18.37% │ 16,161,117 │
│ 3.10 │ 17.47% │ 15,373,666 │
│ 3.7 │ 16.70% │ 14,691,371 │
│ 3.11 │ 15.49% │ 13,630,259 │
│ 3.9 │ 13.19% │ 11,605,389 │
│ 3.6 │ 9.68% │ 8,519,789 │
│ null │ 4.64% │ 4,085,994 │
│ 3.12 │ 3.26% │ 2,871,386 │
│ 2.7 │ 0.95% │ 837,638 │
│ 3.5 │ 0.25% │ 216,308 │
│ 3.13 │ 0.00% │ 2,830 │
│ 3.4 │ 0.00% │ 1,237 │
│ 3.3 │ 0.00% │ 109 │
│ 3.1 │ 0.00% │ 3 │
│ 3.2 │ 0.00% │ 2 │
│ Total │ │ 87,997,098 │
└──────────┴─────────┴────────────┘
Date range: 2024-02-01 - 2024-02-29
您可以使用Markdown格式,以便粘贴到GitHub问题和PR中
类别 | 百分比 | 下载量 |
---|---|---|
3.8 | 18.37% | 16,161,117 |
3.10 | 17.47% | 15,373,666 |
3.7 | 16.70% | 14,691,371 |
3.11 | 15.49% | 13,630,259 |
3.9 | 13.19% | 11,605,389 |
3.6 | 9.68% | 8,519,789 |
空 | 4.64% | 4,085,994 |
3.12 | 3.26% | 2,871,386 |
2.7 | 0.95% | 837,638 |
3.5 | 0.25% | 216,308 |
3.13 | 0.00% | 2,830 |
3.4 | 0.00% | 1,237 |
3.3 | 0.00% | 109 |
3.1 | 0.00% | 3 |
3.2 | 0.00% | 2 |
总计 | 87,997,098 |
日期范围:2024-02-01 - 2024-02-29
这些是等效的(2019年5月)
pypistats python_major pip --last-month
pypistats python_major pip --month april
pypistats python_major pip --month apr
pypistats python_major pip --month 2019-04
并且
pypistats python_major pip --start-date december --end-date january
pypistats python_major pip --start-date dec --end-date jan
pypistats python_major pip --start-date 2018-12 --end-date 2019-01
示例程序化使用
返回值来自API中记录的JSON响应: https://pypistats.org/api/
import pypistats
from pprint import pprint
# Call the API
print(pypistats.recent("pillow"))
print(pypistats.recent("pillow", "day", format="markdown"))
print(pypistats.recent("pillow", "week", format="rst"))
print(pypistats.recent("pillow", "month", format="html"))
pprint(pypistats.recent("pillow", "week", format="json"))
print(pypistats.recent("pillow", "day"))
print(pypistats.overall("pillow"))
print(pypistats.overall("pillow", mirrors=True, format="markdown"))
print(pypistats.overall("pillow", mirrors=False, format="rst"))
print(pypistats.overall("pillow", mirrors=True, format="html"))
pprint(pypistats.overall("pillow", mirrors=False, format="json"))
print(pypistats.python_major("pillow"))
print(pypistats.python_major("pillow", version=2, format="markdown"))
print(pypistats.python_major("pillow", version=3, format="rst"))
print(pypistats.python_major("pillow", version="2", format="html"))
pprint(pypistats.python_major("pillow", version="3", format="json"))
print(pypistats.python_minor("pillow"))
print(pypistats.python_minor("pillow", version=2.7, format="markdown"))
print(pypistats.python_minor("pillow", version="2.7", format="rst"))
print(pypistats.python_minor("pillow", version=3.7, format="html"))
pprint(pypistats.python_minor("pillow", version="3.7", format="json"))
print(pypistats.system("pillow"))
print(pypistats.system("pillow", os="darwin", format="markdown"))
print(pypistats.system("pillow", os="linux", format="rst"))
print(pypistats.system("pillow", os="darwin", format="html"))
pprint(pypistats.system("pillow", os="linux", format="json"))
NumPy和pandas
要使用NumPy或pandas,请确保它们已安装,或者
pip install --upgrade "pypistats[numpy]"
pip install --upgrade "pypistats[pandas]"
pip install --upgrade "pypistats[numpy,pandas]"
以NumPy数组的形式返回数据以进行进一步处理
import pypistats
numpy_array = pypistats.overall("pyvista", total=True, format="numpy")
print(type(numpy_array))
# <class 'numpy.ndarray'>
print(numpy_array)
# [['with_mirrors' '2019-09-20' '2.23%' 1204]
# ['without_mirrors' '2019-09-20' '2.08%' 1122]
# ['with_mirrors' '2019-09-19' '0.92%' 496]
# ...
# ['with_mirrors' '2019-10-26' '0.02%' 13]
# ['without_mirrors' '2019-10-26' '0.02%' 12]
# ['Total' None None 54041]]
或在pandas DataFrame中
import pypistats
pandas_dataframe = pypistats.overall("pyvista", total=True, format="pandas")
print(type(pandas_dataframe))
# <class 'pandas.core.frame.DataFrame'>
print(pandas_dataframe)
# category date percent downloads
# 0 with_mirrors 2019-09-20 2.23% 1204
# 1 without_mirrors 2019-09-20 2.08% 1122
# 2 with_mirrors 2019-09-19 0.92% 496
# 3 with_mirrors 2019-08-22 0.90% 489
# 4 without_mirrors 2019-09-19 0.86% 466
# .. ... ... ... ...
# 354 without_mirrors 2019-11-03 0.03% 15
# 355 without_mirrors 2019-11-16 0.03% 15
# 356 with_mirrors 2019-10-26 0.02% 13
# 357 without_mirrors 2019-10-26 0.02% 12
# 358 Total None None 54041
#
# [359 rows x 4 columns]
例如,使用pandas创建图表
# Show overall downloads over time, excluding mirrors
import pypistats
data = pypistats.overall("pillow", total=True, format="pandas")
data = data.groupby("category").get_group("without_mirrors").sort_values("date")
chart = data.plot(x="date", y="downloads", figsize=(10, 2))
chart.figure.show()
chart.figure.savefig("overall.png") # alternatively
# Show Python 3 downloads over time
import pypistats
data = pypistats.python_major("pillow", total=True, format="pandas")
data = data.groupby("category").get_group(3).sort_values("date")
chart = data.plot(x="date", y="downloads", figsize=(10, 2))
chart.figure.show()
chart.figure.savefig("python3.png") # alternatively
另请参阅
相关项目
项目详情
下载文件
下载适合您平台的项目文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
pypistats-1.6.0.tar.gz (121.8 kB 查看哈希值)
构建分发
pypistats-1.6.0-py3-none-any.whl (12.9 kB 查看哈希值)
关闭
pypistats-1.6.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7007b1ecc4a62749314c6ddaafd1908315c1f5185f8a010004c13631f058a993 |
|
MD5 | 6085b7fbb437b80eb34f3cd409032a5c |
|
BLAKE2b-256 | c062b1001d98a1113515156462e0e9c66fa3eb21b367fc803f847ca356f03145 |
关闭
pypistats-1.6.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5cce5c95bd6d545e4366e338572a0de4243d248b29851a3ac5e438cf6c0e494d |
|
MD5 | fb31b852462e444181ebf5713293f081 |
|
BLAKE2b-256 | d199a5399f7013d664b34070f421a258292d06bf5a17e3a7bd7424cc95ce4eb5 |