Data Science/실습

DS 실습9~10-데이터전처리(정렬 및 변환-crosstab, sort_values, melt/ def)

에너지_2 2024. 12. 1. 23:12
728x90
반응형

 

9차시 데이터 전처리: 정렬 및 변환

정렬

- 특정 변수의 최대값, 최소값을 확인할 때 사용
- 시간 순서대로 데이터를 정렬할 때 활용 

 

Pandas - crosstab( )  교차분석(cross tabulations) 

: 범주형 변수로 되어있는 요인별로 교차분석(cross tabulations) 해서,

 행, 열 요인 기준 별로 빈도를 세어서 도수분포표교차표 를 만들어줌  (명목척도 - 교차분석)

 

- 데이터프레임의 두 변수의 원소 조합 빈도를 확인하는 함수

- normalize 설정으로 각 조합의 비율을 계산 = 정규화

      Q. workingday 가 아니면서 holiday가 아닌 날의 비율은?

- value , aggfunc 설정하면 빈도가 아닌 별도 산술연산 가능 -> groupby 와 유사한 기능도 있음

 

(3) crosstab 결과에 대한 분석

  (1) sum( 특정변수 조건 & 조건)  = (2) .loc 에 대한 결과 갯수 len

(1) , (2)
(4) crosstab 내, 변수 조건 가능

 

정규화 normalize 

normalize : bool, {'all', 'index', 'columns'}, or {0,1}, default False
    Normalize by dividing all values by the sum of values.

    - If passed 'all' or `True`, will normalize over all values.
    - If passed 'index' will normalize over each row.
    - If passed 'columns' will normalize over each column.
    - If margins is `True`, will also normalize margin values.

 

- 축 방향 지정

   normalize = 0 은 가로(row) 총 합이 1이다. ex) ['cut']이 Fair 인데, ['clarity'] IF 의 비율

   normalize = 1 은 세로(column)가  총 합이 1이다. ex)  ['clarity'] IF 인데, ['cut']이 Fair  의 비율

 

- 소수점 : .round(n)

- 백분율 : *100

 

 

value , aggfunc 설정하면 빈도가 아닌 별도 산술연산 가능 -> groupby 와 유사한 기능도 있음

- cut 별 clarity에 대한 price 의 평균  = groupby   ->  자료 결과 모양이 다를 뿐, 결과는 같음!

(1), (2)

더보기

value , aggfunc  좀 더 쉬운 예제

- data.fac_2 == 'c' & data.fac_1 == 'a'  ->  겹치는 게 없으니, sum 해도 NaN임. 따라서, 결측치 처리하여 0.

- data.fac_2 == 'd' 중 data.fac_1 == 'd' 인 것은 'id1' 3개가 있음. sum을 하여 'id1id1id1' 으로 리턴됨.

 

 

 

Pandas - sort_values( )

- 특정 변수를 기준으로 정렬하는 메서드. 어떤 변수는 오름/ 다른 변수는 내림차순으로 설정 가

- ascending 설정으로 오름차순/ 내림차순 설정 가능

- 두 변수 이상의 기준으로 정렬 시 리스트 형식으로 각 인자에 값 할당

 

Pandas -melt( ) 

- wide form -> long form Dataframe으로 자료구조를 변환하는 메서드

- id_vars 인자에 기준이 되는 변수를 지정하여 처리

- 통계, 머신러닝 실시 전에 데이터 구조를 맞추기 위해 주로 활용

 

(1)
(2) 길이 변화
(3) column 명 변경 방법

 

Pandas -pivot( )  피벗

- long form -> wide form 으로 변환

- index/ columns/ values 인자에 대상 변수를 지정하여 출력 데이터 구조 결정

- 데이터 요약, 군집분석 실시 전 데이터 전처리에 활용

 


( 반복 ! )

Q. workingday 가 아니면서 holiday가 아닌 날의 비율은? *bike.csv

더보기

pd.crosstab(bike['workingday'], bike['holiday'], normalize=True).round(2) 

Q. 가장 많은 데이터가 있는 세공 수준과 색상 조합순서대로 고르면? *diamonds.csv

더보기
(1) crosstab : "조합"
(2) reset_index (3) sort_values : "가장 많은", "순서대로"

Q. 세공(cut) 수준별 색상별 1캐럿당 가격의 평균을 구하고, 1캐럿당 가격이 가장 높은 세공수준과 색상 조합을 순서대로 고르면?  *diamonds.csv

더보기
(1) 먼저 '1캐럿당 가격' 변수를 신규 생성

 

(2) groupby: '세공(cut) 수준별 색상별' / mean : '1캐럿당 가격의  평균' (3) sort_values : '가장높은','순서대로'

 

10차시 데이터 전처리: 사용자 정의 함수 활용

def #함수명(#인자):
	#실행 코드
    return #반환값

 

- 시험에 잘 나오지는 않을 듯

 

728x90
반응형