세조목

PYTHON 정리(정렬, 피벗테이블, 히트맵)(23.12.18) 본문

데이터 분석 공부/Python

PYTHON 정리(정렬, 피벗테이블, 히트맵)(23.12.18)

세조목 2023. 12. 18. 21:48
  • 본 내용들은 PYTHON을 공부하면서 차후 제가 복습하기위해 정리해놓은 것으로 제가 새롭게 알게된 내용들만을 정리하였습니다. 또한 배움이 부족하여 미처 다 파악하지 못한 부분들도 많으니 혹시나 이 포스팅을 보시는 분들께서는 다른 포스팅, 도서, 강의도 함께 참고하시기 바라겠습니다.

 

1. 정렬

PYTHON에서 데이터프레임 또는 시리즈를 정렬하고싶을때 아래 두 함수를 사용할 수 있다.

  1. sort_index(ascending = True(or False))
  2. sort_values(by='정렬하고싶은 컬럼명', ascending = True(or False))

DataFrame이든 Series든 동일하다.

sort_index의 경우 index를 정렬해주는 기능이고,

sort_values는 정렬하고자하는 열을 지정해서 정렬할 수 있는 기능이다.

 

2. 피벗테이블

pandas 피벗테이블 기능은 두 개의 서로 다른 컬럼을 가지고서 하나의 피벗테이블을 만들때 사용하는 함수다

오늘 사용한 예시 데이터로 위 테이블에서 cuisine_type과 day_of_the_week를 가지고서 피벗 테이블을 만들고 싶었다.

이 경우 두 개의 컬럼 중 어떤 컬럼이 index로 들어갈지, column으로 들어갈지 지정해줘야하기때문에

pivot_table 기능을 사용해야했다.

pivot_table(테이블명, values=' ', index = ' ', columns=' ', aggfunc='어떻게 합칠지(ex. count, sum)')

 

만약 아래와같이 피벗테이블로 만들고싶은 컬럼만으로 이루어진 테이블이 있다면 pivot_table이 아닌 pivot 기능을 사용하면 된다.

 

피벗 코드 예시는 아래와 같다.

cohort_counts = cohort_data.pivot(index="start_week",
                                  columns="week",
                                  values="user_id")
cohort_counts

 

 

3. 히트맵

plt.figure(figsize=(14,5))

plt.pcolor(food_data_pivot_table)

plt.xticks(np.arange(0.5, len(food_data_pivot_table.columns), 1), food_data_pivot_table.columns)

plt.yticks(np.arange(0.5, len(food_data_pivot_table.index), 1), food_data_pivot_table.index)

plt.title('업종별 주중/주말 주문 건수', fontsize=20, pad=20)

plt.xlabel('주중/주말', size=15, labelpad=20)
plt.xticks([0.5,1.5], labels=['주중', '주말'], fontsize=15)

plt.ylabel('업종', rotation = 360, size=15, labelpad=30)

plt.colorbar()

plt.show()

차트 종류 중 히트맵 차트를 만들 수 있는 코드이다.

bar 그래프나 line 그래프 코드와 차이점이라고 한다면

plt.pcolor(food_data_pivot_table)
plt.xticks(np.arange(0.5, len(food_data_pivot_table.columns), 1), food_data_pivot_table.columns)
plt.yticks(np.arange(0.5, len(food_data_pivot_table.index), 1), food_data_pivot_table.index)

이 부분이 들어간다는 점이다.

피벗 테이블을 만들면 x축과 y축이 정해지기때문에 x축과 y축에 어떤 컬럼이 들어가야하는지 별도로 지정해줄 필요는 없고 위 코드처럼만 작성을 해주면 된다.

 

그렇게 했을때의 결과물은 아래와 같다.