scikit-learn의 MultiLabelBinarizer에서 개별 구매 데이터를 표에 요약

데이터 소스



개별 구매 데이터(변환 전)





각 행은 사용자 ID, 각 열은 사용자가 구입 한 항목을 나타냅니다. 열수는 가장 구매 아이템이 많은 사용자의 구입 수가된다. 따라서 공란에는 NaN이 들어 있다.

만들고 싶은 테이블(변환 후)





각 열을 특정 항목에 고정하여 각 사용자가 구매했는지 1/0으로 표시

하는 방법



scikit-learn의 MultiLabelBinarizer를 사용한다. 변환 전의 데이터 프레임을 df로한다. 변환 후의 출력은 df_trans로한다.
from sklearn.preprocessing import MultiLabelBinarizer

df = df.fillna("none")

mlb = MultiLabelBinarizer()
result = mlb.fit_transform(df.values)
df_trans = pd.DataFrame(result, columns = mlb.classes_).drop('none', axis=1)

데이터 프레임 중에 NaN이 들어 있으면 MultiLabelBinarizer에서 에러가 발생하므로 적당한 문자열로 변환해 둔다.

MultiLabelBinarizer 객체를 생성해 fit_transform 메소드를 호출한다. 인수에는 df.values로서 numpy.array 형식으로 지정한다.

열명(아이템명)은 mlb.classes_로 꺼낼 수 있다.

마지막으로 drop 메소드로 none을 삭제하면 변환 후의 테이블을 얻는다.

좋은 웹페이지 즐겨찾기