데이터분석 study/데이터 전처리&시각화

TIL_24.07.19_데이터 전처리3

justdata 2024. 7. 19. 20:45

▶ 데이터 병합

    ● concat() 함수 

         - axis : 연결하고자 하는 축(방향)을 지정

                     기본 값은 0으로 , 위 아래로 연결하는 경우에 해당,

                     1로 설정하면 좌,우로 연결

# 두 개의 데이터프레임을 생성했다고 가정하고

# 위 아래로 데이터프레임 연결
result_vertical = pd.concat([df1,df2], axis = 0)

# 좌우로 데이터프레임 연결
result_horizontal = pd.concat([df1, df2], axis = 1)

 

    ● merge() 함수

        ○ left 와 right : 병합할 데이터 프레임 중 병합되는 기준이 되는 

             왼쪽과 오른쪽 데이터 프레임

 

        ○ how : 병합 방법을 나타내는 매개변수로, 'inner', 'outer','left', 'right'

                   - inner : 공통된 키(열)를 기준으로 교집합을 만든다.

                   - outer : 공통된 키를 기준으로 합집합을 만든다.

                   - left : 왼쪽 데이터프레임의 모든 행을 포함하고 오른쪽 데이터 프레임은

                              공통된 키에 해당하는 행만 포함

                   - right : 오른쪽 데이터프레임의 모든 행을 포함하고 왼쪽 데이터프레임은

                                공통된 키에 해당하는 행만 포함

 

        ○ on : 병합 기준이 되는 열 이름(혹은 열 이름의 리스트)을 지정한다.

                  - left_on과 right_on : 왼쪽 데이터프레임과 오른쪽 데이터 프레임에서

                     병합할 열 이름이 다른 경우에 사용

 

         - 예시)

#left_df 와 right_df 두 개의 데이터 프레임 생성 했다고 가정

merge_df = pd.merge(left_df, right_df, on = 'key', how = 'inner')

                      

데이터 집계

   ● group by ()

        - 데이터 프레임을 특정 기준에 따라 그룹으로 나누어 집계, 변환, 필터링 등을

           할 수 있다.

            1) 그룹 생성 : 기준 열(혹은 열들)을 지정하여 데이터프레임을 그룹으로

                                   나눈다.

            2) 그룹에 대한 연산 수행 : 그룹 단위로 원하는 연산(평균, 합, 개수 등)을

                                                      수행한다.

            3) 결과 결합 : 각 그룹의 연산 결과를 하나의 데이터 프레임으로 결합하여

                                   새로운 데이터프레임을 생성한다.

 

예시코드)

#df 샘플데이터(딕셔너리라고 가정) 생성 가정

grouped_multiple = df.groupby(['category', 'subcategory']).sum()
#'category'와 'subcategory'열을 기준으로 그룹화하여 'value'의 합 계산

 

import pandas as pd

# 샘플 데이터프레임 생성
data = {
    'Category': ['A', 'A', 'B', 'B', 'A', 'B'],
    'SubCategory': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
    'Value1': [1, 2, 3, 4, 5, 6],
    'Value2': [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)

# 'Category'와 'SubCategory' 열을 기준으로 그룹화하여 
# 각 그룹별 'Value1'과 'Value2'의 평균, 합 계산
grouped_multiple = df.groupby(['Category', 'SubCategory']).agg({'Value1': ['mean', 'sum'], 'Value2': 'sum'})

print(grouped_multiple)

 

     - agg() 함수를 사용하여 여러 열에 대해 다양한 집계 함수를 적용

 

pivot_table()

  - pivot_table()함수는 데이터프레임에서 피벗 테이블을 생성하는 데 사용

 

  - 여러 열을 기준으로 피벗 테이블 생성하기

import pandas as pd

# 샘플 데이터프레임 생성
data = {
    'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-01'],
    'Category': ['A', 'B', 'A', 'B', 'A'],
    'SubCategory': ['X', 'Y', 'X', 'Y', 'X'],
    'Value': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)

# 피벗 테이블 생성: 'Date'를 행 인덱스로, 'Category'와 'SubCategory'를 열 인덱스로,
# 값은 'Value'의 합으로 집계
pivot = df.pivot_table(index='Date', columns=['Category', 'SubCategory'], values='Value', aggfunc='sum')

print(pivot)

 

   - 집계 합수를 다르게 적용하여 피벗 테이블 생성

import pandas as pd

# 샘플 데이터프레임 생성
data = {
    'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-01'],
    'Category': ['A', 'B', 'A', 'B', 'A'],
    'Value1': [10, 20, 30, 40, 50],
    'Value2': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data)

# 피벗 테이블 생성: 'Date'를 행 인덱스로, 'Category'를 열 인덱스로, 
# 값은 'Value1'과 'Value2'의 평균과 합으로 집계
pivot = df.pivot_table(index='Date', columns='Category', values=['Value1', 'Value2'], aggfunc={'Value1': 'mean', 'Value2': 'sum'})

print(pivot)

 

 

▶데이터 정렬하기

  ● sort_values() 함수:

       - 컬럼 기준으로 정렬

# 'score' 열을 기준으로 정렬
예) 
sorted_by_score = df.sort_values('score') 
# 기본값은 오름차순
sorted_by_score = df.sort_values('score', ascending=False)
# ascending = False 는 내림차순

 

● sort_index() 함수:

     - 인덱스를 기준으로 정렬

sorted_by_index = df.sort_index()
# 인덱스를 기준으로 오름차순 정렬

sorted_by_index = df.sort_index(ascending = False)
# 인덱스를 기준으로 내림차순 정렬