인프런 커뮤니티 질문&답변
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() 하시면 됩니다.
감사합니다.





