用熊貓解決
我有這個資料集,這是一個問題:對于用戶選擇的公共交通型別,顯示年份和平均出行距離,其中平均值比上一年下降了至少 5%。
Year MRT LRT Bus Taxi
0 2004 11.5 0.0 5.2 8.5
1 2005 11.5 0.0 5.4 8.8
2 2006 11.3 0.0 5.3 9.1
3 2007 11.2 0.0 5.3 9.7
4 2008 11.2 2.1 5.3 9.0
5 2009 10.8 2.1 5.1 9.0
6 2010 10.3 2.1 4.8 9.3
7 2011 10.0 2.0 4.5 9.6
8 2012 9.6 1.0 4.4 9.7
9 2013 9.5 2.0 4.3 9.8
10 2014 9.2 2.0 4.3 10.0
例如。如果我選擇“總線”:為了更輕松地可視化該資料列:
Year Bus
0 2004 5.2
1 2005 5.4
2 2006 5.3
3 2007 5.3
4 2008 5.3
5 2009 5.1
6 2010 4.8
7 2011 4.5
8 2012 4.4
9 2013 4.3
10 2014 4.3
對比2005年資料和2004年資料,如果下降超過5%,如果是列印出來,如果不是,繼續掃描。
預期產出: “2010 年,資料為 4.8,與上一年相比下降了 5% 以上”(注:5.1 * 0.95 = 4.85)
“2011 年的資料為 4.5,與上一年相比下降了 5% 以上”(注:4.8 * 0.95 = 4.56)
我正在考慮一個 for 回圈,但我不太確定如何使用它來比較 5% 的遞減量。
uj5u.com熱心網友回復:
您可以添加一個列(每種運輸方式)以獲取您的條件值:
df['hasDecreasedMarkedly'] = (df['Bus'] - df['Bus'].shift(1))/df['Bus'] >= 0.05
uj5u.com熱心網友回復:
您可以使用熊貓 .pct_change()。
import pandas as pd
df = pd.DataFrame({'Year': {0: 2004,
1: 2005,
2: 2006,
3: 2007,
4: 2008,
5: 2009,
6: 2010,
7: 2011,
8: 2012,
9: 2013,
10: 2014},
'Bus': {0: 5.2,
1: 5.4,
2: 5.3,
3: 5.3,
4: 5.3,
5: 5.1,
6: 4.8,
7: 4.5,
8: 4.4,
9: 4.3,
10: 4.3}})
df['pct_change']= df['Bus'].pct_change()
df['5 pct change'] = df['pct_change'] < -0.05
輸出:
Year Bus pct_change 5 pct change
0 2004 5.2 NaN False
1 2005 5.4 0.038462 False
2 2006 5.3 -0.018519 False
3 2007 5.3 0.000000 False
4 2008 5.3 0.000000 False
5 2009 5.1 -0.037736 False
6 2010 4.8 -0.058824 True
7 2011 4.5 -0.062500 True
8 2012 4.4 -0.022222 False
9 2013 4.3 -0.022727 False
10 2014 4.3 0.000000 False
要列印出您的請求,“如果下降超過 5%,如果是,則列印出來,如果不是,請繼續掃描”,您可以這樣做。
(print(df.loc[df['5 pct change'] == True]))
列印這個:
Year Bus pct_change 5 pct change
6 2010 4.8 -0.058824 True
7 2011 4.5 -0.062500 True
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/436261.html
