본문 바로가기
파이썬

파이썬 Pandas - Compute z-score for all columns

by º기록 2020. 12. 12.
반응형

단일 ID 열을 포함하는 데이터 프레임이 있고 다른 모든 열은 z 점수를 계산하려는 숫자 값입니다. 다음은 하위 섹션입니다.

ID      Age    BMI    Risk Factor
PT 6    48     19.3    4
PT 8    43     20.9    NaN
PT 2    39     18.1    3
PT 9    41     19.5    NaN


df['zscore'] = (df.a - df.a.mean())/df.a.std(ddof=0)

이 솔루션을 ID 열을 제외한 모든 열에 적용하여 Excel 파일로 저장할 수있는 새 데이터 프레임을 생성하는 데 관심이 있습니다.

df2.to_excel("Z-Scores.xlsx")

그래서 기본적으로; NaN 값을 무시하고 각 열에 대한 z- 점수를 계산하고 모든 것을 새 데이터 프레임으로 푸시하려면 어떻게해야합니까?

SIDENOTE : 팬더에는 "인덱싱"이라는 개념이 있는데, 제가 그것을 잘 이해하지 못하기 때문에 저를 위협합니다. 인덱싱이이 문제를 해결하는 데 중요한 부분이라면 인덱싱에 대한 설명을 무시하십시오.

 

해결 방법

 

열에서 목록을 작성하고 Z 점수를 계산하지 않을 열을 제거합니다.

In [66]:
cols = list(df.columns)
cols.remove('ID')
df[cols]

Out[66]:
   Age  BMI  Risk  Factor
0    6   48  19.3       4
1    8   43  20.9     NaN
2    2   39  18.1       3
3    9   41  19.5     NaN
In [68]:
# now iterate over the remaining columns and create a new zscore column
for col in cols:
    col_zscore = col + '_zscore'
    df[col_zscore] = (df[col] - df[col].mean())/df[col].std(ddof=0)
df
Out[68]:
   ID  Age  BMI  Risk  Factor  Age_zscore  BMI_zscore  Risk_zscore  0  PT    6   48  19.3       4   -0.093250    1.569614    -0.150946   
1  PT    8   43  20.9     NaN    0.652753    0.074744     1.459148   
2  PT    2   39  18.1       3   -1.585258   -1.121153    -1.358517   
3  PT    9   41  19.5     NaN    1.025755   -0.523205     0.050315   

   Factor_zscore  
0              1  
1            NaN  
2             -1  
3            NaN  

 

참조 페이지 https://stackoverflow.com/questions/24761998

 

 

반응형

댓글