# 0509
### 球星收入作業
https://colab.research.google.com/drive/11I7-NYVEK_p56rXbGU8S4u_cbUSc3Pbi
```
!wget -O TaipeiSansTCBeta-Regular.ttf https://drive.google.com/uc?id=1eGAsTN1HBpJAkeVM57_C7ccp7hbgSz3_&export=download
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.font_manager import fontManager
# 改style要在改font之前
# plt.style.use('seaborn')
fontManager.addfont('TaipeiSansTCBeta-Regular.ttf')
mpl.rc('font', family='Taipei Sans TC Beta')
```
```
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dfIncome = pd.read_excel('/content/drive/MyDrive/__DataSet/001_Income_test.xlsx')
dfIncome
讀取參考檔案
```
### 計算吉尼係數的作法(一)
```
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
print("x軸:",cumulativePercentage)
print("y軸:",cumulativeSum)
for i in range(1,n+1):
#計算圖中梯型的面積
#梯型面積計算公式:(上底+下底)*高*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個梯型給同學參考
# x = x[i]到x[i] , y = 0到y[i]
plt.plot([cumulativePercentage[i],cumulativePercentage[i]],[0,cumulativeSum[i]])
#第一種算法的吉尼係數
#下圖為一個正方形大小為1*1,要計算的地方只有期中的一半 = 0.5
#一半的正方形-每個不同顏色梯形面積總和/一半的正方形(可參照標準吉尼係數公式)
gini=(0.5-integral)/0.5
print(f'第一種算法的吉尼係數={gini:.4f}')
#繪製全部人收入都一樣的情況
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()
x軸: [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
y軸: [0, 0.01, 0.03, 0.06, 0.1, 0.15, 0.21, 0.29, 0.4, 0.6, 1.0]
第一種算法的吉尼係數=0.5300
羅倫茲曲線(Lorenz curve)
```

### 計算吉尼係數的作法(二)
```
#第二種為積分,利用積分算出上方圖每個不同顏色梯形面積總和,再套入標準吉尼係數公式
gini=(0.5-np.trapz(x=cumulativePercentage,y=cumulativeSum))/0.5
print(f'第二種算法的吉尼係數={gini:.4f}')
第二種算法的吉尼係數=0.5300
```
### 計算吉尼係數的作法(三)
```
avg=0
s=0
#========請看圖1
for i in range(1,n+1):
s+=incomes[i]
#收入平均
avg=s/n
s1=(n+1)*s
#===========================
#==========請看圖2
s=0
for i in range(1,n+1):
s+=(n-i+1)*incomes[i]
s2=2*s
#=================
#============原圖g公式
g=(2/(n*(n-1))) * (s1-s2)
#=========原圖G(Y)公式
gini=g/(2*avg)
print(f'第三種算法的吉尼係數={gini:.4f}')
第三種算法的吉尼係數=0.5889
```

```
用excel製作羅倫茲曲線還有計算吉尼斯係數在應用到程式裡面
```
#### 心得
```
excel不熟練要多加練習,老師上課速度好快會有點追不上,所以自己要加強練習才會熟練
```