자신에게 친절할 것 :)

Data Science/Pandas

[데이터 전처리] 새로운 값 계산하기, 정규화, 표준화, 과학적 표기법

Tashapark 2024. 6. 20. 23:22
728x90
반응형

# 코드잇 데이터 사이언티스트 강의 듣는 중


 

<새로운 값 계산하기>

- 이건 그냥 벡터끼리 계산해서 새로운 변수 만들 수 있음

- 예제에서 비만율과의 연관성을 보기 위해서 허리 엉덩이 둘레 비율 변수를 새로 만든 것처럼 가능. 

+ 심리학 연구에서는 거의 측정도구가 거의 검사survey였기 때문에,

벡터끼리 계산해서 각 척도 별 총점 혹은, 하위 척도의 총점을 구했고, 당연히 그걸 활용해서 통계를 돌렸음. 

 

patient_df['waist']/patient_df['hip']

 

--> 수를 확인하기가 어려움. 

 

 

 

 

 

 

- 반올림

- round(값, 자리 수) 

#둘째 자리까지 반올림
round(patient_df['waist']/patient_df['hip'], 2)

 

--> 소수점 둘째 자리까지 반올림 된 것. 

 

 

 

 

 

 

 

- 걍 벡터 만들어서 넣어주면 됨. 

patient_df['waist_hip_ratio'] = round(patient_df['waist']/patient_df['hip'], 2)

 

 


<정규화 Normalization>

- 스케일링 scaling: 숫자 데이터의 단위나 범위를 일정하게 맞추는 것

 

--> 키 차이를 0.3m로 쓰면, 마치 몸무게의 3kg 차이가 키보다 크게 차이가 난다고 느껴질 수 있음. 그런데 사실 30cm/0.3m 차이가 훨씬 큰 값임.   

 

- so, 스케일링으로 데이터의 규모를 맞춰주는 것. 

- 정규화와 표준화가 있음. 

 

- 정규화  nomalization

 

- 데이터를 0 ~ 1사이의 값으로 바꾸는 것 

- 최소/최댓 값을 활용하기에 Min Max Normalization /  Min Max Scaling이라고도 함. 

- so, 데이터 범위를 통일하고 싶을 때 사용

 

 

 

 

--> 예시임.

 

 

 

 

 

 

 

 

 

 

--> 항상 최솟값은 0이고, 최대값은 1로 맞춰짐. 

 

 

 

 

 

 

 

 

 

 

- 이를 height에 적용하면 아래임. 반드시 계산이 삑사리 나지 않게 우선순위에 따라서 ()를 해줄 것!

(patient_df['height'] - patient_df['height'].min()) / 
(patient_df['height'].max() - patient_df['height'].min())

 

--> 신택스 에러가 뜸. 

--> 길어서 엔터 쳐준 건데 파이썬에서는 이렇게 하면 못 읽음. 

 

 

- \ 백슬래쉬를 써서 개행(줄바꿈)을 해줌 

patient_df['height'] = (patient_df['height'] - patient_df['height'].min()) / \
(patient_df['height'].max() - patient_df['height'].min())

 

--> height  값이 바뀐 것 확인 가능.

 

 

 

 

 

 

- .describe()로 확실히 정규화가 되었는 지 확인해둘 것. 

patient_df['height'].describe()

 

--> 최대값은 1, 최소값은 0이라서 정규화가 잘 되었다는 것을 확인 가능. 

 

 

 

 

 

 


<표준화 Standardization / standard scaling>

각 값이 평균에 비해 얼마나 크거나 작은지 나타내는 것 

- 평균은 0, 분산 1로 변환 

- 각 데이터가 평균에서 얼만큼 떨어져 있는지 비교할 때 좋음. 

 

 

--> 처음 배우면 헷갈릴 수 있긴 하지만, 그래도 정확한 기호를 써주는 게 뒤에서 이해하기가 좋음 

--> 아래 참고

 

 

 

 

+ --> 정규분포의 표준화 공식

--> 위의 설명과 정확히 같음. 

--> 모집단 기준으로 뮤와 시그마를 써줌. 

 

 

--> 표준 편차 : 편차 제곱합/n에 루트 씌움

--> 분산: 편차 제곱합/n

 

 

 

 

 

 

--> 예시의 키 표준화한 값

--> Z-Score: 데이터가 평균으로부터 얼마나 떨어져 있는지 나타내는 값. 

 

 

 

 

 

--> 평균과의 거리를 표준편차를 기준으로 표현

 

 

 

 

 

 

 

 

(patient_df['height'] - patient_df['height'].mean()) / patient_df['height'].std()

 

-->표준화된 값(z- score)

 

 

 

 

 

 

patient_df['height'].describe()

 

--> 과학적 표기법으로 나타냄. 

--> e는 10을 의미하고 뒤의 숫자는 제곱의 갯수를 의미함

--> -는 분수 값을 제곱해줬다는 것을 나타냄. 

 

 

 


 

<과학적 표기법 scientific notation>

- 큰 수를 표기할 때 주로 사용. 더 간결함 

--> 1 ≤ m 절대값 < 10, 0이 아닌 실수 

--> n (지수, exponent) 

 

-  예, count는 3.48 X 10^2,

- mean은 -9.034918 X 10^-16 -> 이건 너무 작아서 거의 0에 가깝다고 봐야 함.

pd.options.display.float_format = '{:.6e}'.format

 

- 숫자는 소수점 아래까지의 수를 의미함. 


<고정 소수점 표기법 fixed point notation>

- 일반적으로 우리가 쓰는 것. 

- 소수점 아래 수를 고정시켜 놓는 방식. 

- 위의 예를 고정 소수점 표기법으로 바꾸면, 

 

--> 더 길어짐 

so, 위의 방법에 익숙해지자. 

 

 

 

 

pd.options.display.float_format = '{:.6f}'.format

 

- 숫자는 소수점 아래까지의 수를 의미함. 

 

728x90
반응형