반응형
데이터과학에서 python을 도구로 사용할 시 pandas, numpy 등의 라이브러리를 떨어질 수 없는 관계이다. 해당 연습을 위해 DataMinim 님의 데이터를 활용하여 연습하고, 결과를 공유하려 한다.
데이터 다운받기
사용하는 데이터는 DataMinim 님이 정제해둔 데이터이다. 아래와 같이 다운로드 한다.
import pandas as pd
df= pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/worldcup/worldcupgoals.csv')
df.head()
문제 1. 주어진 전체 기간의 각 나라별 골득점수 상위 5개 국가와 그 득점수를 데이터프레임형태로 출력하라
df_sub = df.groupby('Country').sum().sort_values('Goals', ascending=False)
df_sub.head(5)
문제 2. 주어진 전체기간동안 골득점을 한 선수가 가장 많은 나라 상위 5개 국가와 그 선수 숫자를 데이터 프레임 형식으로 출력하라
df_sub = df.groupby(['Country']).size().sort_values(ascending=False).head(5)
df_sub
Country
Brazil 81
Germany 78
Italy 60
Argentina 59
France 58
dtype: int64
문제 3. Years 컬럼은 년도 -년도 형식으로 구성되어있고, 각 년도는 4자리 숫자이다. 년도 표기가 4자리 숫자로 안된 케이스가 존재한다. 해당 건은 몇건인지 출력하라
df_years = df.Years.str.split('-')
def check_num(x):
for n in x:
if len(str(n)) != 4:
return False
return True
(df_years.apply(check_num) == False).sum()
답 : 45
문제 4. Q3에서 발생한 예외 케이스를 제외한 데이터프레임을 df2라고 정의하고 데이터의 행의 숫자를 출력하라 (아래 문제부터는 df2로 풀이하겠습니다)
df_years = df.Years.str.split('-')
def check_num(x):
for n in x:
if len(str(n)) != 4:
return False
return True
df['check_years'] = df_years.apply(check_num)
df2 = df[df.check_years == True].reset_index(drop=True)
df2.shape[0]
답 : 1250
문제 5. 월드컵 출전횟수를 나타내는 ‘LenCup’ 컬럼을 추가하고 4회 출전한 선수의 숫자를 구하여라.
df2['PlayerYears'] = df2.Years.str.split('-')
df2['LenCup'] = df2.PlayerYears.apply(lambda x : len(x))
df2[df2.LenCup == 4].shape[0]
문제 6. Yugoslavia 국가의 월드컵 출전횟수가 2회인 선수들의 숫자를 구하여라
len((df2.LenCup == 2) & (df2.Country == 'Yugoslavia'))
문제 7. 2002년도에 출전한 전체 선수는 몇명인가?
df2.PlayerYears.apply(lambda x : True if '2002' in x else False).sum()
또는
len(df2[df2.Years.str.contains('2002')])
반응형
'AI > Data Science' 카테고리의 다른 글
정규화는 데이터 분리 전? 후? 언제 해야할까? (0) | 2023.03.12 |
---|---|
[Data Science] 서울시 따릉이 이용정보 데이터 (0) | 2023.02.07 |
[Data Science] 유튜브 공범컨텐츠 동영상 데이터 분석하기 (1) | 2023.01.19 |
[Data Science] 유튜브 인기 동영상 분석하기 (0) | 2023.01.17 |
[데이터 과학] 확률분포 (이산형, 연속형) (0) | 2023.01.17 |