Pandas는 범주형 값을 Int 값으로 변환합니다.

Pandasneun Beomjuhyeong Gabs Eul Int Gabs Eulo Byeonhwanhabnida



기계 학습 실행을 위한 데이터 세트에는 수치 및 범주형 변수가 모두 포함됩니다. 범주형 변수는 사람이 쉽게 이해할 수 있는 문자열 형식의 데이터입니다. 반면에 기계는 범주형 입력을 직접 이해할 수 없습니다. 결과적으로 범주형 콘텐츠는 기계가 해석할 수 있는 숫자 값으로 변환되어야 합니다.

범주형을 Int로 변환하는 방법

범주형을 DataFrame의 int 값으로 변환하기 위해 'pandas'에서 사용할 수 있는 기술은 다음과 같습니다.

    • DataFrame.replace() 메서드
    • DataFrame.apply(factorize()) 메서드

이 기사에서는 이러한 방법을 활용하고 'pandas'에서 두 방법을 모두 사용하는 방법을 자세히 설명합니다.







예제 # 1: Pandas Replace() 메서드 활용

DataFrame의 범주형 값은 pandas 'DataFrame.replace()' 메서드를 사용하여 int로 변환할 수 있습니다. 여기에서 이 방법을 활용하는 방법을 배웁니다.



우리는 Python에서 이 기술을 최적으로 실행하기 위해 'Spyder' 도구를 사용했습니다. 스크립트 작성을 시작하려면 'Spyder' 도구에서 새 Python 파일을 엽니다. 스크립트 작성을 위한 가장 중요한 요구 사항은 적절한 라이브러리를 가져오는 것입니다. 'pandas' 방법을 구현해야 하므로 'pandas'의 기능에 액세스하기 위해 'pd로 pandas 가져오기'가 있습니다. 그런 다음 핵심 Python 코드를 시작합니다. 'pd.DataFrame()' 메서드를 사용하여 DataFrame을 만들었습니다. DataFrame은 'Name', 'Degree' 및 'Income'의 세 열로 초기화됩니다. 모든 DataFrame의 열은 동일한 길이의 값을 저장합니다.



첫 번째 열인 '이름'에는 'bush', 'albert', 'harry', 'peter', 'emma', 'newton', 'smith' 및 'elsa'의 8가지 값이 있습니다. 두 번째 열인 'Degree'도 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS' 및 'MS'의 8가지 범주 값을 저장합니다. 마지막 열 '소득'에는 8개의 정수 값 '60000', '80000', '75000', '45000', '56000', '65000', '55000' 및 '70000'이 있습니다. 'pd.DataFrame()' 함수 호출의 출력을 저장하기 위해 DataFrame 개체 'staff'를 만들었습니다. 초기 DataFrame을 표시하기 위해 스크립트의 마지막 줄에서 DataFrame의 이름이 'staff'인 매개변수로 'print()' 메서드를 사용했습니다.






터미널에서 출력을 보려면 'Spyder' 도구의 '파일 실행' 버튼을 사용하거나 'Shift+Enter' 키를 누르십시오. 터미널에 표시되는 출력은 성공적으로 생성된 3개의 열이 있는 DataFrame을 보여줍니다.


이제 DataFrame이 구성되었으며 필요한 기술을 적용해야 합니다. 팬더 'DataFrame.replace()' 메서드는 지정된 열의 범주형 값을 정수 값으로 변환하여 기계가 읽을 수 있도록 하는 데 사용됩니다.



값을 대체해야 하는 특정 열 이름으로 DataFrame의 이름을 제공했습니다. 이 이름은 'staff['degree']'입니다. 범주형 값이 있는 'Degree' 열의 값을 정수 값으로 대체하기를 원합니다. 그런 다음 '.replace()' 메서드가 호출됩니다. 우리는 그것을 두 세트로 전달했습니다. 첫 번째는 'Degree' 열에서 추출한 두 개의 범주형 값 '['BS', 'MS']'를 포함합니다. 보시다시피 'Degree' 열은 이 두 값을 반복적으로 사용합니다. 세 번째 값이 있었다면 그 값도 언급했을 것입니다. 두 번째 세트에는 두 개의 int 값 '[0, 1]'이 있으며 각각 첫 번째 세트 값을 대신합니다. 다른 매개변수인 'inplace'는 'True'로 설정되어 값을 대체할 수 있습니다. 'False'로 설정하면 교체가 비활성화됩니다. 마지막으로 업데이트된 '직원' DataFrame을 표시하기 위해 'print()' 메서드를 사용했습니다.


결과 DataFrame에는 'Degree' 열에 정수 값이 있습니다. 값 'BS'는 '0'으로 대체되고 'MS'는 '1'로 대체됩니다.


'dataframe.dtype' 속성을 사용하여 각 열의 데이터 유형을 확인할 수도 있습니다. 이렇게 하면 지정된 DataFrame에 있는 모든 열의 데이터 유형을 얻을 수 있습니다.


여기에서 DataFrame의 데이터 유형을 얻었습니다. 'Degree' 열의 데이터 유형이 'int64'로 변경된 것을 볼 수 있습니다.

예제 # 2: Pandas apply() 메서드 활용

pandas가 제공한 다른 메서드는 범주형 값을 정수로 변환하는 'DataFrame.apply()' 함수입니다. 이전 예에서 하나의 범주형 열을 정수로 변환하는 방법을 배웠습니다. 이제 DataFrame의 모든 범주형 열을 int로 변환하는 방법을 살펴보겠습니다.

실제 구현을 시작으로 이 메서드의 필수 라이브러리인 pandas를 가져와야 합니다. 'Pandas를 pd로 가져오기' 스크립트를 사용하여 'Spyder' 도구에서 Python 파일로 pandas를 가져왔습니다. 그러면 'pd'를 사용하여 pandas 모듈에 액세스할 수 있습니다. 'pd.DataFrame()' 함수를 사용하여 DataFrame을 구성했습니다.

이 DataFrame에는 '그룹', '위치', '점수' 및 '지원'의 4개 열이 있습니다. 각 열에는 9개의 값이 저장됩니다. '그룹' 열 값은 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' 및 'Y'입니다. '위치' 열에는 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D' 및 'B'의 9가지 값이 있습니다. '점수' 열에는 '4', '8', '7', '10', '9', '5', '7', '3' 및 '23'과 같은 정수 값이 있습니다. 마지막 열 '지원'에는 '10', '2', '3', '9', '3', '7', '4', '2' 및 '9' 값이 있습니다.

DataFrame 객체 'prog'를 생성하고 'pd.DataFrame()' 메서드 호출의 출력을 할당했습니다. 따라서 'pd.DataFrame()'에서 생성된 결과 DataFrame 프레임은 'prog'에 저장됩니다. 이제 이 개체를 사용하여 DataFrame에 액세스할 수 있습니다. 이 DataFrame을 보기 위해 DataFrame 개체 'prog'를 매개 변수로 사용하여 'print()' 메서드를 사용했습니다.


이전 파이썬 프로그램을 실행하면 4열의 DataFrame이 터미널에 표시됩니다.


여러 범주형 열을 정수로 변환하기 위해 이 기술을 따랐습니다. 먼저 pandas 'DataFrame.select_dtypes().columns' 메서드를 사용하여 개체 데이터 유형을 포함하는 모든 열을 선택해야 합니다. 필요에 따라 스크립트에서 사용할 때 'prog.select_dtypes(['object']).columns'가 됩니다. 'prog' DataFrame에서 'object' 데이터 유형을 가진 모든 열을 선택합니다. 이 메서드의 출력을 저장하기 위해 'concate_col' 변수를 만들었습니다. 이제 이 변수 ​​'concat_col'을 사용하여 '객체' 데이터 유형 열에 액세스할 수 있습니다.

이제 이러한 열을 정수로 변환하기 위해 'pd.factorize()' 메서드와 함께 팬더 'DataFrame.apply()'를 사용했습니다. DataFrame 이름과 함께 'concat_col' 변수를 사용하면 '.apply()' 메서드가 호출됩니다. '.apply' 메서드의 괄호 사이에 'pd.factorize()' 메서드를 호출했습니다. 여기서 'x'는 '객체' 데이터 유형이 있는 'prog' DataFrame의 모든 값일 수 있습니다. 따라서 이 전체 코드 줄은 'prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])'로 작성됩니다. factorize 메서드는 다음 값을 취합니다. 'object' 데이터 유형을 'int'로 변환합니다. 'prog' 변수를 매개변수로 전달하여 'print()' 함수를 호출하여 최종 출력을 표시할 수 있습니다.


업데이트된 DataFrame에서 '그룹' 및 '위치' 열의 값이 처음에는 범주형, 즉 개체임을 관찰할 수 있습니다. 업데이트된 출력 DataFrame에서 두 열 모두 정수 값을 갖습니다. '그룹' 열에서 'X'는 '0'으로, 'Y'는 '1'로 바뀝니다. 반면 '위치' 열 'A'는 '0'으로, 'C'는 '1'로, 'D'는 '2'로, 'B'는 '3'으로 대체됩니다.


이제 업데이트된 데이터 유형을 확인하겠습니다.


다음 열에는 모두 'int64' 데이터 유형이 있습니다.

결론

우리 가이드는 범주형 값을 숫자 값으로 변환하여 객체 데이터 유형을 기계가 처리할 수 없기 때문에 기계가 이해할 수 있도록 변환하는 방법을 설명합니다. 필요한 데이터 유형을 얻기 위해 'pandas' 라이브러리가 제공하는 두 가지 접근 방식을 소개했습니다. 또한 'Spyder' 도구에서 실행되는 예제 코드의 실제 구현을 통해 각 예제의 결과를 공유했습니다. 마지막으로 원하는 결과를 얻기 위한 모든 단계를 자세히 설명했습니다.