# 코드잇 데이터 사이언티스트 강의 듣는 중
<새로운 값 계산하기>
- 이건 그냥 벡터끼리 계산해서 새로운 변수 만들 수 있음
- 예제에서 비만율과의 연관성을 보기 위해서 허리 엉덩이 둘레 비율 변수를 새로 만든 것처럼 가능.
+ 심리학 연구에서는 거의 측정도구가 거의 검사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
- 숫자는 소수점 아래까지의 수를 의미함.
'Data Science > Pandas' 카테고리의 다른 글
[데이터 전처리] 날짜와 시간 데이터 타입 설정하기, datetime (0) | 2024.06.24 |
---|---|
[데이터 전처리] 데이터 구간화 cut() or apply(), 람다함수와 apply() (0) | 2024.06.21 |
[데이터 전처리] 대소문자 처리하기, 문자열 분리하기, 문자 제거하기 (0) | 2024.06.17 |
[데이터 전처리] 이상치outlier 찾기, 처리하기 (0) | 2024.06.17 |
[데이터 전처리] 중복값 duplicate value 찾기, 처리하기 (0) | 2024.06.17 |