python-3.x - 在数据帧时间序列中标记价格的突然变化并为其着色
问题描述
我有一个熊猫数据框,包含不同月份和年份(时间序列)的价格,80 列。我希望能够检测价格的显着变化,无论是上涨还是下跌,并在数据框中对它们进行不同的着色。这可能吗?最好的方法是什么?
Jan-2001 Feb-2001 Jan-2002 Feb-2002 ....
100 30 10 ...
110 25 1 ...
40 5 50
70 11 4
120 35 2
在第一列中应标记 40 和 70,在第二列中应标记 5 和 11,在第三列中不太确定,但可能是 1、50、4、2...
解决方案
您的问题涉及我可以看到的两个问题。
打印突出显示取决于您尝试使用的输出方法,无论是 STDOUT、文件还是某些特定程序。
基于列数据识别异常值。如果你想要它基于整个数据集很难解释,副列中的前一个数据就像一个滚动异常值,即计算前一个数据以确定下一个事情是否不正常。
在下面的实例中,我提供了一种方法,可以根据整个列中数据的平均值使用 std dev/zscoring 来处理数据。您将不得不调整 > < 项目以达到您想要的状态,处理这个概念有很多错综复杂的地方,我建议您查看一些关于这个主题的资源。
对于您的数据:
Jan-2001,Feb-2001,Jan-2002
100,30,10
110,25,1
40,5,50
70,11,4
120,35,20000
我知道要突出显示的方法,但不是在终端中。https://pandas.pydata.org/pandas-docs/stable/style.html方法适用于一些程序。
要获取原始项目,识别数据中的异常值,您可以使用如下所示的内容根据标准偏差和 zscore 进行识别。
示例代码:
df = pd.read_csv("full.txt")
original = df.columns
print(df)
for col in df.columns:
col_zscore = col + "_zscore"
df[col_zscore] = (df[col] - df[col].mean())/df[col].std(ddof=0)
print(df[col].loc[(df[col_zscore] > 1.5) | (df[col_zscore] < -.5)])
print(df)
输出 1: # 打印原始数据帧
Jan-2001 Feb-2001 Jan-2002
100 30 10
110 25 1
40 5 50
70 11 4
120 35 20000
输出 2: # 识别异常值
2 40
3 70
Name: Jan-2001, dtype: int64
2 5
3 11
Name: Feb-2001, dtype: int64
0 10
1 1
3 4
4 20000
Name: Jan-2002, dtype: int64
输出 3: # 打印创建的完整数据框,每个项目的 zscore 基于列
Jan-2001 Feb-2001 Jan-2002 Jan-2001_std Jan-2001_zscore \
0 100 30 10 32.710854 0.410152
1 110 25 1 32.710854 0.751945
2 40 5 50 32.710854 -1.640606
3 70 11 4 32.710854 -0.615227
4 120 35 2 32.710854 1.093737
Feb-2001_std Feb-2001_zscore Jan-2002_std Jan-2002_zscore
0 12.735776 0.772524 20.755722 -0.183145
1 12.735776 0.333590 20.755722 -0.667942
2 12.735776 -1.422147 20.755722 1.971507
3 12.735776 -0.895426 20.755722 -0.506343
4 12.735776 1.211459 20.755722 -0.614076
zscore 的资源在这里: https ://statistics.laerd.com/statistical-guides/standard-score-2.php
推荐阅读
- python - 如何将列表中的所有项目一一删除并在删除后同时打印
- c++ - 折叠表达式、参数包扩展、类成员函数中的递归
- javascript - 检查map中是否存在key
- java - 回滚多个服务
- crystal-reports - 如何在水晶报表中使用公式显示和隐藏 LineObject?
- c# - HttpClient - 任务被取消
- tomcat - Intellij-IDEA 可以在 tomcat 中启动和调试 jersey 应用程序,但是将战争部署到 tomcat 得到 404
- python-3.x - 在python中绘制数据后不显示X轴
- tomcat - 服务器上多个 tomcat 实例的 ansible 代码
- datetime - 与 Twig 的总日期