[인공지능 데브코스] 3주차 day2 - pandas
12월 15일 화
오늘은 numpy와 같이 사용되는 데이터 분석 라이브러리인 pandas에 대해 공부하였다. numpy는 다뤄본적이 있었지만 pandas는 아예 처음 보는 라이브러리었기에 조금 생소했던것 같다. 그러나 사용법이 numpy와 유사한 부분이 많아서 계속 사용하다보면 금방 익숙해 질 것 같다. 꾸준히 사용하면서 사용법에 익숙해져야 겠다는 생각이 들었다.
pandas란
pandas는 table의 역할을 대체하기 위해 많이 사용되는 파이썬 라이브러리 이다.
행과 열을 이용해서 데이터를 저장하고 관리하며
주로 행은 개체, 열은 속성을 나타낸다.
1차원 데이터 Series
pandas에서 1차원 데이터는 series라는 것으로 다룬다.
s = pd.Series(list) 인덱스를 0부터 차례대로 넣어주고 마지막에는 dtype을 알려준다.
t = pd.Series(dic)
인덱스를 숫자대신 key값으로 지정해 준다.
series는 numpy의 ndarray와 유사하며 slicing이 가능하다.
ex) t[1:3]
s[s>s.median()]과 같이 조건에 의한 추출도 가능하다.
s[[3,1,4]]와 같이 리스트를 넣어주면 해당 인덱스의 값이 추출된다.
Series는 dictionary와 유사하다
t[key]: 해당 key의 value반환
t[newkey] = newval: 새로운 값 추가
key in i로 유무확인가능
t.get(key,0)가능
Series에 이름붙이기
series는 ‘name’속성을 가지고 있다.
처음 series를 만들때 이름을 붙일 수 있다.
ex) s = pd.Series(np.random.randn(5), name = “random_nums”)
2차원 데이터 DataFrame
pandas에서 2차원 데이터는 DataFrame으로 다룬다.
d = {a:[1,2,3,4], b:[5,6,7,8]}
df = pd.DataFrame(d)
df = pd.DataFrame(d, index = list}
index를 지정해 줄 수 도 있음 (안하면 0123)
array와는 다르게 숫자뿐만아니라 문자, 날짜, 객체 등 여러타입을 담을 수 있다.
df.dtypes : 각 요소의 dtype확인
from CSV to dataframe
Comma Separated Value를 DataFrame으로 생성해줄 수있다.
.read_csv() 사용
csv파일의 형식
첫줄: 각 column에 해당하는 이름
나머지: 순서에 맞춰서 해당하는 데이터
covid = pd.read_csv(path)
csv파일을 dataframe화 가능
pansdas활용
일부분만 관찰하기
covid.head(n): 처음 n개의 데이터 참조
covid.tail(n): 마지막 n개의 데이터 참조
데이터 접근하기
df[‘column_name’] or df.column_name: 해당 열 접근
후자의 접근방법은 띄어쓰기 같은걸 인식을 못함
위의 방법으로 가져온 열의 타입은 series이다
=> dataframe의 각 column은 Series다
indexing, slicing 가능
“조건”을 이용해서 데이터 접근하기
covid[covid[‘New cases’] > 100] : 해당 조건을 만족하 row만 추출한다.
covid[‘WHO Region’].unique(): 데이터들을 중복 없이 출력
범주의 종류를 확인
행을 기준으로 데이터 접근하기
.loc[row_name,col_name]
df.loc[row_name]: 해당 row 추출
df.loc[:, col_name]: 해당 col 추출
얘 또한 series다!
df.loc[row_name, col_name]: 해당 row, col에 해당하는 값 반환
df.loc[row_name][col_name] 해도됨
숫자 인덱스를 이용해서 가져오기: .iloc[rowidx, colidx]
위와 같지만 숫자index를 이용해서 가져올 수 있다.
df.iloc[rowidx, colidx]
numpy와 완전히 동일 slicing가능
groupby
split: 특정한 “기준”을 바탕으로 dataframe을 분할
apply: 통계함수 - sum(), mean(), median(), -을 적용해서 각 데이터를 압축
combine: apply된 결과를 바탕으로 새로운 Series를 생성 (group_key : applied_value)
- covid에서 확진자 수 column만 추출한다
- 이를 covid의 WHO Region을 기준으로 groupby한다.
covid_by_region = covid[‘Confirmed’].groupby(by=covid[“WHO Region”])
split만 적용한 상태: 데이터가 지역을 기준으로 분할만 된 상태 정보를 출력할 수는 없다.
covid_by_region.sum()
지역별 데이터의 합을 출력해 준다.
covid_by_region.mean()
데이터들의 평균을 출력해 준다.