본문 바로가기

Upstage AI Lab 2기

Upstage AI Lab 2기 [Day012] (2) pandas_기초_1

Upstage AI Lab 2기

2023년 12월 27일 (수) Day_012

 

Day_012 실시간 강의 (오후) :

(패스트캠퍼스 김용담 강사님)

 

!pip install pandas == 1.5.3
import pandas as pd

 

 

1) Pandas DataFrame

# df = pd.DataFrame(data = ,
#                   columns =,
#                   index =)

 

df.index

df.columns

df.values

df['컬럼명']

더보기

# 주의 : [ ] 안에는 컬럼명만 됨. index는 안 됨.

# pandas 도 broadcasting 됨
df['X1']+2

df['X1']**2

 

2) DataFrame methods 기초

df.head()

df.info()

df.describe()

df.sort_values(by='컬럼명')

note. pandas 최소 연산 단위 row, row가 한 개의 entity로 움직임

 

3) DataFrame 합치기

(1) pd.concat([컬럼명 리스트], axis = )

pd.concat([df1, df2, df3]) : default axis = 0

pd.concat([df1, df2, df3], axis=1)

더보기
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']},
                   index=[0, 1, 2, 3])

df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
                    'B': ['B4', 'B5', 'B6', 'B7'],
                    'C': ['C4', 'C5', 'C6', 'C7'],
                    'D': ['D4', 'D5', 'D6', 'D7']},
                   index=[4, 5, 6, 7])

df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
                    'B': ['B8', 'B9', 'B10', 'B11'],
                    'C': ['C8', 'C9', 'C10', 'C11'],
                    'D': ['D8', 'D9', 'D10', 'D11']},
                   index=[8, 9, 10, 11])

겹치는 정보가 컬럼명 밖에 없음

pd.concat([df1, df2, df3])

#	A	B	C	D
# 0	A0	B0	C0	D0
# 1	A1	B1	C1	D1
# 2	A2	B2	C2	D2
# 3	A3	B3	C3	D3
# 4	A4	B4	C4	D4
# 5	A5	B5	C5	D5
# 6	A6	B6	C6	D6
# 7	A7	B7	C7	D7
# 8	A8	B8	C8	D8
# 9	A9	B9	C9	D9
# 10	A10	B10	C10	D10
# 11	A11	B11	C11	D11

 

pd.concat([df1, df2, df3], axis=1)

# 	A	B	C	D	A	B	C	D	A	B	C	D
# 0	A0	B0	C0	D0	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
# 1	A1	B1	C1	D1	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
# 2	A2	B2	C2	D2	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
# 3	A3	B3	C3	D3	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
# 4	NaN	NaN	NaN	NaN	A4	B4	C4	D4	NaN	NaN	NaN	NaN
# 5	NaN	NaN	NaN	NaN	A5	B5	C5	D5	NaN	NaN	NaN	NaN
# 6	NaN	NaN	NaN	NaN	A6	B6	C6	D6	NaN	NaN	NaN	NaN
# 7	NaN	NaN	NaN	NaN	A7	B7	C7	D7	NaN	NaN	NaN	NaN
# 8	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	A8	B8	C8	D8
# 9	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	A9	B9	C9	D9
# 10	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	A10	B10	C10	D10
# 11	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	A11	B11	C11	D11

 

(2) pd.merge()

pd.merge(left=, right=, how=, on=)

on= 합치는 기준이 되는 컬럼명

how = 합치는 방법

 

 - how =  'inner' : 교집합 => 겹치는 value만 merge

더보기
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']},
                   index=[0, 1, 2, 3])

df2 = pd.DataFrame({'A': ['A2', 'A3', 'A4', 'A5'],
                    'B': ['B4', 'B5', 'B6', 'B7'],
                    'C': ['C4', 'C5', 'C6', 'C7'],
                    'D': ['D4', 'D5', 'D6', 'D7']},
                   index=[0, 1, 2, 3])

df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
                    'B': ['B8', 'B9', 'B10', 'B11'],
                    'C': ['C8', 'C9', 'C10', 'C11'],
                    'D': ['D8', 'D9', 'D10', 'D11']},
                   index=[8, 9, 10, 11])
pd.merge(df1, df2, how = 'inner', on='A')

#	 A	B_x	C_x	D_x	B_y	C_y	D_y
# 0	A2	B2	C2	D2	B4	C4	D4
# 1	A3	B3	C3	D3	B5	C5	D5

 

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']},
                   index=[0, 1, 2, 3])

df2 = pd.DataFrame({'A': ['A2', 'A3', 'A4', 'A5'],
                    'E': ['B4', 'B5', 'B6', 'B7'],
                    'F': ['C4', 'C5', 'C6', 'C7'],
                    'G': ['D4', 'D5', 'D6', 'D7']},
                   index=[0, 1, 2, 3])

pd.merge(df1, df2, how = 'inner', on='A')

# 	A	B	C	D	E	F	G
# 0	A2	B2	C2	D2	B4	C4	D4
# 1	A3	B3	C3	D3	B5	C5	D5

 

 -  how = 'left' : 왼쪽 데이터 기준으로 합침

on= 컬럼의 values 중 겹치는 value는 컬럼을 합치고 left에 없는 values 버림, 빈칸은 결측치로

더보기
pd.merge(df1, df2, how = 'left', on='A')
# 	A	B	C	D	E	F	G
# 0	A0	B0	C0	D0	NaN	NaN	NaN
# 1	A1	B1	C1	D1	NaN	NaN	NaN
# 2	A2	B2	C2	D2	B4	C4	D4
# 3	A3	B3	C3	D3	B5	C5	D5

 - how = 'outer' : 합집합

더보기
pd.merge(df1, df2, how = 'outer', on='A')

# 	A	B	C	D	E	F	G
# 0	A0	B0	C0	D0	NaN	NaN	NaN
# 1	A1	B1	C1	D1	NaN	NaN	NaN
# 2	A2	B2	C2	D2	B4	C4	D4
# 3	A3	B3	C3	D3	B5	C5	D5
# 4	A4	NaN	NaN	NaN	B6	C6	D6
# 5	A5	NaN	NaN	NaN	B7	C7	D7