: ๋ฐ์ดํฐ ์์ฑ์ด ๋์ผํ ๋ฐ์ดํฐ์
๋ผ๋ฆฌ ํฉ์น ๋ ์ฌ์ฉํ ์ ์๋ ํจ์
key๊ฐ ๋๋ ๊ณตํต๋ ์ด์ด๋ ์ธ๋ฑ์ค ์ง์ ์์ด ์ด/ํ ๋ฐฉํฅ์ผ๋ก ํฉ์น ์ ์๋ค.
DataFrame, Series์ ๋ชจ๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
๐ก ๊ธฐ๋ณธ ์ ์
objs: ํฉ์น Series, DataFrame, Panel Object ๋ณ์๋ฅผ ์ฝ์ ํ๋ค.
axis=0/1: ๋ฐ์ดํฐ๋ฅผ ์+์๋๋ก ํฉ์น๋ค / ๋ฐ์ดํฐ๋ฅผ ์ค๋ฅธ์ชฝ+์ผ์ชฝ์ผ๋ก ํฉ์น๋ค.
join=outer/inner: ํฉ์งํฉ(๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํฉ์น๋ค) / ๊ต์งํฉ(๋ชจ๋ ๋ฐ์ดํฐ์ ์ ์กด์ฌํ๋ ๊ฐ๋ผ๋ฆฌ ํฉ์น๋ค)
ignore_index=False/True: ๊ธฐ์กด ์ธ๋ฑ์ค ์ ์ง / ๊ธฐ์กด ์ธ๋ฑ์ค๋ฅผ ๋ฌด์ํ๊ณ ํฉ์น๋ค.
keys=[]: ๊ณ์ธต์ ์ธ index ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด keys ํํ์ ์ ๋ ฅํ๋ค.
๊ฐ ๋ฐ์ดํฐ ํ๋ ์๋ง๋ค ๋ํ์ ์ธ ํค๊ฐ์ ๋ถ์ฌํ๋ ์ญํ ์ ํ๋ค.
import pandas as pd
english_df1 = pd.DataFrame({
'name': ['dongwook', 'taego', 'jimin'],
'english_score': [50, 91, 72]
})
english_df2 = pd.DataFrame({
'name': ['yoonsoo', 'sowon', 'haeun'],
'english_score': [88, 91, 72]
})
pd.concat([english_df1, english_df2])

: ๋ ๋ฐ์ดํฐํ๋ ์์ ๊ฐ ๋ฐ์ดํฐ์ ์กด์ฌํ๋ ๊ณ ์ ๊ฐ, ์ฆ ์ด๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ณํฉํ ๋ ์ฌ์ฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Inner Join์ ์ฌ์ฉํ๋ค.
๐ก ๊ธฐ๋ณธ ์ ์
on='': ๋ณํฉ์ ๊ธฐ์ค์ด ๋ ํค๊ฐ์ ์ง์ ํ๋ค.
how=left/right: lefr outer join/right outer join์ ์ฌ์ฉํ๋ค.
suffixes=(): ๊ฐ ๋ฐ์ดํฐ์ ๋๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง key ์ญํ ์ ํ๋ ์ด ์ด๋ฆ์ ์๋์ผ๋ก _x, _y ๊ตฌ๋ถ์๊ฐ ์์ฑ๋๋๋ฐ,ํด๋น ๊ตฌ๋ถ์๋ฅผ ๋ณ๊ฒฝํ๋ ์ญํ ์ ํ๋ค.
right/left_on='': key ์ญํ ์ ํ๋ ์ด์ ์ด๋ฆ์ด ๊ฐ์ง ์์ ๋ ๊ฐ์ด ๊ฐ์ ์ด ์ด๋ฆ์ ์ ๋ ฅํด ๊ฒฐํฉํ๋ค.
left/right_index: ์ค๋ฅธ์ชฝ/์ผ์ชฝ ๋ฐ์ดํฐ์ ํค๊ฐ์ ์ธ๋ฑ์ค๋ก ์ง์ ํ๋ค.
pd.merge(employee_df, survey_df, on='id) # id์ด์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ ๋ณํฉ
id๊ฐ ๋๊ฐ์ ์ด๋ค๋ผ๋ฆฌ ๋ณํฉ, ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์ด๋ค์ department"_x", department"_y" ์ฒ๋ผ ์ด ์ด๋ฆ ๋ค์ ๊ตฌ๋ถ์๊ฐ ์ฃผ์ด์ง๋ค.
pd.merge(employee_df, survey_df, on='id', how='left')
how=left๋ฅผ ํตํด left outer join, ์ฆ ์ผ์ชฝ์ ๊ฐ์ ์์ฃผ๋ก ์ค๋ฅธ์ชฝ ๊ฐ์ ๋ณํฉํ์๋ค. ์ผ์ชฝ์๋ ์์ผ๋ ์ค๋ฅธ์ชฝ์ ์๋ ๊ฐ์ ๊ฒฐ์ธก๊ฐ์ผ๋ก ๊ฒฐํฉ๋์๋ค.
: ๊ณตํต์ผ๋ก ๋ค์ด ์๋ ๊ฐ์ ํ๋๋ก ํฉ์น๋ ํจ์์ด๋ค.
merge() ํจ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ ธ ์๋ ๋ฐฉ์์ด ์ ์ฌํ๋, ํ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฐํฉํ๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์๋ค.
[๋ฐ์ดํฐ].join์์, ์
๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณํฉํ๋ค.
๐ก ๊ธฐ๋ณธ ์ ์
l/rsuffix='': ๋๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง key ์ญํ ์ ํ๋ ์ด์ ์ด๋ฆ์ ๊ฐ๊ฐ ์ค์ ํ๋ค.
how='inner': inner join์ผ๋ก ๊ต์งํฉ์ธ ๊ฐ๋ค๋ง ๊ฐ์ ธ์ ๊ฒฐํฉํ๋ค.
employee_df.join(survey_df, lsuffix='_x', rsuffix='_y')
employee_df ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก survey_df์ ๊ฒฐํฉํ์๋ค. lsuffix, rsuffix๋ฅผ ํตํด ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ์ด department ๋ค์ ๊ตฌ๋ถ ๋ฌธ์๋ฅผ ์ง์ ํด ์ฃผ์๋ค.
๐ก merge()์ join()
โ๏ธ merge()
- ํน์ ์ด์ด๋ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐํ๋ ์์ ๊ฒฐํฉํ๋ ๋ฐฉ์์ด๋ค.
- ๊ธฐ์ค์ด ๋๋ ์ด์ ์ด๋ฆ์ด ์๋ก ๋ค๋ฅผ ๋,
- ์ธ๋ฑ์ค๊ฐ ์๋ ์ผ๋ฐ ๋ฐ์ดํฐ ์ด์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํฉ์น๊ณ ์ถ์ ๋,
- ๋ณต์กํ join์กฐ๊ฑด์ ๋ช ํํ ์ง์ ํด์ผ ํ ๋(how='') ์ฌ์ฉํ๋ฉด ์ข๋ค.
โ๏ธ join()- ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น ๋ฅด๊ฒ ๊ฒฐํฉํ๋ ๋ฐฉ์์ด๋ค
- ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐํ๋ ์์ ํ ๋ฒ์ ๊ฒฐํฉํ ๋ ์ ์ฉํ๋ค.
- ๋ ๊ฐ์ ๋ฐ์ดํฐํ๋ ์์ ์ธ๋ฑ์ค๊ฐ ๋ง์ถ์ด์ ธ ์์ ๋,
- ์ฌ๋ฌ ๊ฐ(3๊ฐ ์ด์)์ ๋ฐ์ดํฐํ๋ ์์ ๋์์ ํ์ ๊ธฐ์ค์ผ๋ก ๊ฒฐํฉํ๊ณ ์ถ์ ๋,
- ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ๋ฐ์ดํฐ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ฉด ์ข๋ค.
โก๏ธ ๊ฐ์ฅ ๋ฒ์ฉ์ ์ผ๋ก ์์ฃผ ์ฐ์ด๋ ๊ฒ์ ์ธ๋ถ์ ์ธ ๋ด์ฉ ์กฐ์ ์ด ๊ฐ๋ฅํ merge()์ด์ง๋ง, ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ ๊ฐ๊ฒฐํ ์์ ์ด๋ผ๋ฉด join()์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
- Adil Ahmad
ํด๋น ๋์๋ณด๋๋ ํ ํด์ ํต์ฌ ๋น์ฆ๋์ค ์งํ์, ์๋ (PY) ๋๋น ์ฆ๊ฐ๋ฅ ์ ์ง๊ด์ ์ผ๋ก ๋ณด์ฌ ์ค๋ค. ๋ถํ์ํ ์์๋ค์ ๋ชจ๋ ๋ฐฐ์ ํ ํ ํต์ฌ ๋ฐ์ดํฐ๊ฐ ํ๋์ ๋ค์ด์ค๋๋ก ๊ทธ๋ํ๋ฅผ ๊น๋ํ๊ฒ ๋ฐฐ์นํ ์ ์ด ๋๋ณด์ธ๋ค. ํนํ Sales, Profit, Orders, Returns ๋ฑ ์ฃผ์ ์ธก์ ๊ฐ์ ์ ํํ์ฌ ์ถ์ด๋ฅผ ๋์ ์ผ๋ก ํ์ธํ ์ ์์ด, ์ด์์ ์ธ ๋์๋ณด๋๋ผ๊ณ ์๊ฐํ์ฌ ์ ์ ํ์๋ค.






๊ทธ๋ํ๋ผ๋ฆฌ ๊ฒน์ณ ๋ ๋ค๋ฅธ ๊ทธ๋ํ๋ฅผ ๋ง๋ค ์๋ ์๊ตฌ๋... ์ ๋ง์ ๋ง ์๋กญ๊ณ , ๋์๋ณด๋๊ฐ ์์๊ณ ์ง๊ด์ ์ด๊ฒ, ๊น๋ํ ํ๋์ ๋ค์ด์ค๋๋ก ๋ฐฐ์น๋ ๊ฒ ๋ง์์, ๋ ธํธ๋ฅผ ์์๊ฒ ์ ๋ฆฌํ๊ณ A4์ ์์ฝํ ๋๋ ๋ง์์ ๋ค์ง ์์ผ๋ฉด ์ ๋๋ ๋ณ์ด ์๋ ๋์๊ฒ๋ ์์ผ๋ก ๋ ๋ง์ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๋ฐ ๋์๋ณด๋ ์ ์์ ๋ํ ์ธํ๊ณผ ์์ํ์ ๋๋ฆฌ๊ณ ๊ฐ์ฌ๋์ด ๋ง์ํ์ จ๋ ๊ณต๋ชจ์ ์ ๋๊ฐ ๋ณด๋ ๊ฒ๋ ์ ๋ง ์ข์ ๊ฒฝํ์ด ๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.