Python 熊猫如何优雅地平滑股票数据?

Python 熊猫如何优雅地平滑股票数据?,python,pandas,Python,Pandas,我想平滑股票数据。它在开盘时忽略了日价差,使得整个时段的价格曲线平滑 让我举一个例子: [5]: df = pd.DataFrame([['20190101',2], ['20190101', 3], ['20190102',5], ['20190102', 4], ['20190103', 3], ['20190103', 2]], columns=['date', 'pric ...: e']) In [6]: df Out[6]: date price 0 20

我想平滑股票数据。它在开盘时忽略了日价差,使得整个时段的价格曲线平滑

让我举一个例子:

[5]: df = pd.DataFrame([['20190101',2], ['20190101', 3], ['20190102',5], ['20190102', 4], ['20190103', 3], ['20190103', 2]], columns=['date', 'pric
   ...: e'])

In [6]: df
Out[6]: 
       date  price
0  20190101      2
1  20190101      3
2  20190102      5
3  20190102      4
4  20190103      3
5  20190103      2
上面是一个股价数据框,我想要的是忽略开盘期间的价差

这意味着我想忽略的是20190101(3)中最后一个和20190102(5)中第一个之间的价格差异,3-5=-2

我的忽略方法是减去今天和昨天的差值,这意味着预期数据应该是:

 [8]: df
Out[8]: 
       date  price
0  20190101      3
1  20190101      3
2  20190102      3
3  20190102      2
4  20190103      2
5  20190103      1
20190102中的数据是原始数据(5,4)-2(今天和昨天的差异),所以是3,2

有什么好方法可以做到这一点吗?

试试这个:

#df = pd.DataFrame({'date':[20190101,20190101,20190102,20190102,20190103,20190103],'price':[2,3,5,4,3,2]})
df2 = pd.concat([df,df.shift()],axis=1)
df2.columns = ['date','price','date_1','price_1']
df2 = df2[df2.date!=df2.date_1]
df2 = df2.price-df2.price_1
df['adjustedprice'] = df.price.sub(df2,fill_value=0).astype(int)
第一个注释行是数据帧本身,如果需要,请取消注释

我们在这里所做的是创建一个辅助数据帧df2,带有一天的偏移量。通过这个单日偏移量,我们可以计算日差并检测日变化。我们两者都做了。首先,我们只过滤当天的第一个事件(使用
df2=df2[df2.date!=df2.date\u 1]
然后我们用
df2.price-df2.price_1
取差值,然后我们将那些只针对当天第一个价格过滤的值减去原始值。

请浏览、查看和了解此网站的工作原理,并帮助您改进当前和未来的问题,这可以帮助您更好地理解answers.“演示如何解决此编码问题?”与堆栈溢出无关。您必须诚实地尝试解决方案,然后询问有关实现的特定问题。堆栈溢出不是为了取代现有教程和文档。