KT 에이블스쿨 11일차(1)

박기범·2023년 2월 14일
0

에이블스쿨

목록 보기
15/95
post-custom-banner

오늘은 미니프로젝트 2일차!



미니프로젝트에 사용한 코드 리뷰

데이터및 CSV파일을 올리지 못하는 관계로 미니프로젝트를 하면서 사용한 코드 리뷰하겠습니다.



데이터프레임의 정보 확인

데이터프레임의 모양(형태)를 알고 싶을 때 .shape()를 사용해주면 데이터프레임의 행과 열을 반환해줍니다.

CSV형태의 데이터가 주어지면 pd.read_csv()를 사용하여 파일을 읽어들여옵니다.
이제 파일을 읽어들여오면 데이터프레임의 형태로써 다양한 함수사용이 가능합니다.

데이터의 윗 부분만 확인하고 싶을 때 .head()를 사용해줍니다. 괄호에 숫자로 옵션을 줄 수 있으며, .head(10)으로 옵션을 주면 데이터의 상위 10줄을 출력해줍니다.

데이터 아랫부분을 확인하고 싶을 때는 .tail()를 사용해줍니다. 마찬가지로 괄호안에 옵션 값을 설정해서 출력할 행의 갯수를 선택할 수 있습니다.

데이터의 컬럼(열)의 정보를 확인하기 위해서는 .info()를 사용하면 해당 데이터의 열 정보를 알 수 있습니다. 만약 열의 정보가 str형이면 object라고 표시되고 int형이면 int64 이런식으로 해당 열의 데이터타입을 반환해서 알려줍니다. 또한 해당 열의 행의 갯수도 알려줍니다.

컬럼들의 평균, 4분위수, 표준편차, 최댓값, 최솟값의 정보를 알고 싶을 때는 describe()를 사용해주면 정보를 출력해줍니다.



데이터 처리

문자형 데이터의 데이터 자르는 방법은 str.slice(start=시작위치, stop=짜를 위치)를 사용해주면 짜를 위치 -1만큼 문자열을 잘라줍니다.

결측치 NaN을 처리하기 위해서는 .dropna()를 사용해주면 NaN값을 가진 행들을 모두 지워줍니다.

데이터프레임의 원하는 컬럼의 데이터타입을 변경해주기 위해서는 astype()을 사용해줍니다. astype을 사용할 때 여러가지 방식이 있는데 변하시키고자하는 컬럼명과 데이터타입을 딕셔너리 형태로 주면 변화가 가능합니다.
예를들어 A열의 데이터타입이 object타입인데 정수형으로 변환하고자 하면 astype({'A': ''int})이런식으로 사용하면 됩니다.

데이터프레임을 그룹화를 해주고 싶을 때는 groupby()를 사용해주면 됩니다. 그룹화를 해줄 때 집계함수를 같이 사용해줄 수 있습니다. 집계함수를 사용하면 그룹화해준 컬럼명 별로 집계데이터 확인이 가능합니다.

groupby()의 옵션중에 as_index=Fasle가 있습니다. 해당 옵션을 사용해주면 그룹으로 만들어준 열을 인덱스처럼 사용하지 않고 행 형태로 저장해서 데이터를 조회해줍니다.

데이터프레임에도 조건을 걸어서 원하는 데이터만 출력해서 확인이 가능합니다. .loc[]를 사용해주어 대괄호안에 조건을 걸어주어 해당하는 열들만 조회가 가능합니다. .loc[데이터프레임['A'] > 5]이런 식으로 사용해주면 A열 중에 5보다 큰 데이터들의 행만 출력해서 보여줍니다.

.loc[]와 비슷하게 생긴 .iloc[]가 있습니다. iloc는 대괄호안에 [행,열]을 넣어주면 해당하는 값들만 조회해서 보여줍니다. 예를들어 .iloc[:,0,2,4]를 사용해주면 모든행을 가져오고 열 번호로 0번째 열, 2번째 열, 4번째 열을 조회해줍니다.

유니크한 데이터값만을 출력하기 위해서는 .unqiue()를 사용합니다. 만약 해당하는 행의 총 갯수를 알고 싶을때는 nunique()를 사용해주면 해당 데이터 갯수를 반환해줍니다.

컬럼명을 다시 설정해주고 싶을 때 .rename()을 사용해줍니다. 사용해주는 형태는 딕셔너리 형태로 값을 넣어주어 컬럼명 변경이 가능합니다. .rename({'A':'A의열'}) 이 처럼 코드를 작성하면 컬럼명 A가 A의열 이라고 컬럼명 변경이 이루어집니다.

데이터를 정렬해주고 싶을 때는 .sort_values('컬럼명')을 사용해주면 해당 컬럼명의 데이터들을 오름차순으로 정렬해서 데이터프레임을 조회합니다. 만약 오름차순 말고 내림차순으로 보고 싶을때면 옵션으로 .sort_values('컬럼명', ascending=False)를 사용하면 됩니다.

변수의 value수를 확인하고 싶을 때는 value.counts()를 사용해주면 해당 컬럼의 변수들의 갯 수를 반환해줍니다.

원하는 값들만 뽑아서 인덱스를 재정렬하기 위해서는 .reset_index()를 사용합니다. 옵션으로 drop=True를 사용해주면 제거한 인덱스를 추가하지 않으므로 1,2,3이런식으로 다시 인덱스가 재정렬됩니다. .reset_index(drop=True)와 같이 사용합니다.



데이터 합치기

2개의 데이터를 합치기 위해서 사용하는 함수로는 concat()merge()가 있습니다. 이번 프로젝트에서는 merge만 사용했습니다.

merge의 옵션으로는 how=' 'on=' '이 있습니다. how는 어떤 방식으로 데이터프레임을 합칠지 결정하는 옵션이고 on에는 기준 컬럼명을 작성해주면 됩니다.



데이터 분석(시각화와 수치화)

단변량 시각화로는 sns.boxplot()이 있습니다. 그러면 해당 변수에 대한 사분위수와 이상치를 확인할 수 있습니다.

다른 단변량 시각화로는 sns.countplot()plt.hist()가 있습니다.

sns.distplot()을 사용하면 여러 옵션을 사용하여 시각화가 가능합니다.

이번 실습에서는 수치형->수치형의 데이터 시각화밖에 없어서 sns.scatterplotsns.regplot()을 사용했습니다.

모든 수치형 변수에 대한 상관계수 r을 구해서 보여주는 함수로는 .corr()이 있습니다.

수치형 -> 수치형의 통계량과 p_value를 구하는 방법으로 spst.pearsonr()를 사용하여 두 변수간의 통계량과 p_value를 구해줬습니다.

추가적으로 sns.heatmap()을 사용했는데 상관계수에 색이 입혀져서 어느 변수들이 더 관련이 있는지 알기 쉬웠습니다.







이번 프로젝트에서 사용한 함수들을 한번 정리해봤습니다. 정규시간에 배우지 않았던 함수도 있어 많이 당황했지만 많이 공부할 수 있었던 기회가 된 것 같습니다.




※공부하고 있어 다소 틀린점이 있을 수 있습니다. 언제든지 말해주시면 수정하도록 하겠습니다.
※용어에 대해 조금 공부 더 해서 수정하겠습니다.

profile
개발자가 되기 위한 한걸음
post-custom-banner

0개의 댓글