批量修改 Jupyter Notebook 的内容
有时需要批量替换许多 Jupyter Notebook 的内容,由于 Jupyter Notebook 并不是简单的文本文件,在读取和替换时并不像批量修改 Python 脚本那样方便。
本文介绍了使用 nbformat
批量修改 Jupyter Notebook 的内容的方法。
有时需要批量替换许多 Jupyter Notebook 的内容,由于 Jupyter Notebook 并不是简单的文本文件,在读取和替换时并不像批量修改 Python 脚本那样方便。
本文介绍了使用 nbformat
批量修改 Jupyter Notebook 的内容的方法。
argparse
解析命令行参数为布尔值在 Python 开发中,命令行参数解析是一个常见的需求,它允许我们以命令行的方式向程序传递参数,从而实现更灵活和可配置的程序设计。Python 提供了一个内置库 argparse
,它简化了命令行参数解析的过程。
这篇帖子介绍过如何使用 argparse
解析命令行参数,本文将介绍如何指定命令行参数为布尔值类型。直接使用 type=bool
是无法实现的,而需要传入一个 callable
的对象,在其中编写将字符串转换为布尔值的逻辑。
在数据分析领域,Pandas
是最受欢迎的 Python 库之一。然而,许多数据分析任务可以利用人工智能模型进行自动化。PandasAI
库为流行的数据分析和处理工具 Pandas 添加了生成式人工智能功能,你可以与 DataFrame
进行对话,并得到想要的数据分析结果。
本文使用 Streamlit
构建了一个在线应用,用户可以上传 Excel/CSV 数据,在输入想要执行的数据分析任务后,便可得到图表等结果,以及生成该结果的相应代码。
假如我们已经在 Jupyter
中编写了一些代码,但在计算后发现忘记将结果赋值了。一般在这种情况下,我们会再次执行该单元并生成结果完成赋值。
那么如何不重新运行而直接使用结果呢?
许多大模型都提供了在线 API 接口服务,我们可以在 Python 中调用它们。本文使用 openai
、chatllm
、dashscope
等包实现了对 OpenAI、讯飞星火、智谱 AI、百度、阿里通义千问的调用。用户只需在本地用 .env
文件存储 API Key 即可快速调用这些大模型。
本文使用相关系数的矩阵表达形式,实现了计算部分相关系数矩阵的加速算法,并实证检验了三种计算相关系数矩阵方法的运行速度。
.corr()
方法提速约 2180 倍,比 Numpy .corrcoef()
方法提速约 115 倍。.corrcoef()
方法比自定义的加速算法略快 \(10\%\),比 Pandas .corr()
方法快约 20 倍。@override
装饰器Python 3.12 引入了 @override
装饰器,可以用来指定该方法是用来覆盖基类方法的。
在继承基类后,如果我们想覆盖基类中的某个方法 original()
,我们可以改写该方法。然而,如果我们不小心将方法名拼写错误为 ooooriginal()
,即一个基类中不存在的方法,那么当调用子类的 original()
方法时,实际上会调用基类中的方法,而且程序不会产生错误。这种情况下,我们可能无法察觉到问题的存在。
为了解决这个问题,我们可以使用 @override
注解来明确表示方法的覆盖关系。这样程序会检查 ooooriginal()
方法是否在基类中存在。由于 ooooriginal()
方法并未在基类中定义,程序会报错,从而帮助我们发现错误。
简而言之,使用 @override
注解可以帮助我们检测覆盖方法是否正确,避免潜在的错误。
问题背景:有一个分钟级别索引的数据框,需要根据日期进行分组聚合计算。
.groupby('datetime')
无法实现按日期分组。.groupby(pd.Grouper(level='datetime', freq='D'))
会为原始数据中不存在的日期填充空值(例如,在股票数据中,周末、节假日等非交易日会被填充为空值)。.mean()
,则会出现这个问题。.transform('mean')
,则不存在这个问题。本文记录了可以正确根据日期进行分组的方法。
*
以强制调用者使用关键字参数在 Python 中,函数可以接受不同类型的参数,包括位置参数和关键字参数。位置参数必须按照特定的顺序传递给函数,而关键字参数可以根据参数名指定。
在某些情况下,我们可能希望定义一个函数,其中一部分参数只能以关键字形式指定。为此,我们可以使用独立的 *
号来分隔这些参数。