작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
238
·
수정됨
0
# city와 f4를 기준으로 f5의 평균값을 구한 다음, f5를 기준으로 상위 7개 값을 모두 더해 출력하시오 (소수점 둘째자리까지 출력)
# - 데이터셋 : basic1.csv
# - 오른쪽 상단 copy&edit 클릭 -> 예상문제 풀이 시작
# - File -> Editor Type -> Script
import pandas as pd
df = pd.read_csv("../input/bigdatacertificationkr/basic1.csv")
df.head()
# city와 f4별 f5의 평균 값 (멀티인덱스 출력)
df = df.groupby(['city', 'f4'])[['f5']].mean()
print(df)
여기서는 명확하게 그룹화 한 후에 평균값을 구하라고 명시되어 있어서 mean()을 썼지만
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# 주어진 데이터에서 상위 10개 국가의 접종률 평균과 하위 10개 국가의 접종률 평균을 구하고, 그 차이를 구해보세요
# (단, 100%가 넘는 접종률 제거, 소수 첫째자리까지 출력)
# - 데이터셋 : ../input/covid-vaccination-vs-death/covid-vaccination-vs-death_ratio.csv
# - 오른쪽 상단 copy&edit 클릭 -> 예상문제 풀이 시작
# - File -> Editor Type -> Script
import pandas as pd
df = pd.read_csv("../input/covid-vaccination-vs-death/covid-vaccination-vs-death_ratio.csv")
# print(df.head())
df2 = df.groupby('country').max() #시간에 따라 접종률이 점점 올라감
df2 = df2.sort_values(by='ratio', ascending = False)
여기서는 왜 groupby 뒤에 max()를 썼는지 이해를 못하겠어요,,
그리고 그 밑에 ratio 를 내림차순 정렬하는데 by= 의 의미를 모르겠어요,,
보통 내림차순 정렬은 df.sort_values('ratio', ascending=False) 로 하는데,, 여기서는 왜 by 쓴건가요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 답변 드리겠습니다.
먼저, groupby
뒤에 max()
를 사용한 이유에 대해 말씀드리면, 주어진 예시에서는 각 국가별로 시간에 따라 누적되는 접종률 데이터가 있습니다. 여기서 각 국가별 가장 최근의 접종률(즉, 가장 높은 접종률)을 찾기 위해 max()
함수를 사용한 것입니다.
by=
에 대하여, sort_values()
함수에서는 정렬 기준이 되는 열을 by
인자를 통해 지정할 수 있습니다. 여러 열을 기준으로 정렬할 때는 by
에 열 이름의 리스트를 제공할 수도 있습니다. 현재 예시에서는 ‘ratio’ 열만을 기준으로 정렬하기 때문에, df.sort_values('ratio', ascending=False)
와 df.sort_values(by='ratio', ascending=False)
는 동일한 결과를 출력합니다. by
를 명시적으로 작성할 경우, 코드의 가독성을 높일 수 있습니다.
접종률 데이터에서는 각 국가를 그룹화한 뒤에 각 국가별로 가장 높은 접종률을 나타내는 행을 선택하기 위하여 max()
함수를 사용한 것입니다. 그리고 sort_values()
함수를 사용해서 접종률(‘ratio’)을 기준으로 내림차순 정렬하였습니다. 여기서 by=
는 정렬 기준 열을 지정하는 키워드이며, ‘ratio’ 열을 기준으로 데이터프레임을 정렬하라는 의미입니다. by
를 사용하는 것과 사용하지 않는 것 사이에 기능적인 차이는 없으나, 명시적으로 by=
를 사용함으로써 코드를 더 명확하게 만들 수 있습니다.
이 방식을 통해 상위 10개 국가와 하위 10개 국가의 접종률을 비교하는 것이죠.