- 과거 내용
- DataFrame - 정렬
1. 값 정렬
#원본 데이터
col1 col2 col3
row1 -3 A 7
row2 <NA> C 36
row3 5 D -5
#값 정렬
print(df.sort_values(by=['col1'],axis=0,ascending=True))
col1 col2 col3
row1 -3 A 7
row3 5 D -5
row2 <NA> C 36
by는 어떤 부분을 정렬할 지 선택하고, axis는 행과 열을 선택하고,
ascending은 True일 때 오름차순, False일 때 내림차순 정렬한다.
이외에도 na_position, ignore_index, key, inplace 등의 옵션이 존재한다.
2. 인덱스 기준 정렬
#원본 데이터
col1 col2 col3
row1 -3 A 7
row2 <NA> C 36
row3 5 D -5
#인덱스 기준 정렬
print(df.sort_index(axis=0, level=0,ascending=False))
col1 col2 col3
row3 5 D -5
row2 <NA> C 36
row1 -3 A 7
마찬가지로 axis로 행과 열을 선택할 수 있고, level은 멀티 인덱스의 경우 사용하게 된다,
이외에도 ascending, sort_remaining, na_position, ignore_index 등이 존재한다.
3. 정렬 후 추출
#원본 데이터
col1 col2 col3
row1 -3 1 7
row2 2 4 36
row3 5 6 -5
#정렬 후 출력
print(df.nlargest(2,columns="col2",keep="all"))
col1 col2 col3
row3 5 6 -5
row2 2 4 36
처음에 n값을 넣어 몇 줄을 출력할 지 정한다. 이후 어떤 컬럼을 기준으로 할 지 정하고,
keep 옵션으로 중복되면 어떤 값을 출력할 지 정한다.
- DataFrame - 결합
1. 함수를 이용한 열 단위 결합
#원본 데이터
col1 col2 col3
row1 -3 1 7
row2 2 4 36
row3 5 6 -5
col1 col2 col3
row1 <NA> 25 3
row2 5 7 6
row3 2 3 <NA>
#열 단위 결합
print(df.combine(df2,np.maximum))
col1 col2 col3
row1 NaN 25 7.0
row2 5.0 7 36.0
row3 5.0 6 NaN
combine을 사용하여 2개의 데이터프레임을 열 단위로 결합할 수 있다.
np.maximum을 사용해 겹치는 경우 더 큰 값을 결과값으로 가지게 하며,
NaN값은 fill_value를 통해 채워넣을 수 있다. 이외에도 overwrite 등의
옵션이 있다.
2. 결측치 덮어쓰기
#원본 데이터
col1 col2 col3
row1 -3 1 7
row2 2 4 36
row3 5 6 -5
col1 col2 col3
row1 <NA> 25 3
row2 5 7 6
row3 2 3 <NA>
#결측치 덮어쓰기
print(df2.combine_first(df))
col1 col2 col3
row1 -3.0 25 3.0
row2 5.0 7 6.0
row3 2.0 3 -5.0
결측치가 있는 데이터그램에 combine_first를 사용하여 다른 데이터그램을 덮어쓰면
그 자리에 있는 결측치 값이 덮어써진다.
3. 인덱스기준 병합
#원본 데이터
col2
row1 1
row2 2
col1
row2 5
row3 7
#인덱스기준 병합
print(df.join(df2,how='right'))
col2 col1
row2 2.0 5
row3 NaN 7
join을 사용해서 인덱스기준으로 병합한다. how는 왼쪽 혹은 오른쪽 어느 곳을
기준으로 병합할 것인지 정하는 것이다.
이외에도 sort, lsuffix, rsuffix 등의 옵션이 있다.
4. 객체병합
#원본데이터
col2 NUM
0 B 6
1 C 7
2 D 8
col1 NUM
0 A 2
1 B 4
2 C 5
#객체 병합
print(df.merge(df2,left_on='col2',right_on='col1'))
col2 NUM_x col1 NUM_y
0 B 6 B 4
1 C 7 C 5
merge는 상당히 옵션이 많다. left_on과 right_on은 열의 이름을 입력하여
열 기준으로 병합할 수 있다. suffixes는 중복되는 열의 이름을 구분할 때 쓰인다.
left_index, right_index는 인덱스를 기준으로 병합할 때 쓰인다.
이외에도 how, indicator, validate 등이 있다.
5. 객체, 병합_결측제어
#원본 데이터
col1 col2 col3
row1 1 2.0 3
row2 4 5.0 6
row3 7 NaN 9
col2 col3 col4
row3 10 11.0 12
row4 13 NaN 15
row5 16 17.0 18
#객체 병합
print(df.align(df2,join='inner')[0])
print(df.align(df2,join='inner')[1])
col2 col3
row3 NaN 9
col2 col3
row3 10 11.0
align의 join은 left, right, inner 를 사용해서 어떻게 출력할 지 정한다.
결과의 NaN값은 fill_value를 통해서 값을 채워넣을 수 있다.
이외에도 method, limit, fill_axis, axis 등의 옵션이 있다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
EDA - 1단계 : 데이터 다루기 - 정보 (1) | 2023.07.15 |
---|---|
EDA - 1단계 : 데이터 다루기 - 가공 (2) | 2023.07.13 |
EDA - 1단계 : 데이터 다루기 - 비교, 필터링, 결측치 (2) | 2023.07.10 |
EDA - 1단계 : 데이터 다루기 - 함수 적용, 인덱싱 (1) | 2023.07.08 |
EDA - 1단계 : 데이터 다루기 - 객체 내 연산 (1) | 2023.07.07 |