Moonie

[빅데이터 분석기사 실기] 데이터 전처리 python 100 - 8 본문

공부/자격증

[빅데이터 분석기사 실기] 데이터 전처리 python 100 - 8

Moonie' 2024. 10. 26. 14:45
반응형

아래 블로그를 참고하여 진행했습니다.

https://www.datamanim.com/dataset/99_pandas/pandasMain.html#google_vignette

 

 

이전 블로그에 이어서 작성했습니다.

https://moonie.tistory.com/39

 

[빅데이터 분석기사 실기] 데이터 전처리 python 100 - 4

아래 블로그를 참조해서 진행했습니다.https://www.datamanim.com/dataset/99_pandas/pandasMain.html    해당 글에 이어서 진행한다.https://moonie.tistory.com/34 [빅데이터 분석기사 실기] 데이터 전처리 python 100 - 3

moonie.tistory.com

 

 

06_Pivot

데이터

국가별 5세이하 사망비율 통계 : https://www.kaggle.com/utkarshxy/who-worldhealth-statistics-2020-complete 

Dataurl = ‘https://raw.githubusercontent.com/Datamanim/pandas/main/under5MortalityRate.csv

 

데이터 호출

import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/pandas/main/under5MortalityRate.csv')

 

 

Question 83

Indicator을 삭제하고 First Tooltip 컬럼에서 신뢰구간에 해당하는 표현을 지워라

 

1) Indicator를 삭제

df.drop('Indicator',axis=1,inplace=True)
df.head(3)

 

  • df.drop을 통해서 열을 제거
  • axis=1: 제거할 방향을 지정하는 매개변수로, axis=1은 열을 의미합니다 (axis=0은 행을 의미합니다).
  • inplace=True: 원본 데이터프레임 df를 수정하여 'Indicator' 열을 제거하도록 설정합니다. inplace=True를 지정하지 않으면, 열이 제거된 새로운 데이터프레임이 반환됩니다

2) First Tooltip신뢰구간에 해당하는 표현 삭제

.

df['First Tooltip'] = df['Fisrst Tooltip'].map(lambda x: float(x.split("[")[0]))
df.head(4)

 

 

  • df['First Tooltip']: 'First Tooltip'이라는 열을 선택합니다.
  • .map(lambda x: ...): map 함수와 람다 함수를 사용하여 'First Tooltip' 열의 각 값에 함수를 적용합니다.
  • lambda x: float(x.split("[")[0]): 람다 함수는 x 값을 입력받아, 대괄호 [를 기준으로 문자열을 나눈 후 첫 번째 부분만 선택합니다 (x.split("[")[0]). 이후, 이 문자열 부분을 float()로 변환하여 실수형으로 만듭니다.

 

Question 84

년도가 2015년 이상, Dim1이 Both sexes인 케이스만 추출하라

ans = df[(df.Period>2015) & (df.Dim1 == 'Both sexes')]
ans

 

 

Question 85

84번 문제에서 추출한 데이터로 아래와 같이 나라에 따른 년도별 사망률을 데이터 프레임화 하라

 

target = ans
ans = target.pivot(index='Location',columns = 'Period', values = 'First Tooltip')
ans.head(3)

 

 

  • pivot 함수는 데이터의 열을 기준으로 피벗테이블로 변환시키는 메서드 입니다.
  • index='Location': 피벗 테이블의 행 레이블을 지정합니다. 여기서는 'Location' 열의 고유 값들이 행이 됩니다.
  • columns='Period': 피벗 테이블의 열 레이블을 지정합니다. 여기서는 'Period' 열의 고유 값들이 열이 됩니다.
  • values='First Tooltip': 테이블의 값으로 사용할 열을 지정합니다. 'First Tooltip' 열의 값이 새롭게 정의된 행과 열의 위치에 맞게 채워집니다.

Question 86

Dim1에 따른 년도별 사망비율의 평균을 구하라

 

ans = df.pivot_table(index='Dim1',columns='Period',values='First Tooltip',aggfunc='mean')
ans

 

  • index='Dim1': 피벗 테이블의 행 레이블을 지정합니다. 'Dim1' 열의 고유 값들이 행으로 설정됩니다.
  • columns='Period': 피벗 테이블의 열 레이블을 지정합니다. 'Period' 열의 고유 값들이 열로 설정됩니다.
  • values='First Tooltip': 테이블에서 사용할 값의 열을 지정합니다. 'First Tooltip' 열의 값을 각 위치에 넣습니다.
  • aggfunc='mean': 피벗 테이블의 집계 함수를 지정합니다. 'First Tooltip' 열의 값이 여러 개일 경우, 그 값들의 평균(mean)을 계산하여 셀을 채웁니다.

 

올림픽 메달리스트 정보 데이터: https://www.kaggle.com/the-guardian/olympic-games 

dataUrl =’https://raw.githubusercontent.com/Datamanim/pandas/main/winter.csv

 

Question 87

데이터에서 한국 KOR 데이터만 추출하라

 

ans = df[df.Country == 'KOR']
ans.head(5)

 

Question 88

한국 올림픽 메달리스트 데이터에서 년도에 따른 medal 갯수를 데이터프레임화 하라

kr = df[df.Country == 'KOR']
ans = kr.pivot_talbe(index='Year',columns='Medal',aggfunc='size).fillna(0)

 

 

 

 

Question 89

전체 데이터에서 sport종류에 따른 성별수를 구하여라

ans = df.pivot_table(index='Sport',columns='Gender',aggfunc='size')
ans

 

Question 90

전체 데이터에서 Discipline종류에 따른 따른 Medal수를 구하여라

 

Ans = df.pivot_table(index='Discipline',columns='Medal',aggfunc='size')

 

 

07_Merge , Concat

국가별 5세이하 사망비율 통계 : https://www.kaggle.com/utkarshxy/who-worldhealth-statistics-2020-complete
데이터 변형
Dataurl = ‘https://raw.githubusercontent.com/Datamanim/pandas/main/mergeTEst.csv

 

데이터 호출

df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/pandas/main/mergeTEst.csv',index_col=0)

 

df1 = df.iloc[:4,:]
df2 = df.iloc[4:,:]

display(df1)
display(df2)

 

 

 

Question 91

df1과 df2 데이터를 하나의 데이터 프레임으로 합쳐라

total = pd.concat([df1,df2])
ans = total
ans

 

 

 

 

Question 92

df3 = df.iloc[:2,:4]
df4 = df.iloc[5:,3:]

display(df3)
display(df4)

 

 

 

df3과 df4 데이터를 하나의 데이터 프레임으로 합쳐라. 둘다 포함하고 있는 년도에 대해서만 고려한다

Ans = pd.concat([df3,df4],join='inner')
Ans

 

join='inner': 결합할 때의 조인 방식을 지정합니다. inner 조인은 두 데이터프레임에 공통으로 있는 열만 결합에 사용하므로, 서로 다른 열이 있으면 제외됩니다.

 

Question 93

df3과 df4 데이터를 하나의 데이터 프레임으로 합쳐라. 모든 컬럼을 포함하고, 결측치는 0으로 대체한다

Ans = pd.concat([df3,df4]).fillna(0)
Ans

 

Question 94

df5 = df.T.iloc[:7,:3]
df6 = df.T.iloc[6:,2:5]

display(df5)
display(df6)

 

df5과 df6 데이터를 하나의 데이터 프레임으로 merge함수를 이용하여 합쳐라. Algeria컬럼을 key로 하고 두 데이터 모두 포함하는 데이터만 출력하라

Ans = pd.merge(df5,df6,on='Algeria',how='inner')
Ans

 

Question 95

df5과 df6 데이터를 하나의 데이터 프레임으로 merge함수를 이용하여 합쳐라. Algeria컬럼을 key로 하고 합집합으로 합쳐라

Ans =pd.merge(df5,df6,on='Algeria',how='outer')
Ans

 

 

  • on='Algeria': 병합 기준이 되는 열입니다. 두 데이터프레임 모두에 'Algeria'라는 열이 있어야 하며, 이 열의 값을 기준으로 데이터를 병합합니다.
  • how='outer': 병합 방식으로, outer 조인을 의미합니다. outer 조인은 두 데이터프레임의 'Algeria' 열의 모든 값을 포함하며, 일치하지 않는 값에 대해서는 NaN을 채웁니다.

 

이로써 홈페이지에 있는 모든 예제를 실행해 보았다. 아직  손에 익지 않아 어려움이 있지만

시험까지 다른 실습 문제들로손에 익을 때 까지 연습해야겠다.

 

반응형
Comments