Python/Python Language

๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„(DataFrame)์˜ ๋ฐฐ์—ด ์กฐ์ธ(join)๊ณผ ๋ฐฐ์—ด๋ถ„ํ• (split)

567Rabbit 2024. 4. 9. 11:12

๋ฐฐ์—ด ์กฐ์ธ

- ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ฐฐ์—ด๋‚ด์šฉ์„ ๋‹จ์ผ ๋ฐฐ์—ด์— ๋„ฃ๋Š” ๊ฒƒ์„ ์˜๋ฏธ Numpy์—์„œ๋Š” ์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์—ด์„ ์กฐ์ธํ•œ๋‹ค


stack() : ์—ฐ๊ฒฐ๊ณผ ๋™์ผํ•˜๊ณ  ์ฐจ์ด์ ์€ ์Šคํƒœํ‚น์ด ์ƒˆ์ถ•์„ ๋”ฐ๋ผ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค ๋ช…์‹œ์ ์œผ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด 0์œผ๋กœ ๊ฐ„์ฃผ๋œ๋‹ค
2) hstack() : ํ–‰์„ ๋”ฐ๋ผ ์Œ“๋Š” ๋„์šฐ๋ฏธ 
3) vstack() : ์—ด์„ ๋”ฐ๋ผ ์Œ“๋Š” ๋„์šฐ๋ฏธ ๊ธฐ๋Šฅ์„ ์ œ๊ณต
4) dstack() : ๊นŠ์ด์™€ ๋™์ผํ•œ ๋†’์ด๋ฅผ ๋”ฐ๋ผ ์Œ“๋Š” ๋„์šฐ๋ฏธ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

 


stack : ์ƒˆ๋กœ์šด ๋ฒ„ํ‹ฐ์ปฌ ์ถ•์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค
ver1 = np.array([1,2,3])
ver2 = np.array([4,5,6])
verti = np.stack((ver1, ver2), axis=1)
print(verti)

 

hstack() : ํ–‰์„ ๋”ฐ๋ผ ์Œ“๊ธฐ

vstack() : ํ•จ์ˆ˜๋Š” ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ์ˆ˜์ง์œผ๋กœ ์Œ“์•„(concatenate) ํ•˜๋‚˜์˜ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ์ค€๋‹ค

dstack() : ๋†’์ด(๊นŠ์ด)๋ฅผ ๋”ฐ๋ผ ์Œ“๊ธฐ stack๊ณผ ๋น„์Šทํ•˜๋‹ค

 

 

concatenating

# ์ปฌ๋Ÿผ๋ช…์ด ๊ฐ™์œผ๋ฉด, ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์„ ํ•˜๋‚˜๋กœ ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค 2๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค

 

 

 

df1

  A B C D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3

 

df2

  A B C D
4 A4 B4 C4 D4
5 A5 B5 C5 D5
6 A6 B6 C6 D6
7 A7 B7 C7 D7

 

 

df3

  A B C D
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] )  # concatenating

 

  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

 

 

 

merge

# ์ปฌ๋Ÿผ๋ช…์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค

# merge ํ•จ์ˆ˜๋Š” 2๊ฐœ์˜ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค

 

df_all

  Employee ID first name last name
0 1 Diana Bouchard
1 2 Cynthia Ali
2 3 Shep Rob
3 4 Ryan Mitch
4 5 Allen Steve
5 6 Bill Christian
6 7 Dina Mo
7 8 Sarah Steve
8 9 Heather Bob
9 10 Holly Michelle

 

 

 

df_salary                 # Employee ID 6๋ฒˆ์ด ๋น ์ ธ์žˆ๋‹ค.

  Employee ID Salary [$/hour]
0 1 25.0
1 2 35.0
2 3 45.0
3 4 48.0
4 5 49.0
5 7 32.0
6 8 33.0
7 9 34.0
8 10 23.0

 

 

 

 

# how  = 'left' ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— ์—†๋Š” ๋ฐ์ดํ„ฐ๋Š” nan์œผ๋กœ ํ‘œ์‹œํ•˜๊ฒŒํ•˜๊ธฐ

 # on = '์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ปฌ๋Ÿผ' ์ด๋ฆ„์œผ๋กœ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•˜๋‹ค

 

 

pd.merge( df_all, df_salary, on='Employee ID' , how = 'left' )            

 

  Employee ID first name last name Salary [$/hour]
0 1 Diana Bouchard 25.0
1 2 Cynthia Ali 35.0
2 3 Shep Rob 45.0
3 4 Ryan Mitch 48.0
4 5 Allen Steve 49.0
5 6 Bill Christian NaN
6 7 Dina Mo 32.0
7 8 Sarah Steve 33.0
8 9 Heather Bob 34.0
9 10 Holly Michelle 23.0

 

 

 

 

 


๋ฐฐ์—ด ๋ถ„ํ• 


- ๊ฒฐํ•ฉ์€ ์—ฌ๋Ÿฌ ๋ฐฐ์—ด์„ ํ•˜๋‚˜๋กœ ๋ณ‘ํ•ฉํ•˜๊ณ  ๋ถ„ํ• ์€ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด์„ ์—ฌ๋Ÿฌ ๋ฐฐ์—ด๋กœ ๋‚˜๋ˆˆ๋‹ค

- array_split()

 


spl = np.array([1, 2, 3, 4, 5, 6])
newspl = np.array_split(arr, 3) #๋ถ„ํ• ์„ 3๊ฐœ๋กœ
print(newspl)

 


#2์ฐจ์› ๋ฐฐ์—ด์„ 3๊ฐœ์˜ 2์ฐจ์› ๋ฐฐ์—ด๋กœ
three = np.array([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]])
newthree = np.array_split(three,3)
print(newthree)