跳转至

所有文章

Pandas 向前与居中滚动计算

Pandas 中的 rolling 默认是向后(也就是向上)获取滚动窗口,如果需要向前(也就是向下)或者居中(也就是同时向上和向下)获取滚动窗口,则可以分别使用 pd.api.indexers.FixedForwardWindowIndexercenter=True 来实现。

本文还使用了 .shift(-1) 实现向前或者居中获取滚动窗口,并对比了这种方法与上述方法所得结果的差异。

data forward_using_FixedForwardWindowIndexer forward_using_shift center_using_center center_using_shift
0 1.0 3.0 3.0 3.0 3.0
1 2.0 2.0 2.0 3.0 3.0
2 NaN 4.0 4.0 6.0 6.0
3 4.0 9.0 9.0 9.0 9.0
4 5.0 5.0 NaN 9.0 NaN

计算机教育中缺失的一课:The shell

大学里的计算机课程通常专注于讲授从操作系统到机器学习这些学院派的课程或主题,而对于如何精通工具这一主题则往往会留给学生自行探索。在这个系列课程中,我们讲授命令行、强大的文本编辑器的使用、使用版本控制系统提供的多种特性等等。学生在他们受教育阶段就会和这些工具朝夕相处(在他们的职业生涯中更是这样)。

因此,花时间打磨使用这些工具的能力并能够最终熟练地、流畅地使用它们是非常有必要的。

精通这些工具不仅可以帮助您更快的使用工具完成任务,并且可以帮助您解决在之前看来似乎无比复杂的问题。

使用下一个非空值的平摊值填充

本文记录了一个数据处理的小项目。需求如下:

  • 一列数据中 存在零值

  • 我们需要 用下一个非零值进行填充

  • 用于填充的值 是“下一个非零值”除以“这一段零值的长度 +1”,也就是将下一个非零值平摊后进行填充。

image-20230823233238606

image-20230823234017340

本文还记录了如何向同一个工作簿中导出多个工作表。

Python 继承 Mixin 以拓展类的功能

在 Python 中,我们经常会使用继承来构建类之间的关系。继承可以让子类获得父类的属性和方法,在代码复用和扩展功能方面非常有用。然而,当我们需要在一个类中引入多个不相关的功能时,继承的方式可能会变得复杂和混乱。这时,就可以使用 Mixin 以一种更灵活的方式来扩展类的功能。

使用 Mixin 的好处

  1. 灵活性:使用 Mixin 可以将特定功能的复用与类的继承分离开来,使代码更加灵活和可维护。
  2. 可组合性:通过多继承,可以将多个 Mixin 类组合在一起,来实现多个功能的复用。
  3. 避免继承层次过深:当需要引入多个不相关的功能时,使用 Mixin 可以避免继承层次过深造成的代码复杂性和混乱。
  4. 增强可读性:Mixin 类中只包含特定功能的方法或属性,使代码更易读、更易理解。

什么是 Mixin

Python 中的类方法和静态方法

Python 中常见的方法分三种:实例方法、类方法和静态方法。实例方法最为常见,也最容易理解,而另外两种方法则稍难理解。本文介绍了类方法和静态方法的用途,并提供了代码示例。

Python 进阶教程系列 10:组合模式

本文是 Python 进阶教程系列 10,主要介绍了 Python 组合模式。

组合模式是一种结构型设计模式,它允许我们将对象组合成树形结构来表示“部分 - 整体”的层次结构。组合模式使得客户端能够以相同的方式处理单个对象和组合对象,从而使得客户端代码更加简单和通用。

img

Python 进阶教程系列 9:单例模式

本文是 Python 进阶教程系列 9,主要介绍了 Python 单例模式。

在软件开发中,单例模式是一种常见的设计模式,它确保一个类只有一个实例,并提供全局访问点。Python 作为一种灵活而强大的编程语言,也提供了多种实现单例模式的方法。

本文将介绍 Python 中常用的两种单例模式实现方式:基于模块和基于类装饰器。

Python 进阶教程系列 8:代理模式

本文是 Python 进阶教程系列 8,主要介绍了 Python 代理模式。

什么是代理模式?

代理模式是一种结构型设计模式,它允许通过创建一个代理对象来控制对另一个对象的访问。在软件开发中,代理是对象的一种封装,它可以隐藏实际对象的复杂性,并提供简洁的接口供其他对象使用。

代理模式有以下几个优点:

  • 通过使用代理对象,可以对真实对象进行封装和控制,从而隐藏了真实对象的复杂性。
  • 可以通过代理对象实现一些额外的功能,如记录日志、缓存数据、实现懒加载等。
  • 代理模式符合单一职责原则,将对象的职责分离,使得每个对象都可以专注于自己的功能。