갭마인더 데이터 집합에서 만약 내가 연도별 gdpPercap의 평균값을 알아보고 싶다고 하자. 이런 경우에는 연도별, 즉 year의 열로 '그룹화'를 한 다음 gdpPercap열의 평균을 구해주는 순서로 진행하면 된다. 이를 코드로 작성하면 다음과 같다.
처음 보기에는 막상 작성하려 보니 막막한 코드이다. 이 코드의 유도과정을 하나씩 살펴보면 이러한 순서가 나온다.
우선 연도별로 '그룹화'를 시키자. 데이터 프레임을 그룹화 시키기 위해서는 groupby()라는 메소드가 사용된다. groupby()메소드의 parameter으로는 그룹화 하려는 열의 이름이 들어가는데 만약 그룹화할 기준 열이 하나라면 작은따옴표로 묶은 후 작성해 주면 되지만 만약 그룹화 하려는 열의 이름이 2개 이상이 된다면 리스트 형태로 넣어주어야 한다. groupby()메소드로 그룹화를 하게 되면 DataFrameGroupby라는 자료형의 값을 반환한다.
그 다음에는 gdpPercap의 열을 추출해 보자. 열을 추출하는 방식은 앞에서 사용한 방식과 동일하다.(열을 기준으로 추출하기 위해서는 열의 이름과 대괄호가 쓰인다는점의 기억을 되살리자)
사진을 보면 우선 year이라는 열로 그룹화된 a를 통해 gdpPercap이라는 열을 추출하여 b에 저장하였다. 그 후 b의 자료형을 보면 SeriesGroupBy라는 자료형으로 바뀐것을 알 수 있다. 정리해 보자면
groupby()메소드를 통한 그룹화한 후의 자료형 -> DataFrameGroupBy
그룹화된 데이터 프레임을 통한 열 추출 후의 자료형 -> SeriesGroupBy
가 되는것이다. 그 후 우리는 결론적으로 연도별 gdpPercap의 '평균값'을 알고싶은 것이다. 평균값을 구하기 위해 최종적으로 그룹화와 열 추출이 끝난 후 데이터가 저장된 b변수에 평균을 구할때 쓰이는 mean()메소드를 이용하여 평균을 출력할 수 있다.
좀더 응용하여 연도와 대륙별 gdpPercap과 lifeExp의 평균값을 알고싶다고 하자 그럼 다음과 같이 작성을 하면 된다(만약 이 코드가 이해되지 않는다면 위의 과정을 다시 이해하고 오자)
만약 위의 연도와 대륙별 lifeExp, gdpPercap을 구한 자료에서 그룹화한 데이터의 개수가 몇개인지 알아보고 싶다고 가정하자. 통계에서는 이와 같이 그룹화한 데이터의 개수를 '빈도수'라고 명칭한다. 빈도수를 구할때는 .unique()메소드를 이용하면 된다.
해당 데이터의 그룹화한 데이터의 개수가 이해가 안될 수 도 있기에 이를 해석해주면 첫번째 줄을 예시로 보면 1952년의 데이터중, Africa라는데이터를 총 52개를 그룹화 하였다 라고 해석할 수 있다.
'DataAnalysis > Python Pandas' 카테고리의 다른 글
판다스 데이터 시각화 - 그래프 그리기, matplotlib : 1 (0) | 2019.03.09 |
---|---|
그래프 그리기 (0) | 2019.03.07 |
loc, iloc 활용해 보기 (0) | 2019.02.25 |
데이터 추출하기(Data Extraction) (0) | 2019.02.25 |
판다스 & 파이썬 자료형 비교 (0) | 2019.02.25 |