Jin's Dev Story

[Python] DataFrame 그룹 본문

Programming Language/Python

[Python] DataFrame 그룹

woojin._. 2024. 6. 13. 09:01

데이터프레임 그룹 생성

  • pandas의 groupby() 연산자를 사용하여 집단, 그룹별로 데이터를 집계 및 요약 할 수 있음
  • dataframe을 지정한 그룹으로 나누고, 각 그룹별로 집계함수를 적용하고, 그룹별 집계 결과를 하나로 합치는 과정을 거침
abalone_src = base_src + '/abalone.data'

데이터 읽어오기

  • header : none인 경우 헤더를 가져오지 않겠다는 의미
  • sep : 어떤 구분자를 통해 데이터를 구분할 것인지
  • names : 컬럼명
abalone_df = pd.read_csv(abalone_src, header=None, sep=',',names=['sex','length','diameter','height', 
                  'whole_weight','shucked_weight','viscera_weight', 
                  'shell_weight','rings'])
abalone_df

데이터 shape 확인

  • row : 4177, column : 9
  • 딥러닝(CNN) ⇒ 이미지 (데이터수, 가로, 세로, 색)
  • 딥러닝(RNN) ⇒ 텍스트, 시게열 (데이터수, 시간, 세로)
  • 데이터 행과 열이 얼마나 있는지 확인하기 위해 사용
# 데이터 shape를 확인
abalone_df.shape

데이터 결측값 확인

  • isnull()만 있는 경우 불린 형태로 가져오기 때문에 sum() 같이 사용

  • sum 한 번 사용 시
abalone_df.isnull().sum()

  • sum 두 번 사용 시
abalone_df.isnull().sum()

결측치를 특정 값으로 채우기

  • 0으로 채운 예제
# 결측치를 특정 값으로 채우기
zero_abalone_df = nan_abalone_df.fillna(0)
zero_abalone_df

  • 평균 값으로 채운 예제
# 결측치를 결측치가 속한 컬럼의 평균값으로 대체하기
nan_abalone_df.mean()
nan_abalone_df.fillna(nan_abalone_df.mean())

기술 통계 확인

# 기술통계 확인 => 연속형 변수만 확인 가능 => numerical 변수만 확인 가능
abalone_df.describe()

집계

# 전복(abalone) 성별에 따라 groupby함수를 통해 집계하기
#         DataFrame[집계 변수].groupby(DataFrame[집계 대상])
grouped = abalone_df['whole_weight'].groupby(abalone_df['sex'])
# 합계
grouped.sum()

grouped.mean()

# 개수
grouped.size()

성별에 따른 전체 변수에 대한 집계

# 그룹변수가 하나가 아닌, 전체 연속형 변수에 대한 집계
abalone_df.groupby(abalone_df['sex']).mean()

# 다음과 같이 간단하게 표현
abalone_df.groupby('sex').mean()

새로운 조건에 맞는 변수 추가

# 새로운 조건에 맞는 변수 추가
abalone_df['length_bool'] = np.where(abalone_df['length']>abalone_df['length'].median(), 
                                     'length_long', # True일 경우
                                     'length_short') # False일 경우

그룹 변수 2개 이상 선택하여 총계 처리

# 그룹변수를 2개 이상 선택해서 총계 처리?
abalone_df.groupby(['sex', 'length_bool']).mean()

  • 간결 표현
# 간결하게 표현 가능
abalone_df.groupby(['sex', 'length_bool'])['whole_weight'].mean()

 

'Programming Language > Python' 카테고리의 다른 글

[Python] Matplotlib과 Seaborn라이브러리를 활용한 데이터 시각화  (0) 2024.06.13
[Python] apply 함수  (0) 2024.06.13
[Python] DataFrame  (0) 2024.06.13
[Python] iloc와 loc  (0) 2024.06.13
[Python] Pandase(판다스)  (0) 2024.06.13