首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能在Pandas上创建两个具有不同移动平均窗口的列?

在Pandas中,移动平均是一种常见的数据处理操作,它可以用于平滑时间序列数据或者计算滚动统计指标。然而,Pandas的移动平均函数只能应用于单个列,而不能直接创建具有不同移动平均窗口的多个列。这是因为Pandas的设计初衷是提供高效的数据处理和分析功能,而不是为每个特定的数据处理需求提供专门的函数。

如果你想要在Pandas上创建具有不同移动平均窗口的多个列,可以通过编写自定义函数来实现。以下是一个示例代码,展示了如何使用Pandas和NumPy来计算具有不同移动平均窗口的多个列:

代码语言:txt
复制
import pandas as pd
import numpy as np

# 创建一个示例DataFrame
data = {'A': [1, 2, 3, 4, 5],
        'B': [6, 7, 8, 9, 10]}
df = pd.DataFrame(data)

# 定义移动平均函数
def moving_average(data, window):
    weights = np.repeat(1.0, window) / window
    ma = np.convolve(data, weights, 'valid')
    return np.concatenate((np.full(window-1, np.nan), ma))

# 创建具有不同移动平均窗口的多个列
df['A_ma_2'] = moving_average(df['A'], 2)
df['A_ma_3'] = moving_average(df['A'], 3)
df['B_ma_2'] = moving_average(df['B'], 2)
df['B_ma_4'] = moving_average(df['B'], 4)

print(df)

输出结果如下:

代码语言:txt
复制
   A   B  A_ma_2  A_ma_3  B_ma_2  B_ma_4
0  1   6     NaN     NaN     NaN     NaN
1  2   7     1.5     NaN     6.5     NaN
2  3   8     2.5     2.0     7.5     NaN
3  4   9     3.5     3.0     8.5    7.50
4  5  10     4.5     4.0     9.5    8.25

在这个示例中,我们定义了一个moving_average函数来计算移动平均。然后,我们使用这个函数分别对AB列应用了不同的移动平均窗口,并将结果存储在新创建的列中。

需要注意的是,这种方法可能会导致计算效率较低,特别是当数据量较大时。如果需要频繁地进行不同窗口的移动平均计算,建议使用其他专门针对此类需求的库或工具,如NumPy、SciPy或者自定义的高性能函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用Python也能进军金融领域?这有一份股票交易策略开发指南

您将开发策略很简单:您可以创建两个独立简单移动平均线(SMA),它们具有不同回溯期,假设是40天和100天。...在您空signals DataFrame中创建一个名为signal,并将其行全都初始化为0.0。 在准备工作之后,是时候在各自长短时间窗口创建一组短和长简单移动平均线了。...接下来,不要忘记链接mean()函数,以便计算滚动平均值。 在计算了短期和长期窗口平均值后,当短移动平均线跨过长移动平均线时,您应该创建一个信号,但只能在该周期大于最短移动平均窗口期间创建信号。...请注意,您添加[short_window:]用以满足条件“只能在大于最短移动平均窗口期间”。当条件为真时,初始化为0.0signal将被1.0覆盖。一个“信号”被创建了!...接下来,你在DataFrame中创建了一个名为AAPL。在信号为1时候,短移动平均线跨越长移动平均线(大于最短移动平均窗口),你将购买100股。

2.9K40

Pandas 学习手册中文第二版:11~15

然后,Pandas 在结果中为两个对象中每一创建,然后复制值。...在堆叠格式中,数据通常规范化,并且在许多具有重复值,或者在逻辑应存在于其他表中值(违反了整洁数据另一个概念)。 取得以下数据,这些数据代表来自加速度计数据流。...从技术讲,熔化是将DataFrame对象整形为 格式过程,其中通过旋转variable标签来创建两个或更多,分别称为variable和value ,然后将数据从这些移到value适当位置...然后,来自.rolling()结果值可以具有许多调用不同方法之一,这些方法可以在每个窗口上执行计算。...为了演示,在本章前面创建随机游走第一分钟,我们将使用窗口 5 计算滚动平均值。

3.3K20

Python在Finance应用4 :处理股票数据进阶

欢迎来到Python for Finance教程系列第4部分。 在本教程中,我们将基于Adj Close创建烛形/ OHLC图,这将允许介绍重新采样和其他一些数据可视化概念。...因此,我们将创建自己OHLC数据,这也将使能够显示来自Pandas另一个数据转换: df_ohlc = df['Adj Close'].resample('10D').ohlc() 我们在这里所做创建一个基于...df ['Adj Close']新数据框,重新封装10天窗口,并且重采样是一个ohlc(开高低关闭)。...我们也可以用.mean()或.sum()做10天平均值或10天总和。请记住,这10天平均值是10天平均值,而不是移动平均值。...由于仅仅只要在Matplotlib中绘制,所以实际希望日期成为索引,可以这样做: df_ohlc = df_ohlc.reset_index() 现在日期只是一个普通

1.9K20

用一行Python代码创建高级财务图表

该图表看起来像一系列砖块,当价格移动指定价格金额时会创建一个新砖块,并且每个块都与前一个砖块成 45 度角(向上或向下)。...据我所知,mplfinance 是唯一提供 Renko 图表 Python 库,也是我们接下来要看到,这就是为什么这个包在金融可视化方面具有强大优势原因。...代码如下所示: mf.plot(amzn, type = 'pnf') 点数图 添加更多信息 mplfinance 包不仅限于生成不同类型图表,还使我们能够通过添加简单移动平均线 (SMA) 和交易量等附加指标使这些图表更具洞察力...对于那些不知道这两者的人来说,成交量是交易者在特定时间范围内买卖股票数量,而简单移动平均线 (SMA) 只不过是特定时间段平均价格。它是一种技术指标,广泛用于创建交易策略。...下一个方法是使用mav我们可以添加任意数量具有不同回顾期 SMA参数。

1.4K20

14个pandas神操作,手把手教你写代码

01 Pandas是什么 很多初学者可能有这样一个疑问:“想学是Python数据分析,为什么经常会被引导到Pandas上去?”虽然这两个东西都是以P开头,但它们并不是同一个层面的东西。...Pandas命名跟熊猫无关,而是来自计量经济学中术语“面板数据”(Panel data)。面板数据是一种数据集结构类型,具有横截面和时间序列两个维度。...; 数据转置,如行转列、转行变更处理; 连接数据库,直接用SQL查询数据并进行处理; 对时序数据进行分组采样,如按季、按月、按工作小时,也可以自定义周期,如工作日; 窗口计算,移动窗口统计、日期移动等...: df.groupby('team').sum() # 按团队分组对应列相加 df.groupby('team').mean() # 按团队分组对应列求平均 # 不同不同计算方法 df.groupby...图5 按team分组后求平均不同计算方法聚合执行后效果如图6所示。 ?

3.3K20

GPT4做数据分析时间序列预测之四相当棒2023.5.25

1、把6个时间序列预测方法python代码合并。 程序设置为数据读取、数据预测、数据保存3个步骤。 不同数据预测方法保存在同一个excel不同。...我们在一个循环中进行预测,每次迭代都会对不同时间窗口进行预测。我们将使用pandasExcelWriter对象来将所有的预测结果保存到同一个Excel文件中。...每次迭代都会对一个不同时间窗口进行预测,并将预 3、 根据您需求,以下是将这三种预测方法(SARIMAX、Prophet、ARIMA)合并到一个程序中,并将预测结果保存到Excel文件不同代码...另一种方法) 根据您需求,将这些方法代码合并,并将预测结果保存到Excel文件不同中。...这两个函数不能同时使用,应该只选用一个。plt.show() 会显示图像窗口,如果同时使用 plt.savefig() 保存图像,该图像窗口会被保存,导致保存图像为空白。

36420

用一行Python代码创建高级财务图表

该图表看起来像一系列砖块,当价格移动指定价格金额时会创建一个新砖块,并且每个块都与前一个砖块成 45 度角(向上或向下)。...据我所知,mplfinance 是唯一提供 Renko 图表 Python 库,也是我们接下来要看到,这就是为什么这个包在金融可视化方面具有强大优势原因。...代码如下所示: mf.plot(amzn, type = 'pnf') 点数图添加更多信息 mplfinance 包不仅限于生成不同类型图表,还使我们能够通过添加简单移动平均线 (SMA) 和交易量等附加指标使这些图表更具洞察力...对于那些不知道这两者的人来说,成交量是交易者在特定时间范围内买卖股票数量,而简单移动平均线 (SMA) 只不过是特定时间段平均价格。它是一种技术指标,广泛用于创建交易策略。...下一个方法是使用mav我们可以添加任意数量具有不同回顾期 SMA参数。

1.2K30

Pandas处理时间序列数据20个关键知识点

举几个例子: 一段时间内股票价格 每天,每周,每月销售额 流程中周期性度量 一段时间内电力或天然气消耗率 在这篇文章中,将列出20个要点,帮助你全面理解如何用Pandas处理时间序列数据。...将数据格式转换为时间序列数据 to_datetime函数可以将具有适当数据名称转换为时间序列。...创建一个具有指定时区时间序列 我们还可以使用tz关键字参数创建带有时区时间序列对象。...Shift vs tshift 移动:移动数据 tshift:移动时间索引 让我们创建一个带有时间序列索引dataframe,并绘制它以查看shift和tshift之间区别。...滚动意味着创建一个具有指定大小滚动窗口,并对该窗口数据执行计算,当然,该窗口将滚动数据。下图解释了滚动概念。 值得注意是,计算开始时整个窗口都在数据中。

2.7K30

有比Pandas 更好替代吗?对比Vaex, Dask, PySpark, Modin 和Julia

将在具有16GB RAM4核笔记本电脑上进行这些操作。...分组并计算总和和平均值 sorting—对合并数据集进行3次排序(如果库允许) ?...甚至官方指导都说要运行并行计算,然后将计算出结果(以及更小结果)传递给Pandas。 即使尝试计算read_csv结果,Dask在测试数据集也要慢30%左右。...这就是为什么任何代码第一次运行都比后续运行花费更长时间原因。 在下面的图表中,您可以看到第一次运行时间明显长于其余六次测量平均值。...还尝试过在单个内核(julia)和4个处理器内核(julia-4)运行Julia。 ? 通过将环境变量JULIA_NUM_THREADS设置为要使用内核数,可以运行具有更多内核julia。

4.5K10

智能分析:ChatGPT+Excel+Python超强组合玩转数据分析

图1所示工作表中A-C不同班学生考试成绩,要求计算各班学生考试成绩平均分。这是一个分组统计问题。...运行脚本,在IDLE Shell窗口输出各班平均成绩。...处理完后,最终序号添加在第G,变量名为“排名”。给代码添加注释。 为什么会有这么明显差异呢? 笔者考虑主要有两点原因。...大量实战标明,ChatGPT生成pandas代码成功率很高,大多数情况下代码不需要修改就可以解决问题。而另外两个包用ChatGPT生成代码运行时常常出错。...Pandas包处理数据速度很快,代码简洁,支持大型数据,但是它不支持Excel对象模型,不能在pandas中直接读取Excel工作表指定单元格区域中数据或者将数据写入指定单元格区域。

64710

使用 Python 进行财务数据分析实战

另外,使用 np.log() 函数计算了每日对数收益,并将结果数据框打印出来。这段代码提供了苹果股票每日收益两个不同角度。...hist() 方法,创建一个具有 50 个间隔直方图。...首先设置了两个变量,分别代表短期和长期移动平均线长度。 接下来,初始化一个DataFrame来包含信号,其中一表示信号,另一表示位置。...代码会计算并将短期和长期移动平均线加入到信号DataFrame各自中。 最后,通过比较这两个移动平均线来生成交易信号,如果短期大于长期,就将信号设为1.0。...在子图中,使用红色绘制苹果公司股票收盘价,并加入两条移动平均线。在买入信号处添加符号^,在卖出信号处添加符号v,这两个符号均位于短移动平均线顶部。最终图表将显示在窗口中。

18010

Python在Finance应用3:处理股票数据基础

简单移动平均(英语:simple moving average,SMA)是某变数之前n个数值未作加权算术平均。例如,收市价10日简单移动平均指之前10日收市价平均数。...Pandas 模块实现上述功能十分简单,例如100日均 df['100ma'] = df['Adj Close'].rolling(window=100).mean() 这里df ['100ma']等同于应用移动平均方法创建...df ['Adj Close']窗口时间为100,并且进行求平均操作。...在100ma下,只看到NaN。我们选择了100个移动平均线,理论需要100个之前数据点进行计算,但是在这里却没有任何数据在前100行。 NaN意思是“Not a Number”。...这里我们想要创建两个子图,而这两个子图都将像6x1网格一样,有6行1。第一个子图从该网格(0,0)开始,跨越5行,并跨越1。下一个轴也在6x1网格,但是从(5,0)开始,跨越1行和1

70510

特征工程:Kaggle刷榜必备技巧(附代码)!!!

这是一个相当好玩玩具数据集,因为具有基于时间以及分类和数字。 如果我们要在这些数据创建特征,我们需要使用Pandas进行大量合并和聚合。 自动特征工程让我们很容易。...在我们session_df表中,我们有一个名为device,它包含三个级别——桌面、移动设备或平板电脑。我们可以使用以下方法从这样中获取两: ?...它与二进制编码器不同,因为在二进制编码中,两个或多个俱乐部参数可能是1,而在哈希散中只有一个值是1。 我们可以像这样使用哈希散: ? ? 一定会有冲突(两个俱乐部有相同编码。...在这种情况下,我们可以使用不同分类变量平均目标变量作为特征。 在泰坦尼克中,我们可以在乘客舱变量创建目标编码特征。 在使用目标编码时,我们必须小心,因为它可能会导致我们模型过度使用。...但是在特征工程方面肯定没有限制,只有你想象力限制了你。 在这一点,我们总是在心里考虑特征工程同时考虑将要使用模型。在随机森林中工作特征可能在逻辑回归中无法很好工作。

4.9K62

Pandas学习笔记之时间序列总结

关键词:pandas NumPy 时间序列 Pandas 发展过程具有很强金融领域背景,因此你可以预料是,它一定包括一整套工具用于处理日期、时间和时间索引数据。...重新取样、移动窗口 使用日期和时间作为索引来直观组织和访问数据能力,是 Pandas 时间序列工具重要功能。...因为 Pandas 是在金融背景基础发展而来,因此它具有一些特别的金融数据相关工具。...Pandas两个很接近方法来实现时间移动:shift()和tshift。简单来说,shift()移动是数据,而tshift()移动是时间索引。两个方法使用移动参数都是当前频率倍数。...上图结果中锯齿图案产生原因是窗口边缘硬切割造成。我们可以使用不同窗口类型来获得更加平滑结果,例如高斯窗口

4.1K42

超级攻略!PandasNumPyMatrix用于金融数据准备

pandas pandas 是基于NumPy 一种工具,该工具是为解决数据分析任务而创建Pandas 纳入了大量库和一些标准数据模型,提供了高效地操作大型数据集所需工具。...对于dataframe而言,指定要计算滚动窗口。值为列名。 axis: int、字符串,默认为0,即对进行计算 closed:定义区间开闭,支持int类型window。...alpha float, optional 直接地指定平滑系数 , min_periods int, default 0 窗口具有最小观察数(否则结果为NA)。...adjust bool, default True 调整,在开始期间除以递减调整因子,以解决相对权重不平衡问题(将EWMA视为移动平均值)。...例如,该系列EW移动平均值 将会 当adjust=False为时,将以递归方式计算指数加权函数: ignore_na bool, default False 计算权重时忽略缺失值;指定

7.2K30

核密度估计和非参数回归

为此,你可以计算窗口为b个月移动平均线,也就是说,对于每一个时刻t,你计算从t-b到t+b时间段内需求平均值。...更正式地说,如果我们有一段时间内观察到数据X(1),…,X(n),即一个时间序列,窗口为b移动平均值可以定义为 ? 从下图(图2)中可以看出,移动平均值是原始数据平滑版本,平滑程度取决于带宽。...减轻此问题可能解决方案是为观察值赋予不同权重,从而计算加权平均值而不是简单平均值。 理论讲,接近时间t观测比更远观测更重要,并且权重更大。...我们可以将加权移动平均值归纳如下:令b为带宽,K为核,即具有某些其他性质函数,例如非负[K(x)≥0]对称性[K(x)= K (-x)]和归一化[K积分为1]。...注意,简单移动平均估计量本身是具有统一核K(x)= 1/2核估计量。

1.6K30
领券