본 내용은 인프런 강의 <데이터 분석을 위한 판다스>를 수강하며 중요한 점을 정리한 글입니다.
배구는 5판 3선승제 입니다. 먼저 3개 세트를 가져온 팀이 최종으로 승리합니다.
한국과 일본 중 어떤 팀이 몇 세트를 가져와서 최종 승리했을까요?
Step 1. 한국이 더 많은 점수를 낸 세트의 데이터(행)만 가져오기
match_results[match_results['korea'] > match_results['japan']]
Step 2. 이 중에서 세트의 번호('set' 컬럼 값)만 출력하기
match_results.loc[match_results['korea'] > match_results['japan'], 'set']
- 코드 해설
match_results: 이 코드가 실행되는 데이터프레임입니다. 코드를 실행하기 전에 match_results라는 변수에 데이터프레임이 할당되어 있어야 합니다.
['korea'] > match_results['japan']: 이 부분은 조건을 나타냅니다. 여기서는 'korea' 열의 값이 'japan' 열의 값보다 큰 경우에 해당하는 행을 선택합니다. 이 조건은 불리언 인덱싱을 사용하여 만들어졌습니다.
match_results.loc[...]: 이 부분은 Pandas의 loc 메서드를 사용하여 조건을 만족하는 행을 선택합니다. loc 메서드는 행 레이블 기반의 인덱싱을 제공합니다.
, 'set': 이 부분은 선택된 행에서 'set' 열의 값을 가져오라는 의미입니다. 따라서 조건을 만족하는 행 중에서 'set' 열의 값만 선택됩니다.
- loc 메서드는?
loc 메서드는 Pandas에서 레이블을 기반으로 행과 열을 선택하기 위해 사용되는 메서드입니다. 이 메서드는 주로 슬라이싱이나 불리언 인덱싱과 함께 활용되며, 특정 조건을 만족하는 행이나 열을 선택하는 데에 유용합니다.
loc 메서드의 기본 문법은 다음과 같습니다: DataFrame.loc[row_label, column_label]
두 팀이 번갈아가며 1세트씩 주고 받는 바람에 경기가 5세트까지 모두 진행됐습니다. '풀세트를 뛰었다'라고도 합니다.
선수들이 무척 힘들었을 것 같은데요. 그 중에서도 시간상으로 가장 오래 진행된 세트는 몇 세트인가요?
Step 1. 가장 오래 진행된 세트의 경기 시간을 'longest' 변수에 저장 (Hint: 섹션1 '판다스 연산 맛보기' 강의를 떠올려 보세요.)
longest = match_results['playing_time'].max()
Step 2. 위 경기 시간에 해당하는 세트의 데이터 가져오기
match_results[match_results['playing_time'] == longest]
유니폼에 쓰이는 번호는 선수에게만 부여됩니다.
번호가 없는 코칭 스태프 3명에게 0번 유니폼을 선물해 볼까요?
Step 1. 유니폼 번호(player_no) 컬럼에 값이 없는 데이터 찾기
kor_team[kor_team['player_no'].isna()]
Step 2. 해당하는 데이터의 player_no 컬럼 값을 0으로 수정
kor_team.loc[kor_team['player_no'].isna(), 'player_no'] = 0
kor_team['player_no']: 이 부분은 'kor_team' 데이터프레임에서 'player_no' 열을 선택합니다.
.isna(): 이는 Pandas Series 또는 데이터프레임의 각 요소에 대해 결측값(NaN) 여부를 확인하는 메서드입니다. 만약 해당 값이 결측값이라면 True를 반환하고, 그렇지 않으면 False를 반환합니다.
kor_team['player_no'].isna(): 이 부분은 'player_no' 열의 각 행이 NaN인지 여부를 나타내는 불리언 시리즈를 생성합니다.
kor_team.loc[...]: 이 부분은 loc 메서드를 사용하여 조건을 만족하는 행과 열을 선택합니다. 여기서는 'player_no' 열이 NaN인 행을 선택합니다.
'player_no'] = 0: 선택된 행들의 'player_no' 열 값을 0으로 대체합니다.
코칭 스태프 데이터를 제외하고 선수 데이터만 가져와 kor_player라는 이름의 테이블을 생성해 주세요.
Step 1. 선수 데이터만 추출하여 변수 kor_player에 저장하기 (방법은 다양합니다! 어떤 방법을 사용해도 좋아요.)
kor_player = kor_team[kor_team['player_no'] != 0]