W13: 5/09 === ### 吉尼係數做法 ``` dfLorenz=dfIncome[:] se=dfLorenz[‘Income’].sort_values() #家戶收入 incomes=[0] #戶數累積百分比 cumulativePercentage=[0] #所得累積百分比 cumulativeSum=[0] #戶數 n=se.count() #全體總收入 sum=se.sum() #暫存變數 cum=0 pr=0; for _income in se: incomes.append(_income) pr+=1 cum+=_income cumulativePercentage.append(pr/n) cumulativeSum.append(cum/sum) #計算曲線下的面積 #用integral代表面積 integral=0 for i in range(1,n+1): #計算圖中10個梯型的面積 #梯型面積計算公式:(上底+下底)高2 #程式碼為 (cumulativeSum[i-1]+cumulativeSum[i])(1/n)/2 #說明: #(cumulativeSum[i-1]+cumulativeSum[i])>(上底+下底) #(1/n)>高 integral+= (cumulativeSum[i-1]+cumulativeSum[i])(1/n)/2 #畫出10個梯型給同學參考 #plt.plot([cumulativePercentage[i],cumulativePercentage[i]],[0,cumulativeSum[i]]) #第一種算法的吉尼係數 gini=(0.5-integral)/0.5 print(f’第一種算法的吉尼係數={gini:.8f}') #繪製全部人收入都一樣的情況 plt.plot([0,1],[0,1]) #繪製散佈圖 plt.plot(cumulativePercentage,cumulativeSum) #plt.scatter(x=cumulativePercentage,y=cumulativeSum,s=0.1) plt.xlabel(u’戶數累積百分比’) #x座標說明 plt.ylabel(u’所得累積百分比’) #y座標說明 plt.axis(‘square’) plt.xlim(0,1) plt.ylim(0,1) print(‘羅倫茲曲線(Lorenz curve)’) plt.show() ``` --- ### 作業 1. 球員收入、Gini([Excel](https://docs.google.com/spreadsheets/d/1-cX6hw91d8p5SsvVE8BFo_pCqkUsdjiaxPhIZwoTy0Y/edit#gid=0),[Colab](https://colab.research.google.com/drive/1eMl1yx_CE4B4T7ecMBTkgB6f2E9lqnsq)) 2. [期末專題](https://colab.research.google.com/drive/1ZY8k0L0_K_7JH6UPy0ntfMRT6H2bwlnW#scrollTo=9S7YmdMfc-Yk)