>RE::VISION CRM

빅데이터

월단위 집계에서 분기단위로 거래건수 추이 집계 연습문제 [SSF20]

YONG_X 2020. 12. 5. 17:01

월단위 집계에서 분기단위로 거래건수 추이 집계 연습문제

In [38]:

 

 

# 방식 .... 1번# 월별 건수 테이블 준비

tr028 = tr02[['month','InvoiceNo']].groupby('month').count()

tr028.reset_index(inplace=True)

tr028.head()

 

Out[38]:

monthInvoiceNo01234

2010-12 26157
2011-01 21229
2011-02 19927
2011-03 27175
2011-04 22642

In [34]:

 

 

# 연도를 제외한 월 코드 추출

tr028.columns = ['month', 'trxcnt']

tr028['monCode']= tr028.month.str.slice(5,7)tr028.head()

 

Out[34]:

monthtrxcntmonCode01234

2010-12 26157 12
2011-01 21229 01
2011-02 19927 02
2011-03 27175 03
2011-04 22642 04

In [35]:

 

 

# 월과 분기간의 mapping table 생성

monQmap = pd.DataFrame({'monCode':['01','02','03','04','05','06', '07','08','09', '10','11','12'], 'qtrCode':['1','1','1','2','2','2', '3','3','3','4','4','4']})

monQmap

 

Out[35]:

monCodeqtrCode01234567891011

01 1
02 1
03 1
04 2
05 2
06 2
07 3
08 3
09 3
10 4
11 4
12 4

In [36]:

 

 

# 연도-분기 형식의 집계용 코드 컬럼 생성

tr0281 = tr028.merge(monQmap, on='monCode' , how='left')

tr0281['yrQtr'] = tr0281.month.str.slice(0,4) +'-' + tr0281.qtrCode +'Q'

tr0281.head()

 

Out[36]:

monthtrxcntmonCodeqtrCodeyrQtr01234

2010-12 26157 12 4 2010-4Q
2011-01 21229 01 1 2011-1Q
2011-02 19927 02 1 2011-1Q
2011-03 27175 03 1 2011-1Q
2011-04 22642 04 2 2011-2Q

In [37]:

 

 

# 월별 건수를 합계해 분기단위 집계 생성

tr0282 = tr0281.groupby('yrQtr').sum().reset_index()

tr0282.head()

 

# 생성된 데이터 시각화

plt.bar(tr0282.yrQtr, tr0282.trxcnt)

plt.title('Querterly Transaction Volume Trend')

plt.show()

In [ ]:

 

 

 

# 방식 .... 2번 : 건별 데이터의 일자를 datetime 형식으로 변경한 후 분기별 바로 집계

 

In [40]:

 

 

# 건별 데이터 확인

 

tr02[['date','InvoiceNo']].head()

 

Out[40]:

dateInvoiceNo01234

2010-12-01 536365
2010-12-01 536365
2010-12-01 536365
2010-12-01 536365
2010-12-01 536365

In [47]:

 

 

# 건별 데이터의 일자를 datetime 으로 변경

tr0285 = tr02[['date','InvoiceNo']]

tr0285['date'] = pd.to_datetime(tr0285.date)

 

 

# 일자를 인덱스로 지정한 후 카운트 산출

tr0286 = tr0285.set_index('date').resample('Q')['InvoiceNo'].count()

tr0286.plot(kind='bar')

plt.show()

 

 

<matplotlib.axes._subplots.AxesSubplot at 0x1200822f7c0>

 

 

# 방식 3번

tr028['intQ'] =  tr028.monCode.astype(int).div(4).astype(int) + 1

# 먼저 월 코드를 정수형으로 변환

# 4로 나눈 몫을 구해서 정수로 변환

# 각 값에 1을 더하면 분기의 코드에 해당하는 정수값 컬럼 생성

 

tr028.head()

 

Out[71]:

monthtrxcntmonCodeintQ01234

2010-12 26157 12 4
2011-01 21229 01 1
2011-02 19927 02 1
2011-03 27175 03 1
2011-04 22642 04 2