요즘 들어 더더욱 부족함을 깨달아가고 있다.
현재 진행하고 있는 외부 프로젝트 중, 오는 데이터를 시각화하는 부분이 있다.
이는 내가 직접적으로 담당하는 부분은 아니지만, 그래도 pm으로써 팀원들에게 도움이 되고자
파이썬으로 데이터분석하는 강의를 듣고 있다.
https://spartacodingclub.kr/?f_name=%ED%99%8D%EC%9D%80%EB%B9%84&f_uid=60b098aa70989fbd53bcdc87
[링크를 누르고 강의를 결제하면 즉시 5만원 할인이 되는 링크입니다. 저도 5만원 받습니다 >_0]
스파르타코딩클럽의 파이썬 데이터분석 강의를 듣고 있고,
아마 블로그에 올라가는 파이썬 데이터분석 시리즈는 그 강의의 주 내용을 담고 있을 것 같다.
따라서 사용되는 데이터도 이 강의에서 제공되는 데이터이다.
이제 본격적으로 Pandas에 대해 알아보도록 하자!
Pandas란?
파이썬에서 사용되는 데이터분석 라이브러리로,
관계형 데이터를 행과 열로 구성된 객체로 만들어준다.
데이터를 다루기 쉽게 만들어주는 도구라는데,
사실 이런 라이브러리는 사용하지 않으면 잘 감이 잡히지 않는다.
직접 실습해보면서 익혀보자!
실습 환경은 anaconda jupyternotebook 이다.
anaconda 만 설치하면 자동으로 생성이 되기 때문에,
혹시 anaconda 가 설치되어 있지 않다면, 아래 링크로 가서 다운로드 받길 바란다.
https://www.anaconda.com/products/individual-b#Downloads
주피터에서 pandas를 import 하자.
매번 pandas 라고 풀네임을 쓰기 귀찮으니 pd 로 줄였다.
import 를 마쳤으니, 실제 데이터를 불러와보도록 하자!
내 주피터노트북은 현재 week01이라는 폴더 안에서 열려있고, week01 안에는 data라는 폴더가 존재한다.
data 폴더안에는 이렇게 데이터가 들어있다.
내가 불러올 데이터는 csv 파일이기 때문에, read_csv 함수를 이용하여 파일을 불러왔다.
굉장히 깔끔하고 예쁘게 불러와진다.
이렇게 불러온 데이터를 살펴보자!
데이터의 기본 통계는 describe() 로 볼 수 있다.
출력되는 내용은 아래와 같다.
- count : 갯수
- mean : 평균
- std : 표준편차
- min : 최솟값
- max : 최댓값
성별데이터 안에는 남,여 라는 데이터를 가지고 있다.
이는 아래와 같이 확인할 수 있다.
Pandas 데이터 합치기
이제 chicken_08.csv 파일과 chicken_09.csv 파일을
가져와서 처음 불러왔던 chicken07과 합쳐보도록 하겠다.
짜잔!
정말 간단하다. concat을 이용하면 된다.
그런데, 실제 데이터는 76495건인데, index를 보면 0-24116까지임을 알 수 있다.
index를 재 정렬해줘야한다.
index를 재정렬 할때는 reset_index를 사용한다.
넘겨주는 drop 인자는, 본래의 인덱스 번호를 지우냐에 대한 물음이다.
True로 해줘 인덱스를 다시 정렬한다.
Matplotlib 란?
Matplotlib란, 파이썬에서 사용되는 시각화 라이브러리로 그래프를 그릴 수 있게 해주는 도구이다.
Matplotlib 또한 pandas 와 같이 import 를 통해 불러와주자.
요일별로 묶어 요일에 따른 치킨 주문량 합계 그래프 그리기
groupby를 이용해 묶을 수 있다. 이렇게 묶어진 것의 통화건수의 합계를 구하면,
요일에 따른 치킨 주문량 합계가 나온다.
이제 이 데이터를 가지고 본격적으로 그래프를 그려보자!
그 전에, 우리가 가지고 있는 요일데이터가 한글이라 font 설정을 따로 해주어야한다.
아래와 같은 코드를 실행시켜주자.
font를 sans-serif 에서 맑은고딕으로 변경해주었다.
이제 matplotlib를 이용해 그래프를 그려보자.
plt.figure(figsize=(8,5))
plt.bar(sum_of_calls_by_week.index, sum_of_calls_by_week)
plt.title('요일에 따른 치킨 주문량 합계')
plt.show()
plt.bar 로 우리는 바 그래프를 그릴 수 있다.
plt.bar에 들어가는 첫번째 인자는 x 축의 값이고, 두번째로 들어가는 인자는 y축의 값이다.
지금 현재 x 축은 가나다 순으로 정렬된 요일으로 되어있는데,
이를 월화수목금토일 순서로 재배치 해보자.
weeks = ['월','화','수','목','금','토','일']
sum_of_call_by_weeks = chicken_data.groupby('요일')['통화건수'].sum().reindex(weeks)
reindex() 를 이용해서 재배치 해주었다. 이제 아까와 동일한 코드로
그래프를 그려주면 된다.
plt.figure(figsize=(8,5))
plt.bar(sum_of_call_by_weeks.index, sum_of_call_by_weeks)
plt.title('요일에 따른 치킨 주문량 합계')
plt.show()
오름차순으로 올라가는 그래프도 그려볼까?
sorted_sum_of_calls_by_week = sum_of_calls_by_week.sort_values(ascending=True)
sort_values() 를 이용하면 값들을 정렬할 수 있는데, ascending 값을 True 로 넘기게되면
오름차순으로 데이터가 정렬된다.
이제 정렬된 sorted_sum_of_calls_by_week 를 이용하여 그래프를 그려주면 된다.
sorted_sum_of_calls_by_week = sum_of_calls_by_week.sort_values(ascending=True)
plt.figure(figsize=(8,5))
plt.bar(sorted_sum_of_calls_by_week.index, sorted_sum_of_calls_by_week)
plt.title('요일에 따른 치킨 주문량 합계')
plt.show()
굿 - !
오늘 포스팅은 여기서 마치고, 이제 시험 끝나고 c# 프로젝트와 동시에
열심히 강의듣고, 포스팅하면 될 것 같다.
'Programming > Python' 카테고리의 다른 글
[ Python ] 파이썬 자리수마다 더하기 (0) | 2021.06.22 |
---|---|
[ Python ] 파이썬 데이터 분석 | 유동인구 그래프를 그려보자! (0) | 2021.06.20 |
[ Django ]ORM ( Object-Relational Mapping ) 이란 무엇인가 (0) | 2021.04.24 |
[ Django ] Django Mobile Debugging | 장고 서버 모바일 | Django IP 지정 (0) | 2021.04.05 |
[ Django ] Django Tutorial 001 | DjangoProject 환경 구축 (0) | 2021.03.31 |