오늘은 미니프로젝트 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.scatterplot
과 sns.regplot()
을 사용했습니다.
모든 수치형 변수에 대한 상관계수 r을 구해서 보여주는 함수로는 .corr()
이 있습니다.
수치형 -> 수치형의 통계량과 p_value를 구하는 방법으로 spst.pearsonr()
를 사용하여 두 변수간의 통계량과 p_value를 구해줬습니다.
추가적으로 sns.heatmap()
을 사용했는데 상관계수에 색이 입혀져서 어느 변수들이 더 관련이 있는지 알기 쉬웠습니다.
이번 프로젝트에서 사용한 함수들을 한번 정리해봤습니다. 정규시간에 배우지 않았던 함수도 있어 많이 당황했지만 많이 공부할 수 있었던 기회가 된 것 같습니다.
※공부하고 있어 다소 틀린점이 있을 수 있습니다. 언제든지 말해주시면 수정하도록 하겠습니다.
※용어에 대해 조금 공부 더 해서 수정하겠습니다.