Python - 데이터분석 2

2022. 6. 15. 23:03Python

2장 추출한 데이터를 이용한 기초 통계 계산

1장에서 다룬 데이터 추출을 이용하여 간단한 통계 계산에 대해 다뤄보자.

 

1장에서 사용한 gapminder.tsv 파일로 통계 계산을 할 것이다.

 

 

groupby 메소드

가령 연도별 lifeExp열의 평균을 계산하려면 어떻게 해야할까?

데이터를 year열로 그룹화하고 lifeExp 열의 평균을 구하면 된다.

 

print(df.groupby('year')['lifeExp'].mean())

출력 결과

year
1952    49.057620
1957    51.507401
1962    53.609249
1967    55.678290
1972    57.647386
1977    59.570157
1982    61.533197
1987    63.212613
1992    64.160338
1997    65.014676
2002    65.694923
2007    67.007423
Name: lifeExp, dtype: float64

연도별로 그룹화 하여 lifeExp의 평균값만 뽑아낸 데이터가 출력이 된다.

* year열을 데이터프레임에 전달하여 연도별로 그룹화 -> lifeExp 열을 지정 -> mean 메소드를 이용한 평균값 계산 

 

판다스를 이용하면 위의 간단한 코드 한줄만으로 원하는 데이터만 볼 수 있다는 것이 신기하다.

 

위를 응용하여 간단히 연습을 해보도록하자

print(df.groupby(['year','continent'])[['lifeExp','gdpPercap']].mean())

연도와 지역별로 그룹화하여 lifeExp, gdpPercap의 평균만 추출하는 코드이다.

                  lifeExp     gdpPercap
year continent                         
1952 Africa     39.135500   1252.572466
     Americas   53.279840   4079.062552
     Asia       46.314394   5195.484004
     Europe     64.408500   5661.057435
     Oceania    69.255000  10298.085650
1957 Africa     41.266346   1385.236062
     Americas   55.960280   4616.043733
     Asia       49.318544   5787.732940
     Europe     66.703067   6963.012816
     Oceania    70.295000  11598.522455
1962 Africa     43.319442   1598.078825
     Americas   58.398760   4901.541870
..........................................

 

그룹화한 데이터 개수 세기

그룹화한 데이터의 개수를 빈도수라고 하며 이는 nunique 메소드를 사용하여 쉽게 구할 수 있다.

print(df.groupby('continent')['country'].nunique())

출력 결과

continent
Africa      52
Americas    25
Asia        33
Europe      30
Oceania      2
Name: country, dtype: int64

 

 

그래프를 이용해 데이터를 시각화 해보기

matplotlib를 사용하여 그래프를 파이썬에서 그릴 수 있다.

pip install matplotlib

터미널에 입력해주어 해당 라이브러리를 설치해준다.

import pandas as pd
import matplotlib.pyplot as plt #새로 설치한 라이브러리 설치

df = pd.read_csv('./doit_pandas-master/data/gapminder.tsv', sep='\t')

global_yearly_life_expectancy = df.groupby('year')['lifeExp'].mean()
global_yearly_life_expectancy.plot()
plt.show()

출력 결과

이와 같이 직접 그래프로 시각화를 할 수 있다는 점을 기억하자 

'Python' 카테고리의 다른 글

Python - Pandas 1  (0) 2022.11.08
Python - 데이터 분석 3  (0) 2022.06.16
Python - 데이터분석 1  (0) 2022.06.15
Python - 시리즈  (0) 2022.04.18
Python - 간단한 함수 예제  (0) 2022.04.12