我有一個資料框,想檢查里面的值是否最有可能增加、減少或恒定。我下面的代碼檢查值是否嚴格增加,但是當 80% 的值增加/減少時我很好。最后一個值是否更高并不重要
Example_1 df = pd.DataFrame([1,2,3,5,5,6,7,8,9,10])
Output_1 df 正在增加
Example_2 df = pd.DataFrame([1,2,3,5,5,5,7,8,9,5])
Output_2 df 或多或少是恒定的,因為多于 2 個值沒有增加
Example_3 df = pd.DataFrame([1,2,3,4,5,6,7,8,5,5])
Output_3 df 正在增加,因為 9 個值中有 7 個在增加
import pandas as pd
df = pd.DataFrame([1,2,3,5,5,6,7,8,9,10])
diff = df[0] - df[0].shift(1)
increasing = (diff <= 0).sum() == 0
if increasing :
print ("increasing")
decreasing = (diff >= 0).sum() == 0
if decreasing :
print("decreasing")
if increasing == False and decreasing == False:
print("more or less constant")
uj5u.com熱心網友回復:
我想你可能會問如何在 python 中實作線性回歸?
嘗試:https : //docs.scipy.org/doc/scipy/reference/generated/scipy.stats.linregress.html
- 如果斜率是 ~0 不增加/減少。
- >0 增加。
- <0 遞減。
uj5u.com熱心網友回復:
據我了解,如果連續值之間超過 80% 的差異嚴格增加/減少,則系列正在增加/減少。
您應該通過稍微修改代碼來實作這一點:
import pandas as pd
df = pd.DataFrame([1,2,3,5,5,6,7,8,9,10])
diff = df[0] - df[0].shift(1)
increasing = (diff <= 0).sum() <= 0.2 * len(df)
if increasing :
print ("increasing")
decreasing = (diff >= 0).sum() <= 0.2 * len(df)
if decreasing :
print("decreasing")
if increasing == False and decreasing == False:
print("more or less constant")
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313010.html
上一篇:洗掉一列等于另一列的重復行
