데이터 분석 3-1~2 주류 데이터 분석 - 데이터 프레임 익숙해지기 (1)

addison·2022년 5월 5일
0

데이터 분석

목록 보기
20/48

3-1 3주차 오늘 배울 것

  • 데이터 프레임 사용법을 익힌다.
  • 파이썬을 이용해서 데이터를 각종 차트로 시각화해본다.
  • 상관 관계 분석에 대해서 이해한다.

👨‍🏫

  • 1~2차는 처음 파이썬을 접하기도 했고 처음 나오는 개념들도 많아서 처음 접하시는 분들은 되게 생소하고 어려웠을 수도 있어요.
  • 3주차에는 그 원리들을 어떻게 하면 좀 잘 활용할 수 있는지, 거기서 어떻게 하면 더 심화되서 들어갈 수 있는지 이런 것들을 이제 같이 공부하는 거거든요. 그래서 만약에 1~2주차 과정을 잘 따라오셨다면, 3주차 부터는 무리없이 조금은 더 빠르게 따라갈수 있다.
  • 조금 더 정석적인 데이터 분석 방법 공부할 것임.

3-2 주류 데이터 분석 - 데이터 프레임 익숙해지기(1)

1) CSV 파일 읽기

오늘 사용할 데이터는 국가별 주류 소비량 데이터입니다.

drinks.csv

판다스는 데이터가 위치한 URL을 입력하는 것만으로도 데이터를 바로 읽어오는 기능을 가지고 있습니다. 그래서 굳이 위 데이터를 수강생분들의 컴퓨터에 다운로드 할 필요없이 Colab에서 아래의 코드를 실행하는 것만으로도 데이터를 로드할 수 있습니다. csv 파일 형태의 데이터를 로드하여 데이터프레임에 저장해봅시다.

csv 파일을 데이터프레임으로 읽을 때 pd.read_csv()를 사용합니다.

▶ [코드스니펫] 주류데이터 불러오기

import pandas as pd
url = 'https://raw.githubusercontent.com/justmarkham/DAT8/master/data/drinks.csv'
drink_df = pd.read_csv(url, ',')

drink_df의 타입을 확인해봅시다.

# 타입 확인
type(drink_df)

>>>> 실행 >>>>>

pandas.core.frame.DataFrame

데이터프레임이라고 출력되는 것을 확인할 수 있습니다.

2) 데이터프레임의 출력

head()는 상위 5개의 행을 출력합니다.

# 상위 5개의 행을 출력
drink_df.head()

head(숫자)는 상위 입력한 숫자만큼의 행을 출력합니다.


# 상위 10개의 행을 출력
drink_df.head(10)

tail()은 하위 5개의 행을 출력합니다.


# 하위 5개의 행을 출력
drink_df.tail()

sample(숫자)는 랜덤으로 선택된 10개의 행을 출력합니다. 데이터를 눈으로 파악할 때 연속적으로 실행하며 데이터를 파악하기에 좋습니다.


# 랜덤으로 선택된 10개의 행을 출력
drink_df.sample(10)

index는 데이터프레임의 인덱스를 확인합니다.

df.index

>>>>>>>>>>>실행 >>>>>>>>>>>>>
RangeIndex(start=0, stop=193, step=1)

현재 인덱스는 0부터 시작해서 +1씩(step) 증가하여 192까지 있습니다. 참고로 193에서 stop한다는 것은 193은 포함하지 않는다는 의미입니다. 즉, 0번부터 192번까지의 샘플이 있는 셈이므로 총 샘플의 수는 193개입니다.

dtypes는 각 데이터프레임의 열의 타입을 확인할 수 있습니다.


# 각 컬럼의 타입 출력
drink_df.dtypes

>>>>>>>>>>>>>>>>>>>실행>>>>>>>>>>>>>>.
country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object

참고로 데이터프레임의 타입에서 ojbect라고 표현되는 부분은 해당 타입이 문자열이라는 의미입니다. int64는 정수형 데이터, float64는 실수형 데이터를 의미합니다.

다시 말해 위의 출력 결과를 해석해보면, country, continent 열은 문자열 데이터로 구성되어져 있고, beer_servings, spirit_servings, wine_servings 열은 정수형 데이터, total_litres_of_prue_alcohol 열은 실수형 데이터로 구성되어져 있다는 의미입니다.

이를 통해서 각 열의 데이터 자료형이 무엇인지를 파악할 수 있습니다.

shape는 데이터프레임의 행과 열의 수를 확인할 수 있습니다.

# 데이터프레임의 행과 열의 개수 출력
drink_df.shape

>>>>>>>>>>>>실행>>>>>>>>>>>>>>>>>>

(193, 6)

위 출력 결과는 해당 데이터프레임이 193개의 행, 6개의 열을 가지고 있음을 알려줍니다.

values는 데이터프레임 형태를 Numpy 행렬 형태로 변환하여 출력합니다.

# Numpy 타입으로 출력
drink_df.values

>>>>>>>>>>>>>>실행 >>>>>>>>>>>>>>>

array([['Afghanistan', 0, 0, 0, 0.0, 'AS'],
       ['Albania', 89, 132, 54, 4.9, 'EU'],
       ['Algeria', 25, 0, 14, 0.7, 'AF'],
       ...,
       ['Yemen', 6, 0, 0, 0.1, 'AS'],
       ['Zambia', 32, 19, 4, 2.5, 'AF'],
       ['Zimbabwe', 64, 18, 4, 4.7, 'AF']], dtype=object)

Numpy에 대해서는 이 수업에서 다루지는 않았지만 정말~ 간단히 요약하자면

각각의 행을 아래와 같이 데이터프레임의 행 형태에서

아래와 같은 형태로 변환된다고 보면 되겠습니다.

  • ['Afghanistan', 0, 0, 0, 0.0, 'AS']

변환한 데이터의 첫번째 행을 출력해볼까요? 이는 변환 후 0번 인덱스로 접근하면 됩니다.

drink_df.values[0]

array(['Afghanistan', 0, 0, 0, 0.0, 'AS'], dtype=object)

위와 같은 형태로 변환이 되었다는 것은 다음과 같이 for문 접근도 가능하다는 의미입니다.

# 각 원소를 순차적으로 꺼내서 출력
for element in drink_df.values[0]:
  print(element)
  
>>>>>>>>>>>>>실행>>>>>>>>>>>>>>>>

Afghanistan
0
0
0
0.0
AS

필요에 따라 변환해서 사용하면 되겠지요?

0개의 댓글