본문 바로가기
  • Slow and Steady wins the race
abt Python/심화

Pandas 데이터

by cloudin 2023. 8. 15.

Pandas

 

 

  • 데이터 통합

 

1)세로 방향으로 통합하기 : append()

 

  • import
import pandas as pd
import numpy as np

 

  • 데이터 생성
df1 = pd.DataFrame({'Class1': [45, 46, 48, 50],
                   'Class2': [40, 41, 44, 48]})
df1

df2 = pd.DataFrame({'Class1': [41, 42],
                   'Class2' : [43, 45]})
df2

 

  • 행 수가 다른 데이터 결합
df1.append(df2)      # 데이터 결합

# 인덱스를 무시
df1.append(df2, ignore_index=True)

 

  • 열 수가 다른 데이터 통합
df3 = pd.DataFrame({'Class1': [48,38]})   # 데이터 생성
df3

df2.append(df3, ignore_index=True)

 

2)가로 방향으로 통합하기 : join()

df4 = pd.DataFrame({'Class3': [49, 47, 45, 48]})    # 데이터 생성
df4

df1.join(df4)

 

  • index를 리스트의 요소로 지정 (인덱스가 다른 데이터 통합)
index_label = ['a', 'b', 'c', 'd']
df1a = pd.DataFrame({'Class1': [48, 46, 49, 50],
                    'Class2': [44, 46, 42, 41]}, index= index_label)
df4a = pd.DataFrame({'Class3': [43, 41, 42, 47]}, index=index_label)
df1a

df4a

df1a.join(df4a)

 

  • 레코드 수가 다를 경우 데이터 통합
df5 = pd.DataFrame({'Class4': [42, 47]})    # 데이터 생성
df5

df1.join(df5)     # 결측값이 나온다

 

 

3)특정열 기준 공통 값을 갖는 경우 merge()를 이용하여 통합

  • 데이터 생성
df_6 = pd.DataFrame({'판매월': ['9월', '10월', '11월', '12월'],
                    '제품A': [120, 167, 214, 209],
                    '제품B': [190, 210, 348, 365]})

df_7 = pd.DataFrame({'판매월': ['9월', '10월', '11월', '12월'],
                    '제품C': [135, 167, 252, 264],
                    '제품D': [189, 241, 218, 314]})

 

df_6

 

df_7

# 판매월은 동일한 컬럼 값, 나머지는 동일한 컬럼값이 없다 (df_6, df_7)
# merge로 하나의 데이터 프레임으로 만듬
df_6.merge(df_7)

 

  • 두 테이블을 병합할 기준이 필요한 경우
how 선택 인자 설명
left  왼쪽 데이터는 모두 선택하고, 지정한 열(key)에 값이 있는 오른쪽 데이터를 선택
right 오른쪽 데이터는 모두 선택하고 지정된 열(key)에 값이 있는 왼쪽 데이터를 선택
outer 지정된 열(key)을 기준으로 왼쪽과 오른쪽 데이터를 모두 선택
inner 지정된 열(key)을 기준으로 왼쪽과 오른쪽 데이터 중 공통 항목만 선택(기본값)

 

df_left = pd.DataFrame({'key':['A', 'B', 'C'], 'left':[1, 2, 3]})    # 데이터 생성
df_left

df_right = pd.DataFrame({'key':['A', 'B', 'D'], 'right':[4, 5, 6]})
df_right

 

df_left.merge(df_right, how='left', on='key')    # left을 병합하는데 key 값을 기준으로 함

 

df_left.merge(df_right, how='right', on='key')    # left데이터에 right가 붙음

 

df_left.merge(df_right, how='outer', on='key')     # outer : 모든 키값들을 지정해줌

 

df_left.merge(df_right, how='inner', on='key')     # inner : 데이터들이 공통적으로 있는 값들만 지정해줌

'abt Python > 심화' 카테고리의 다른 글

Matplotlib 그래프 (산점도, 막대그래프, 히스토그램, 파이그래프)  (1) 2023.08.21
Matplotlib 기초  (0) 2023.08.15
Pandas 기초  (0) 2023.08.14
Numpy 배열 연산, 인덱싱, 슬라이싱  (0) 2023.08.14
Numpy 배열 생성  (0) 2023.08.13