본문 바로가기
개발 Tools/파이썬_Pandas & Numpy

파이썬 pandas 기본&통계 ( drop(), loc[], value_counts(), DataFrame(),min(), max(), describe(), count(), mean(), median())

by 전컴반 2021. 4. 8.
반응형

안녕하세요!

 

이번엔 파이썬의 pandas 기본 사용법을 알아볼까 합니다!

 

먼저 pandas는 간단히 말해 엑셀이라 볼 수 있는데요. 저희가 보기 쉽게 정리하고, 원하는 값을 삭제, 추출을 할 수 있는 엄청난 친구입니다!! 그치만 저는 그 잠재력을 끌어낼 수 있을지 모르겠네요.. 한번 해 볼 수 있는 데까지 해보겠습니다 

 

보통은 엑셀 파일을 불러오거나 하지만, 기본 편이라 임의로 한번 만들어 보겠습니다

 

데이터 프레임 만듦

 

일단 pandas 를 불러와야겠죠?? 첫 번째 말은 pandas 를 불러오는데 이름은 줄여서 pd 라 부를게 이 말입니다. 이름은 뭐라 붙혀도 상관없으나 통용상 pd 라 칭합니다

 

'a' 라는 열(column)을 만들고, [] 안의 값을 집어넣습니다. 그리고 만든 순서대로 index. 즉, 이름을 붙입니다

 

출력

 

저희가 만든 데이터 프레임을 출력하면 행렬로 나옵니다! 엑셀표와 유사하죠?

 

원하는 열 출력

내가 원하는 행 또는 열 만 출력하고 싶다면 어떻게 해야 할까요?? 

열을 추출하고 싶을 땐 [] 를 사용하면 됩니다!

 

이렇게 하면 'a' 안에 있는 값들을 출력해줘 입니다. Name : a 라고 돼 있습니다! 만약 2개의 열을 출력하고 싶다면

df['a','b'] 를 하면 됩니다

 

데이터 프레임 형태로 출력

출력값만 딱 봤을 때 이게 무슨 열의 값인지 알 수 없습니다! 그렇다면 어떻게 해야 할까요?

데이터 프레임 형태로 가져오면 더 편하게 알 수 있을 거 같습니다

 

 

이제 좀 더 원하는 모양으로 나온 거 같네요!

[[]] 즉,  괄호를 두 번 사용한다는 건 데이터 프레임의 형태로 가져온다는 말입니다! 기억해 두시면 좋을 거 같습니다

 

원하는 행 출력

이번엔 특정 행을 가져와 보겠습니다!

행을 추출하고 싶을 땐 loc 라는 함수를 사용합니다!

 

 

여기서 중요한 건, [] 안에 행의 이름이 들어간다는 것입니다!

 

데이터 프레임 형태로 출력 

근데 데이터 프레임의 모양이 바뀌었습니다. 그래서 보기에 혼돈이 있을 수 있습니다. 데이터 프레임의 모양은 유지하면서 가져오고 싶다면 다른 방법이 있습니다. 위에서 보았듯이 [[]] 를 사용합니다!

 

이렇게 보면 좀 더 직관적이고 편하게 볼 수 있을 거 같습니다! 

 

열과 마찬가지로 여러 개의 행을 가져오고 싶다면 df.loc[[1,2]] 로 사용하시면 됩니다!

 

크기 비교

다음으로 수치형 데이터에 해당하는 값들 중 일정 수준 이상 또는 이하의 값들만 보고 싶다면 어떻게 해야 할까요? 크기 연산자를 사용해야겠죠?

 

이렇게 하면 4 보다 큰 값은 True, 작은 값은 False 로 표시합니다.

 

총 몇 개인지 알려면 어떻게 할까요? 

df[df>4].count().sum() 입니다!

 

데이터 프레임으로 만들면 == df[df>4]. / 4 이하의 숫자는 NaN, (Not a Number) 로 나타납니다.

 

이때, count() 함수를 사용하여 각 행에 값이 있으면 카운트합니다. 그리고 마지막으로 sum() 을 하면 행에서 카운트했던 것을 더해서 총합을 나타냅니다!! 여기선 8이 되겠죠?!

 

값 빈도수 확인

그렇다면 각각의 열에서 무슨 값들이 얼마나 있는지 알려면 어떻게 할까요?? 즉, 빈도수를 확인하는 건 꼭 필요한 과정인데요. value_counts() 입니다!

 

'a' 의 열에는 4가 1번/ 5가 1번/ 6이 1번 존재한다는 뜻입니다! 쉽죠?? 

 

행 기준 제거

마지막으로는 제거를 해보겠습니다. 필요 없는 값들은 처리 속도만 늦추니 먼저 제거하는 게 더 효율적일 것입니다!

형을 기준으로 제거할지,열을 기준으로 제거할지 선택할 수 있습니다. drop() 이라는 함수를 사용합니다

 

행을 기준으로 삭제해 보겠습니다!

사용법은 굉장히 간단합니다. 그냥 제거하고 싶은 행의 이름을 넣어주면 됩니다.

 

만약, 2개 이상을 같이 삭제하고 싶다면 어떻게 해야 할까요?

직관적으로 df.drop(1,2) 를 하면 될 거 같습니다. 그렇지만 이렇게 하며 오류가 뜹니다.  사실 df.drop([1]) 인데 하나면 [] 를 생략해서 사용 가능합니다.하지만 2개 이상이라면 []를 해줘야 합니다. 따라서 2개 이상의 행을 지우고 싶다면, df.drop([1,2]) 이렇게 해 줘야 합니다 

 

열 기준 제거

그럼 이번엔 열을 기준으로 삭제해 보겠습니다

 

 

행을 기준으로 삭제하는 것처럼 똑같으나, axis = 1 이라는 코드가 하나 더 붙습니다. axis 는 축을 의미하는데요

기본적으로 drop() 은 axis = 0, 즉, 행을 기준으로 하고 있습니다.

 

만약 저희가 열을 기준으로 날리고 싶다면, drop() 안에 axis = 1 이라는 걸 알려줘야 합니다!! 꼭 기억해두시면 좋을 거 같습니다.

 

기초 통계량

이번에는 기초 통계량을 구해보겠습니다. 기초 통계량이라 함은 ["평균, "최대/최소", "중앙값", "사분위 수"] 를 의미합니다.

시작하기 전에 위에 있던 df가 아닌 새로운 df 를 가져오겠습니다

 

컬럼명 확인

새로운 df 에 어떤 columns 가 존재하는지 보겠습니다

 

 

여러 컬럼들이 존재하는데요. 저희는 수치형 데이터인 "위도"에 대해서 다루겠습니다. 문자형에 대해서는 기초통계랑을 구할 수 없습니다.

 

평균

이제 기초 통계량 중에 하나인 "평균"을 알아보겠습니다

사용하는 코드는 df["위도"].mean() 입니다

 


df["위도"].mean()

 

뒤에 "." 은 "~의" 라고 생각하시면 이해하기 편하실 거 같습니다

 

중앙값

다음으로는 중앙값에 대해 알아보겠습니다. 중앙값은 평균에 영향을 받지 않고 순서로 봤을 때 중앙에 있는 값을 의미하는데요

사용하는 코드는 df.["위도"].median() 입니다

 


 df["위도"].median()

 

근데 만약에서 짝수개의 중앙값은 어떻게 할까요?

 

1,2,3,4,5 처럼 홀수면 딱 3이 중앙값이지만 1,2,3,4 처럼 짝수면 중앙값은 어떻게 처리할까요? 정답은 2,5 입니다. 즉, 두 수의 가운데 값을 따라갑니다

 

최대값, 최솟값

다음으로는 최대, 최솟값을 알아보겠습니다

 


df["위도"].max()
df["위도"].min()

 

describe() 함수

다음으로는 위에서 구한 값들에 "사분위수"를 추가하여 한번에 구해주는 코드가 있습니다 .df["위도"].describe() 라는 코드입니다

 

 

여러 가지 데이터들을 한 번에 보여줍니다. 하지만 "평균"만 있으면 되는데 굳이 describe 를 쓸 필요는 없겠죠??

 

문자형 데이터에 대한 describe()

위에서 말했던 것처럼 이런 평균들은 수치형 데이터에만 해당이 됩니다. 그렇다면 문자형 데이터는 어떻게 할까요?

 

조금 다르게 문자형 데이터는 빈도수와 중복 값에 대한 count 를 해줍니다. 코드는 위에서 사용했던 describe()를 사용하는데요. () 안에 include="object" 를 집어넣습니다

 

 

위에 간단한 설명을 하자면, top은 가장 많이 등장한 object 를 나타냅니다. freq는 대한 카운트를 해줍니다. 상호명을 기준으로 보면 "리원"이 152번 나왔다는 말입니다. unique는 몇 개 있는지 알려줍니다. 겹치지 않는 이름이 56910개라는 의미입니다

 

이상으로 pandas 기본&통계 편을 마칩니다. 

감사합니다. 

반응형

댓글