강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

lenamuto 님의 프로필 이미지
lenamuto

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

군집화 실습 1: 고객 세그먼테이션 구현 실습

ln[8]에서 groupby질문드립니다.

작성

·

178

0

선생님 강의 감사합니다.

질문1)

선생님께서 ln[8]에서 의도하신 내용은 주문번호와 상품으로 일단 groupby  후에 다시 invoiceNo를 필터링해서 횟수를 알아내어 한 주문건당,  평균주문건수를 구하고 싶으셨던것 같은데 이미 groupby 를 'invoiceNo'하나만 한게 아니라 'stockCode'와 함께 해서 따로 'invoiceNo'만 필터링한다고 해도 두 컬럼 invoiceNo, 와  stockCode로이미 groupby가 되어버려서 필터링을 해도 값이 그대로 나옵니다.

선생님의 의도는 

groupby('invoiceNo').count().mean()이 아닐런지요...



질문2)
그리고 고객별로 몇번 주문했는지를 알려면 이 데이터의 경우 dataframe을 어떻게 다뤄야 할지 모르겠어요.

즉,

retail_df.groupby(['CustomerID','InvoiceDate'])하면

CustomerID  InvoiceNo
12346       541431         1
12747       569397        15
            554549        14
            545321        12
            577104        11
            551992         9
            538537         8
            558265         8
            537215         7
            563949         7
            581163         7
            541677         5
12748       577057       154
            568703       141
            575117       140
Name: InvoiceNo, dtype: int64
이런 결과가 나오는데 이 경우 'invoiceNo'의 컬럼만 따로 count() 하고 싶을때는 어떤 처리를 해야하는지요..
즉 'customID'=12747 의 결과값이 11이 나오게 하려면요...

감사합니다!!

답변 1

2

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

1. 제 의도는 하나의 invoice no가 중복된 상품을 가지고 있는지를 확인하는 것이었습니다.

즉 invoice no , stock code

      1                       a

      1                      a

      1                     b

와 같이 a가 중복되게 가지는 것인지 확인하는 것이었습니다. 결과로 하나의 invoice no에는 거의 고유한 stock code를 가지고 있습니다.(거의 중복 stock code가 없음)

2.   retail_df.groupby('CustomerID')['InvoiceNo'].count() 하시면 됩니다.

만일 invoiceno 컬럼명 출력을 원하시면 retail_df.groupby('CustomerID')['InvoiceNo'].count().reset_index() 하시면 됩니다.

감사합니다.

lenamuto 님의 프로필 이미지
lenamuto

작성한 질문수

질문하기