[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 9 회차 미션 Programming/Python2020. 11. 10. 17:52
[파이썬을 활용한 데이터 전처리 Level UP- 9 회차 미션 시작]
* 복습
- 꺽은선 그래프와 산점도 그리기, 막대 차트 그리기
[01. Part 1) 데이터 핸들링 Chapter 06. 데이터 이쁘게 보기 - 데이터 시각화 - 05. 파이 차트 그리기]
// 각 값들의 비율을 비교하기 위해서 사용하는 차트이다.
* matplotlib 을 이용한 파이 차트 그리기
- pyplot.pie 함수를 사용하면 파이 차트를 그릴 수 있다.
- 주요 입력
. x : 각 pie의 크기
. labels : 각 pie에 부착되는 라벨
. labeldistance : 라벨 간 거리
. normalize : 비율을 나타낼 것인지 여부
// 수치를 그대로 할 것인지 비율을 나타낼 것인지를 결정하는 것이라고 보면 된다.
. autopct : 위에 표시될 글자 형태 (예: "%1.1f%%", "%1d%%")
// 10 %, 10.XX 등으로 표현 할 것인지를 정하는 것이다.
. colors: 배열로 설정해서 각 파트의 색상을 설정 가능
* Pandas 객체의 method 를 이용한 파이 차트 그리기
- DataFrame.plot( ) 함수를 사용하면 DataFrame을 사용한 그래프를 손쉽게 그릴 수 있으며, 파이 차트 역시 그릴 수 있다.
- 주요입력
. kind: 그래프 종류 ('pie'면 막대 그래프를 그린다.)
. x: 각 pie 의 크기
. y : 각 pie 에 부착되는 라벨
* 실습
// groupby 로 제품군별 수량 합계를 계산해서 나타내야 한다.
// 기타행을 추가해서 적은 수량의 값들을 깔끔하게 그려준다.
// iloc 4라는 것은 4등까지만 해서 합을 내는 것이다. consum 등을 이용해서 그리는 것도 고려해 볼 수 있다. 기타로 두는 것은 여러 방법이 있다.
// autopct => 소수점 첫째짜리까지 구하는 것이다.
// matplotlib 의 pie chart
matplotlib.org/api/_as_gen/matplotlib.pyplot.pie.html
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)
// basic pie chart 에 대한 예시이다.
# Pie chart, where the slices will be ordered and plotted counter-clockwise:
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs')
fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, startangle=90)
ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
plt.show()
[01. Part 1) 데이터 핸들링 Chapter 06. 데이터 이쁘게 보기 - 데이터 시각화 - 06. 박스 플롯 그리기]
* 박스플롯이란?
- 박스 플롯이란 하나의 변수에 대한 분포를 한 눈에 보여주는 그래프이다.
// 보통은 세로로 그림을 그리게 된다.
// 최대값은 이상치를 제외 했을 때의 최대값을 나타내는 것이다. 이상치라는 것은 갑자기 커지거나 많이 큰거나 작은 것들을 제외하고 값이다. 엄밀히 말해서 이상치를 제외한 최대값, 최소값이라는 것이다.
* matplotlib 을 이용한 박스 플롯 그리기
- pyplot.boxplot 함수를 사용하면 박스 플롯을 그릴 수 있다.
- 주요입력
. x : boxplot 을 그리기 위한 데이터 (2차원인 경우, 여러 개의 박스 플롯이 그려진다. 즉, 하나의 열이 하나의 박스 플롯으로 생성된다.)
* Pandas 객체의 method 를 이용한 박스 플롯 그리기
- DataFrame.boxplot( ) 함수를 사용하면 DataFrame 을 사용한 그래프를 손쉽게 그릴 수 있으며, 박스 플롯 역시 그릴 수 있다.
- 주요 입력
. column : box plot 을 그릴 컬럼 목록
* 실습
// x = df.groupby( ).apply(list).. 로 해서 쇼핑몰 유형에 따른 판매 금액을 리스트 형태로 만들어 내는 것이다.
// apply 함수를 통해서 만들수 있다.
// 리스트가 아니라 ndarray 가 되어도 상관은 없지만 list 형태로 정의를 한 것이다. ndarray 가 만약에 된다면 NaN 형태로 되던가 할 수 있기 때문에 리스트 형태로 나타 낸것이다.
// index 를 없애는 것은 xticks 를 정의하기 위해서이다.
// DataFrame 을 이용해서 box plot 을 그려보기. df.boxplot(column = ['XX', 'XX', 'XX']) 등으로 정의해서 그려 볼수가 있다.
// boxplot 에 대한 documenation
matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.boxplot.html
matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None, *, data=None)
// box plot basic example code
import numpy as np
import matplotlib.pyplot as plt
# Fixing random state for reproducibility
np.random.seed(19680801)
# fake up some data
spread = np.random.rand(50) * 100
center = np.ones(25) * 50
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
data = np.concatenate((spread, center, flier_high, flier_low))
Copy to clipboard
fig1, ax1 = plt.subplots()
ax1.set_title('Basic Plot')
ax1.boxplot(data)
[01. Part 1) 데이터 핸들링 Chapter 07. 직접 해보기 - 01. 주문서 정리하기]
// chapter 1 ~ chatper 6 까지 사용한 내용들을 가지고 작업을 해보는 것이다.
* 문제 상황
- 월별로 시트가 구분되어 있는 매출 데이터를 요약하여 정리해야 하는 것이다.
// 데이터 병합, 포맷 통일 및 변수추가, 월별 매출 추이 파악, 조건에 따른 판매 통계 분석, 충성 고객 파악 순으로 작업을 해본다.
* Step 1. 데이터 병합
- 하나의 데이터가 12개의 시트로 구분되어 있어, 효과적인 분석을 위해서 통합해야 한다.
- 또한, 분석에 불필요한 부분이 있어 이를 제거해야 한다.
* 실습
// 각시트별로 이름을 정의해서 시트 이름을 가지고 와야 한다.
// 시트명 정의는 list comprehension 을 통해서 작업을 한다.
// skiprows 를 설정했다는 것은 6행까지 불러 오지 않는 것이다.
// concat 을 이용해서 데이터를 붙여 준다.
* Step 2. 포맷 통일 및 변수 추가
- 일자 컬럼이 YYYY-MM-DD 라는 포맷의 날짜와 YYYY.MM.DD 라는 포맷의 날짜가 혼합되어 있어, 원활한 분석을 위해 포맷을 통일해야 한다.
- 품명과 수량 컬럼을 바탕으로 주문 금액을 계산하여, 주문 금액이라는 컬럼을 추가
- 제품에 따른 가격 정보는 제품별_가격정보.xlsx 에 정의되어 있다.
// 위와 같은 데이터를 처리하기 위해서 새로운 문법이 필요하다.
* 새로운 문법 (1/2)
- Series.to_dict( ) : Series 의 index 를 Key 로, data 를 Valu로 하는 사전으로 변환
// 이렇게 바꿔주는 이유는 replace 를 사용해서 dictonary 를 사용하기 위한 것이다.
- Series.replace(dict) : Series에 있는 값 가운데 dict 의 key 의 값이 있으면 대응되는 value 로 변환
* 새로운 문법 (2/2)
- .T : 행과 열을 바꾼 전치 행렬을 반환한다는 것이다.
- DataFrame 에 새로운 컬럼 추가 : df['새로운 컬럼명'] = 연산 결과
* 실습
// . 을 - 으로 바꾸거나 - 을 . 로 바꾸거나 할 수 있다. str ( ) 을 사용하게 되면 str 에 들어있는 내장함수를 사용할 수 있다. series 의 replace 와 함수와 우연히 이름이 같을 뿐이다.
// 원활한 분석을 위해, 행과 열을 바꿀 필요가 있다. 하나의 행이나, 열에는 하나의 자료 구조가 들어가는 것이 좋다.
// T 를 이용해서 frame의 형태를 바꿔주는 것이다.
// 새로운 데이터 프레임의 컬럼명에 따라서 작업을 해야 하고, 또 to_dict( ) 를 사용해서 series를 dicationary 형태로 바꾸는 것이다.
// replace : 품명 컬럼에 price dict 의 key 가 있으면 value로 바꾼다.
// ndarray 브로드캐스팅 => 유니버셜 함수
* Step 3. 월별 매출 추이 파악
- 일자 변수를 바탕으로 월을 추출한 뒤, 월을 x축으로 주문 금액 및 품목별 주문 금액을 y 축으로 하는 꺽은선 그래프를 그린다.
* 실습
// 일자변수가 object type 이므로 split을 하더라도 object 여서 astype 으로 int 로 적용해준다.
// %matplotlib inline magic keyword !! 기억하자!!!
// unique( ) 을 써서 각각의 리스트 값을 나타내주고.. 축에서 나타낼 때는 통일
// 마스킹 검색을 이용할 수 있다.
* Step 4. 다양한 조건에 따른 판매 통계 분석
- 제품별 판매량 합계를 나타내는 막대 그래프와 제품과 결제 수단에 따른 히트 맵을 그린다.
* 실습
// 각각의 데이터를 처리하고 나서.. hist 를 그린다.
* Step 5. 충성 고객 찾기
- 주문 금액 합과 빈도가 각각 상위 10% 안에 속하는 고객을 찾아서 정리하는 것이다.
* 실습
// cond 1 = 을 만족하는 여부.. cond2 = 을 만족하는 여부로 결정하고 나서.
// loc [ cond1 & cond2 ] 등으로 찾을 수가 있다.
[파이썬을 활용한 데이터 전처리 Level UP-Comment]
- 파이트차트, 박스 플롯 및 실제 프로젝트를 통해서 내용을 알아 볼 수 있었다.
'Programming > Python' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 11회차 미션 (0) | 2020.11.12 |
---|---|
[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 10회차 미션 (0) | 2020.11.11 |
[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 8 회차 미션 (0) | 2020.11.09 |
[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 7 회차 미션 (0) | 2020.11.08 |
[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 6 회차 미션 (0) | 2020.11.07 |