월단위 집계에서 분기단위로 거래건수 추이 집계 연습문제
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 |
'빅데이터' 카테고리의 다른 글
많은 데이터나 정밀한 알고리즘 보다 논리적인 해석이 결과를 결정한다 (0) | 2021.05.30 |
---|---|
텐서플로우 CPU 설치, 케라스 설치, 자바설정 (0) | 2020.12.10 |
[트렌드인터프리터] 코로나 비즈니스 영향 빅데이터 분석_스타벅스 넷플릭스 쿠팡 20201120 (0) | 2020.11.20 |
[시장환경분석] 조국 딸 추미애 아들 그리고 불평등 (0) | 2020.10.05 |
[트렌드인터프리터] 코로나와 여름 날씨 그리고 골프장 2020 (0) | 2020.07.20 |