Google专利数据分析工具 - 支持 CSV 处理、Excel 导出和 Web 可视化
Project description
Patent Analyzer - 专利数据分析工具
patent-analyzer 是一个用于分析 Google Patent CSV 数据的 Python 工具包。它提供从数据清洗、作者统计、合作网络分析到可视化看板的一站式解决方案。
功能特性
-
数据处理
- 自动加载和清洗 Google Patent CSV 数据
- 解析发明人、日期、专利类型等字段
- 基于关键词的技术领域自动分类
-
数据分析
- 作者专利统计与技术方向分析
- 合作网络构建与 Louvain 社区检测
- 时间趋势分析
- 发明人重要性综合评估(专利数、质量、中心性、技术广度、活跃度)
- 研发团队结构识别
-
数据导出
- 生成文本报告(report.txt)
- 导出 JSON 数据文件(author_stats.json, teams.json, cooperation.json)
- 导出多 Sheet Excel 文件
- 生成 matplotlib 可视化图表(PNG)
-
Web 可视化看板
- 基于 FastAPI 的 RESTful API
- 基于 ECharts + Tailwind CSS + Alpine.js 的现代化前端
- 支持图表展示、数据搜索、分页浏览
- 合作网络力引导布局可视化
安装指南
环境要求
- Python >= 3.9
- pip >= 21.0
从 PyPI 安装(推荐)
pip install patent-analyzer
从源码安装
git clone https://github.com/example/patent-analyzer.git
cd patent-analyzer
pip install -e ".[dev]"
验证安装
patent-analyzer info
使用示例
1. 命令行处理 CSV 数据
# 处理 CSV 并生成报告、JSON 和图表
patent-analyzer process GooglePatent.csv --output-dir ./output
# 不生成图表,仅生成文本和 JSON
patent-analyzer process GooglePatent.csv --output-dir ./output --no-viz
2. 导出 Excel
patent-analyzer export-excel GooglePatent.csv --output report.xlsx
3. 启动 Web 服务
# 先处理数据再启动服务
patent-analyzer serve --input GooglePatent.csv --output-dir ./output
# 或直接加载已有的 output 目录
patent-analyzer serve --output-dir ./output --host 0.0.0.0 --port 8000
访问 http://127.0.0.1:8000 查看可视化看板。
4. Python API 使用
from patent_analyzer import PatentDataLoader, AuthorAnalyzer, CooperationAnalyzer
# 加载数据
loader = PatentDataLoader("GooglePatent.csv")
df = loader.load().clean().get_df()
# 作者分析
author_analyzer = AuthorAnalyzer(df)
author_analyzer.analyze()
print(author_analyzer.get_stats())
# 合作网络
coop_analyzer = CooperationAnalyzer(df)
coop_analyzer.analyze()
print(len(coop_analyzer.close_coop))
项目架构
patent_analyzer/
├── src/patent_analyzer/
│ ├── __init__.py # 包入口
│ ├── __main__.py # python -m patent_analyzer
│ ├── cli.py # Typer 命令行接口
│ ├── core/ # 核心分析引擎
│ │ ├── data_loader.py # CSV 加载与清洗
│ │ ├── analyzer.py # 分析引擎(作者、合作、时间、团队、重要性)
│ │ ├── visualizer.py # matplotlib 可视化
│ │ ├── report.py # 报告与 JSON 导出
│ │ └── exporter.py # Excel 导出
│ ├── web/ # FastAPI Web 服务
│ │ ├── app.py # FastAPI 应用工厂
│ │ ├── api/ # RESTful API 路由
│ │ ├── services/ # 数据缓存服务
│ │ └── static/ # 前端页面
│ └── utils/
│ └── logging.py # 日志配置
├── tests/ # 单元测试
├── pyproject.toml
└── README.md
新手入门
第一步:准备数据
确保你有一个从 Google Patent 导出的 CSV 文件,格式如下(前两行为 URL 和表头,从第三行开始是数据):
https://patents.google.com/?...
id,title,assignee,inventor,...
CN123456789,一种激光雷达装置,...
第二步:快速体验
# 处理数据
patent-analyzer process GooglePatent.csv
# 查看生成的 output/ 目录
ls output/
# report.txt author_stats.json teams.json cooperation.json *.png
第三步:启动看板
patent-analyzer serve --output-dir output
打开浏览器访问 http://127.0.0.1:8000
API 接口说明
Web 服务启动后提供以下 API:
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/health |
健康检查 |
| GET | /api/overview/kpi |
核心 KPI |
| GET | /api/overview/patent-types |
专利类型分布 |
| GET | /api/overview/tech-fields?top=20 |
技术领域 TOP N |
| GET | /api/overview/year-trend |
年度趋势 |
| GET | /api/authors |
作者列表(支持搜索、排序、分页) |
| GET | /api/authors/top?n=20 |
TOP N 作者 |
| GET | /api/authors/{name} |
作者详情 |
| GET | /api/teams |
团队列表 |
| GET | /api/teams/top?n=10 |
TOP N 团队 |
| GET | /api/cooperation |
紧密合作列表 |
| GET | /api/cooperation/network?limit=200 |
网络图数据 |
参数说明
process 命令
input_file: 输入 CSV 文件路径(必需)--output-dir, -o: 输出目录,默认output--no-viz: 禁用图表生成
export-excel 命令
input_file: 输入 CSV 文件路径(必需)--output, -o: 输出 Excel 路径,默认patent_analysis.xlsx
serve 命令
--input, -i: 输入 CSV 文件路径(可选,指定则先处理)--output-dir, -o: 数据输出目录,默认output--host: 绑定地址,默认127.0.0.1--port, -p: 监听端口,默认8000--reload: 开发模式热重载
最佳实践
- 大数据量处理:如果 CSV 文件很大(>10MB),建议先用
process命令生成 output,再用serve加载,避免每次启动都重新分析。 - 定期更新:可以设置定时任务运行
process命令,保持 output 目录数据最新。 - 自定义技术领域:编辑
patent_analyzer/core/data_loader.py中的TECH_KEYWORDS字典,添加你关注的技术关键词。 - 日志记录:CLI 命令会自动输出处理进度。如需文件日志,可在 Python API 中调用
setup_logging(log_file="analysis.log")。
依赖项清单
核心依赖:
- pandas, numpy: 数据处理
- networkx, python-louvain: 网络分析与社区检测
- matplotlib: 静态图表生成
- openpyxl: Excel 导出
- typer, rich: 命令行交互
- fastapi, uvicorn: Web 服务
开发依赖:
- pytest: 单元测试
- black, ruff: 代码格式化与检查
- mypy: 类型检查
贡献指南
欢迎提交 Issue 和 Pull Request。
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/awesome-feature) - 提交更改 (
git commit -am 'Add awesome feature') - 推送到分支 (
git push origin feature/awesome-feature) - 创建 Pull Request
请确保代码通过 black 格式化和 pytest 测试。
许可证
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file patent_analyzer-0.1.0.tar.gz.
File metadata
- Download URL: patent_analyzer-0.1.0.tar.gz
- Upload date:
- Size: 38.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a90e944ba0575007136105cf20e17b27ceb88a40d8249f5f16052822d559e702
|
|
| MD5 |
e88304aeb64a79e06673b42382545bbf
|
|
| BLAKE2b-256 |
ec2328239f127131e55c3acde5284ddf8cd974c1b271b1943d99b797735ca503
|
File details
Details for the file patent_analyzer-0.1.0-py3-none-any.whl.
File metadata
- Download URL: patent_analyzer-0.1.0-py3-none-any.whl
- Upload date:
- Size: 41.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc985907e57ef5d3293dc712811c20a5551cff2d3d1c8f2e1a3f9c8f849a085e
|
|
| MD5 |
2a509b216f5308168a5a136d5a999c98
|
|
| BLAKE2b-256 |
0141dbf430d356b2cd1589647d0e3607e5772a94fb35fa591c888be15cef5f64
|