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)