본문 바로가기

프로그래머스 데브 코스/TIL

[6기] 프로그래머스 인공지능 데브코스 6일차 TIL

0906

3주차-Day3) Python으로 데이터 다루기 2 - Pandas

Pandas 시작하기

Table, 행과 열을 이용해서 데이터를 저장하고 관리하는 자료구조(컨테이너)
주로 '행'은 '개체', '열'은 '속성'을 나타냄
# 코드 위주 정리
import pandas as pd

 

Pandas로 1차원 데이터 다루기 - Series

1-D labeled array, 인덱스 지정 가능
# 코드 위주 정리
s = pd.Series([1, 4, 9, 16, 26])
t = pd.Series({'one':1, 'two':2, 'three':3, 'four':4, 'five':5})

s
t

 

Series + Numpy

'Series'는 'ndarray'와 유사하다
# 코드 위주 정리
s[1]   # 4

s.dtype   # dtype('int64')

import numpy as np

np.exp(s)

 

Series + dict

'series'는 'dict'와 유사하다
# 코드 위주 정리
t['one']   # 1

'seven' in t   # False

t.get('seven')
t.get('seven', 0)   # 0

 

Serie에 이름 붙이기

'name'속성을 이용해 시리즈에 이름을 붙일 수 있다
# 코드 위주 정리
s = pd.Series(np.random.randn(5), name="random_nums")
s.name = "임의의 난수"

s

 

Pandas로 2차원 데이터 다루기 - dataframe

2-D labeled table, 인덱스 지정 가능
# 코드 위주 정리
d = {"height":[1, 2, 3, 4], "weight":[30, 40, 50, 60]}

df = pd.DataFrame(d)

df

 

 

 

'Comma Separated Value'를 'DataFrame'으로 생성해 줄 수 있다
'.read_csv()'를 이용
# 코드 위주 정리
csv = pd.read_csv("파일 경로")

csv.head(5)   # 위에서부터 5개 관찰
csv.tail(5)   # 아래에서부터 5개 관찰

csv['열 이름']
csv.열 이름   # 결과는 똑같지만 아래 방식은 띄어쓰기가 되어 있을 경우 오류

csv['열 이름'][0]   # dataframe 각 열은 Series

 

 

'조건' 이용해서 데이터 접근하기
# 코드 위주 정리
# 신규 확진자가 100명이 넘는 나라를 찾아보자!

covid[covid["New cases"] > 100].head(5)   # 예시 코드


# WHO 지역(WHO Region)이 동남아시아인 나라 찾기

covid['WHO Region'].unique() 
# array(['Eastern Mediterranean', 'Europe', 'Africa', 'Americas',
#       'Western Pacific', 'South-East Asia'], dtype=object)

covid[covid['WHO Region'] == 'South-East Asia']

 

 

'행 기준'으로 데이터 접근하기, '인덱스/숫자 인덱스' 이용해서 데이터 가져오기
# 코드 위주 정리
# 예시 데이터 - 도서관 정보

books_dict = {"Available":[True, True, False], "Location":[102, 215, 323], "Genre":["Programming", "Physics", "Math"]}
books_df = pd.DataFrame(books_dict, index=['버그란 무엇인가', '두근두근 물리학', '미분해줘 홈즈'])

books_df.loc["버그란 무엇인가"]   # 인덱스 이용해서 가져오기
books_df.iloc[1, 0:2]             # 숫자 인덱스 이용해서 가져오기

 

 

'groupby'
- Split : 특정한 "기준"을 바탕으로 DataFrame을 분할
- Apply : 통계함수 - sum(), mean(), median() - 을 적용해서 각 데이터를 압축
- Combine : Apply된 결과를 바탕으로 새로운 Series 생성 (group_key : applied_value)
# 코드 위주 정리
#예시 데이터 셋 활용
# WHO Region 별 확진자 수

# 1. covid에서 확진자 수 column만 추출한다.
# 2. 이를 covid의 WHO Region을 기준으로 groupby한다.

covid_by_region = covid["Confirmed"].groupby(by=covid["WHO Region"])

covid_by_region.sum()
covid_by_region.mean()  # sum() / 국가 수