달력

11

« 2024/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
728x90
반응형

[파이썬을 활용한 데이터 전처리 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 에 대한 예시이다.

matplotlib.org/gallery/pie_and_polar_charts/pie_features.html#sphx-glr-gallery-pie-and-polar-charts-pie-features-py

# 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]
- 파이트차트, 박스 플롯 및 실제 프로젝트를 통해서 내용을 알아 볼 수 있었다.

 

 

https://bit.ly/3m7bW22

 

파이썬을 활용한 데이터 전처리 Level UP 올인원 패키지 Online. | 패스트캠퍼스

데이터 분석에 필요한 기초 전처리부터, 데이터의 품질 및 머신러닝 성능 향상을 위한 고급 스킬까지 완전 정복하는 데이터 전처리 트레이닝 온라인 강의입니다.

www.fastcampus.co.kr

 

728x90
반응형
:
Posted by 패치#노트