Python精选200Tips:131-135

ops/2024/10/18 9:18:58/

Put the final touches on something

  • 131 python-docx - 创建和修改文档的库
        • 基本功能
        • 主要类和方法
        • 示例
  • 132 NetworkX - 网络分析和图论工具
        • 示例1: 小世界网络
        • 示例2:社交网络分析
        • 示例3:交通网络分析
  • 133 Statsmodels - 统计建模和计量经济学
        • 示例1:线性回归的残差分析
        • 示例2:年龄、性别、治疗组的Cox 比例风险模型
        • 示例3:年龄、性别和购买意向之间的卡方检验
  • 134 Openpyxl - Excel 文件读写库
        • 示例1: 创建Excel 文件、写入数据并读取数据
        • 示例2: 将多个数据写入不同的工作表
        • 示例3: 表格编辑
          • 合并单元格
          • 插入公式
          • 创建图表
  • 135 Tqdm - 进度条显示库,适合长时间运行的任务
      • 与列表或其他可迭代对象结合使用
        • 嵌套进度条
        • 处理大文件
  • 附 calendar - 日历(漏了的Python自带包)

喝了这碗,还有一碗,就该上道了

运行系统:macOS Sonoma 14.6.1
Python编译器:PyCharm 2024.1.4 (Community Edition)
Python版本:3.12

往期链接:

1-56-1011-2021-3031-4041-50
51-60:函数61-70:类71-80:编程范式及设计模式
81-90:Python编码规范91-100:Python自带常用模块-1
101-105:Python自带模块-2106-110:Python自带模块-3
111-115:Python常用第三方包-频繁使用116-120:Python常用第三方包-深度学习
121-125:Python常用第三方包-爬取数据126-130:Python常用第三方包-为了乐趣

本文只介绍每个包主要做什么及一些比较经典的示例。对于包的进一步学习,推荐参考对应包的官方文档。

pythondocx___30">131 python-docx - 创建和修改文档的库

python-docx版本1.1.2,官方文档

python-docx 是一个用于创建和修改 Microsoft Word 2007 及以上版本(.docx 格式)文档的 Python 库。它允许用户以编程方式生成复杂的文档,支持文本、样式、图像、表格等多种内容。

基本功能
  • 创建新文档。
  • 读取和修改现有文档。
  • 添加段落、标题、列表、表格、图像等。
  • 设置文本格式(如加粗、斜体、字体大小等)。
  • 导出文档为 .docx 格式。
主要类和方法
  • Document:主类,用于创建和操作文档。
    (1) add_paragraph(text): 添加段落。
    (2) add_heading(text, level): 添加标题。
    (3)add_table(rows, cols): 添加表格。
    (4)add_picture(image_path): 添加图片。
    (5)save(file_path): 保存文档。
  • Paragraph:代表文档中的段落。
  • Run:代表段落中的文本块,可以设置不同的样式。
  • Table:代表文档中的表格。
示例
python">from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT# 创建文档
doc = Document()# 添加标题
doc.add_heading('项目报告', level=1)# 添加作者和日期
doc.add_paragraph('作者:张三')
doc.add_paragraph('日期:2024年9月12日')# 添加简介段落
doc.add_heading('简介', level=2)
intro = doc.add_paragraph('本项目旨在开发一个用于管理和跟踪项目的应用程序。''我们的目标是提高团队的协作效率和项目管理能力。'
)# 添加有序列表
doc.add_heading('项目目标', level=2)
goals = doc.add_paragraph('1. 提升团队协作能力', style='ListNumber')
goals.add_run('\n2. 提高项目管理效率').bold = True
goals.add_run('\n3. 实现任务的可视化跟踪')# 添加无序列表
doc.add_heading('关键功能', level=2)
doc.add_paragraph('• 任务分配', style='ListBullet')
doc.add_paragraph('• 进度跟踪', style='ListBullet')
doc.add_paragraph('• 报告生成', style='ListBullet')# 添加表格
doc.add_heading('项目时间表', level=2)
table = doc.add_table(rows=1, cols=4)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '阶段'
hdr_cells[1].text = '开始日期'
hdr_cells[2].text = '结束日期'
hdr_cells[3].text = '责任人'# 添加数据到表格
data = [('需求分析', '2024-01-01', '2024-01-15', 'Alice'),('设计阶段', '2024-01-16', '2024-02-01', 'Bob'),('开发阶段', '2024-02-02', '2024-04-01', 'Charlie'),('测试阶段', '2024-04-02', '2024-05-01', 'David'),
]for stage, start, end, person in data:row_cells = table.add_row().cellsrow_cells[0].text = stagerow_cells[1].text = startrow_cells[2].text = endrow_cells[3].text = person# 设置表格样式
for row in table.rows:for cell in row.cells:cell.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER# 添加图片
doc.add_heading('项目示意图', level=2)
doc.add_picture('example.png', width=Inches(5))  # 确保该图片文件存在# 添加总结段落
doc.add_heading('总结', level=2)
doc.add_paragraph('通过本项目的实施,我们期望能够显著提高团队的协作效率和项目管理能力。'
)# 保存文档
doc.save('project_report.docx')

在这里插入图片描述

132 NetworkX - 网络分析和图论工具

NetworkX版本3.3,官方文档

NetworkX 是一个用于创建、操作和研究复杂网络的 Python 库。它提供了丰富的功能来处理图(图论中的数学结构)和网络,包括图的生成、分析、可视化等。主要模块:

  • 图的创建与操作
    (1)创建无向图、有向图和权重图。
    (2)添加和删除节点和边。
  • 图的属性
    (1)节点和边的属性可以通过字典形式存储。
    (2)支持多种图类型,如简单图、重图、带权图等。
  • 图的分析
    提供多种算法,如最短路径算法、连通性、中心性、聚类系数等。
  • 图的可视化
    使用 Matplotlib 或其他库进行图的可视化。
  • 图的生成
    提供多种图生成模型,如随机图、巴拉巴西-阿尔伯特模型等。
示例1: 小世界网络
python">import networkx as nx
import matplotlib.pyplot as plt# 1. 创建一个 Watts-Strogatz 小世界网络
n = 100  # 节点数
k = 6    # 每个节点连接的邻居数
p = 0.1  # 重连概率
G = nx.watts_strogatz_graph(n, k, p)# 2. 计算网络指标
degree_centrality = nx.degree_centrality(G)# 3. 可视化网络
plt.figure(figsize=(12, 10))# 使用 spring 布局
pos = nx.spring_layout(G, seed=42)# 根据中心性设置节点大小和颜色
node_sizes = [v * 1000 for v in degree_centrality.values()]
node_colors = [degree_centrality[node] for node in G.nodes()]# 绘制边
nx.draw_networkx_edges(G, pos, alpha=0.5, edge_color='gray')# 绘制节点
nodes = nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color=node_colors, cmap=plt.cm.viridis)# 添加 colorbar
sm = plt.cm.ScalarMappable(cmap=plt.cm.viridis, norm=plt.Normalize(vmin=min(node_colors), vmax=max(node_colors)))
sm.set_array([])  # 必须设置数组
cbar = plt.colorbar(sm, ax=plt.gca(), label='Degree Centrality')# 添加标签
nx.draw_networkx_labels(G, pos, font_size=8)# 设置标题
plt.title('Watts-Strogatz Small-World Network Visualization', fontsize=16)
plt.axis('off')  # 关闭坐标轴
plt.show()

在这里插入图片描述

示例2:社交网络分析
python">import networkx as nx
import matplotlib.pyplot as plt# 1. 创建一个社交网络
G = nx.Graph()# 添加节点(用户)
users = ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace', 'Heidi', 'Ivan', 'Judy']
G.add_nodes_from(users)# 添加边(朋友关系)
edges = [('Alice', 'Bob'),('Alice', 'Charlie'),('Bob', 'David'),('Charlie', 'David'),('Charlie', 'Eve'),('David', 'Frank'),('Eve', 'Grace'),('Frank', 'Grace'),('Grace', 'Heidi'),('Heidi', 'Ivan'),('Judy', 'Alice'),('Judy', 'Bob'),
]
G.add_edges_from(edges)# 2. 计算网络指标
degree_centrality = nx.degree_centrality(G)# 3. 可视化网络
plt.figure(figsize=(10, 8))# 使用 spring 布局
pos = nx.spring_layout(G, seed=42)# 根据中心性设置节点大小和颜色
node_sizes = [v * 1000 for v in degree_centrality.values()]
node_colors = [degree_centrality[node] for node in G.nodes()]# 绘制边
nx.draw_networkx_edges(G, pos, alpha=0.5, edge_color='gray')# 绘制节点
nodes = nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color=node_colors, cmap=plt.cm.viridis)# 添加 colorbar
sm = plt.cm.ScalarMappable(cmap=plt.cm.viridis, norm=plt.Normalize(vmin=min(node_colors), vmax=max(node_colors)))
sm.set_array([])  # 必须设置数组
cbar = plt.colorbar(sm, ax=plt.gca(), label='Degree Centrality')# 添加标签
nx.draw_networkx_labels(G, pos, font_size=10)# 标注最重要的节点
top_nodes = sorted(degree_centrality.items(), key=lambda x: x[

http://www.ppmy.cn/ops/109753.html

相关文章

组织应在其网络安全策略中考虑MLSecOps吗?

随着越来越多的组织拥抱人工智能 (AI) 和机器学习 (ML) 来优化操作并获得竞争优势,关于如何最好地保障这一强大技术的安全性的问题也日益受到关注。其中的核心是用于训练ML模型的数据,这对模型的行为和性能有着根本影响。因此,组织需要密切关…

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算…

Linux:软硬连接和动静态库

一般ll一下,最左边一列就是文件类型: 怎么创建链接文件: ln -s 目标文件 创建的链接文件名 来试试:这叫软连接,软连接相当于Windows下的快捷方式,直接指向原文件的绝对路径;删除软连接不影响原…

PAT甲级-1012 The Best Rank

题目 题目大意 学生有C、M、E三个成绩,A是这三个成绩的平均值。要求对每个学生的C、M、E、A分别排名,取这4项的最高排名为最优排名。如果一个学生有多项排名一样,按照A > C > M > E的优先级输出最优排名。 输入给出学生人数和查询…

图论篇--代码随想录算法训练营第五十八天打卡|拓扑排序,dijkstra(朴素版)

拓扑排序 题目链接:117. 软件构建 题目描述: 某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果文件 A 依赖于文件 B&#xff0…

List集合特点,遍历方式,ArrayList(去重原理,增长因子论,LinkedList)

for (int i 0; i < list.size(); i) { System.out.println(list.get(i)); } foreach遍历&#xff0c;代码如下 // 使用foreach遍历 for (String s : list) { System.out.println(s); } 迭代器iterater遍历&#xff0c;代码如下 // 使用迭代器遍历&#xff08;和数…

如何阅读PyTorch文档及常见PyTorch错误

如何阅读PyTorch文档及常见PyTorch错误 文章目录 如何阅读PyTorch文档及常见PyTorch错误阅读PyTorch文档示例常见Pytorch错误Tensor在不同设备上维度不匹配cuda内存不足张量类型不匹配 参考 PyTorch文档查看https://pytorch.org/docs/stable/ torch.nn -> 定义神经网络 torc…

Debezium系列之:大规模应用debezium server采集数据库,从每个Debezium Server中导出JMX采集指标

Debezium系列之:为每个Debezium Server导出JMX采集指标 一、需求背景二、相关技术内容三、仓库下载对应版本的Debezium Server四、设置jmx指标导出内容五、设置采集JMX六、设置数据库采集七、启动Debezium Server八、查看debezium server的jmx采集指标九、插入数据,观察采集十…