본문 바로가기
python

Python DataFrame 전체 값 개수 세고 나열하기(value_counts()/concat()/fillna()/sum()/sort_values())

by WeRun 2022. 8. 4.

Excel 데이터 취합을 하다보면 카테고리별 잘 나눠진 데이터가 아닌 분류없이 무작위로 써진 데이터를 볼수있는데요.

간단하게 예를들면 제조현장에서는 일별 고장난 설비명을 순서없이 쭉 나열해 놓던지, 학교에서는 일별로 떠든사람을 순서없이 나열하는 경우입니다. 

하루 이틀 축적된 데이터라면 쉽게 계산이 되지만 몇주 몇달씩 쌓은 데이터를 일괄 분석하는 것은 쉽지 않은데요.

이렇게 쌓인 데이터의 값 개수를 세고 고장이 많이 발생한 또는 많이 떠든사람을 순서대로 나열해 보겠습니다.

우선 위와 같이 일별 떠든사람이 나열되어 있는 엑셀 표를 불러왔습니다.

값들이 무엇으로 이루어지고 몇개의 값을 가지는지 알려주는 value_counts() 함수가 데이터프레임 전체를 대상으로 사용 할 수 있다면 좋을텐데 아쉽게도 데이터프레임의 한 column에만 적용되기 때문에 데이터프레임에 value_counts()함수를 사용하면 전체 칼럼이 한 묶음이 되어 카운트 되는 것을 볼 수 있습니다. 이때 nan은 계산되지 않습니다.

많은 컬럼 중 df['1일']에 대한 value_counts()를 받아와 확인해보면 값과 값의 개수가 나타나는 것을 확인할 수 있습니다.

그리고 이 값을 확인하기 위해 info()를 확인해보면 Series 유형이며, 떠든사람은 Index, Series name은 column명인 1일 인것을 확인 할 수 있습니다.

Series를 합치기 위해 concat()을 사용하였고 간단한 for문을 사용해서 1일~4일 동안 떠든사람 명단은 index로 

일별 떠든 횟수는 값으로 표현 되었습니다.

이렇게만 구성해 놓으면 누가 4일동안 가장 많이 떠들었는지 그리고 떠든사람은 누구누구였는지 쉽게 볼 수 있습니다.

이상태에 합을 구하기 위해 NaN을 모두 0으로 변경해 주기위해서 fillna()함수를 사용하였습니다.

그리고 sum 함수를 사용하여 마지막 열에 '합'을 추가해 줍니다.

마직막으로 sort_values()함수를 사용해서 정리해주면 아래와 같습니다.

4일동안 떠든사람은 박씨,김씨,이씨,송씨,최씨,채씨,방씨,강씨,마씨,양씨,구씨이고, 4일 동안 가장 많이 떠든사람은 김씨였습니다!!

 

무작위로 나열된 데이터의 항목을 확인하고 카운트 하고싶었는데 마땅히 찾아서 볼만한 블로그를 찾지 못해서 직적 해보고 블로그에 올린거라 더 좋은 아이디어가 있으면 답글부탁드립니다.

 

끝!!