묭동이 개발 블로그
  • [Pandas] library DataFrame .loc condition(조건문)
    2024년 01월 05일 00시 58분 07초에 업로드 된 글입니다.
    작성자: 묭동이

    이번 글에서는 pandas 라이브러리의 DataFrame 객체의 .loc attrribute의 조건문을 처리하는 방법을 알아보겠습니다.

     

     

    필요한 라이브러리 불러오기

    • seaborn 라이브러리 : dataset을 불러옵니다
    • pandas 라이브러리 : data를 Series(1차원 데이터), 혹은 DataFrame(2차원 데이터 이상)으로 핸들링합니다

     

    저는 타이타닉 데이터를 불러왔는데요, 다양한 데이터를 불러올 수 있는데 불러오는 방법은 seaborn 라이브러리를 코드 상단에 import 하여 불러온 후 load_dataset('불러오고 싶은 데이터셋') 메소드를 사용하면 됩니다 :)

    타이타닉 데이터셋의 경우 891개의 row(행)와 15개의 column(열)으로 구성된 것을 알 수 있습니다

     

     

    .shape을 사용하면 데이터의 dimension(차원)을 알 수 있습니다 2차원 데이터이며 891개의 행과 15개의 열로 구성되어있는 것을 확인할 수 있습니다

     

    .head() 메소드를 사용하면 가장 먼저 나오는 5개의 행을 확인할 수 있습니다

     

    만약 10개의 행을 확인하고 싶은경우 .head(10) 메소드를 사용하면 됩니다

    .head() 메소드의 argument로 불러오고 싶은 행의 개수를 넣으면 됩니다

     

    .tail() 메소드는 .head() 메소드와 유사하며 메소드의 이름에서 유추할 수 있듯이 마지막 5개의 행을 가져옵니다.

    만약 마지막 10개의 행을 가져오고 싶은 경우 .tail(10) 메소드를 사용하면 됩니다

     

    저는 ".head(), .tail() 메소드는 왜 5개 row만 가져오지?" 생각했는데요, 이는 default로 가져오는 개수가 5개로 지정되어있기 때문입니다.

    가져오고 싶은 개수는 위에서 언급했듯이 argument로 넣어주시면 됩니다 !

     

    생존여부를 나타내는 alive 칼럼을 var 변수에 넣은 후, '행' 조건을 'alive'=='yes' 즉, 생존자의 데이터만 가져오도록 하였습니다.

    , : 의 의미는 모든 열을 가져온다는 의미입니다

     

    "나는 모든 열을 가져오긴 싫고 생존여부, 성별, 나이 열만 가져오고 싶은데"

    이런 경우에는 리스트 형태(['alive', 'sex', 'age'])로 열 부분에 작성하면 됩니다

     

    나이가 평균이상인 데이터만 가져오고 싶은 경우

    행 조건에 average_age 보다 크거나 같다는 조건을 적어주시면 됩니다. titanic을 생략하게 되면 에러가 발생하므로 사용시 주의해야 합니다

    타이타닉 데이터셋의 평균 나이 구하기
    나이가 평균 이상인 데이터만 가져오기

     

     

     

    행 조건이 두 개인 데이터의 열을 지정하여 데이터 가져오기

    Ex1) 성별이 '남자'이고 나이가 평균이상인 데이터의 'who', 'age', 'sex' 열만 가져오기

    이 예시의 경우 조건이 두 개가 필요합니다.

    조건을 두 개 이상 작성할 때는 titanic.loc[(조건1) (& or |) (조건2), [열 범위]] 이와 같은 방식으로 작성해주시면 됩니다

    & : (and 조건) | : (or 조건)

     

     

    행 조건이 세 개인 데이터의 열을 지정하여 데이터 가져오기

    조건이 세 개인 경우에도 두 개인 경우와 동일한 방식으로 조건을 작성하면 됩니다

    Ex2) 'embark_town'이 'Southampton'이고 'fare'가 '평균 미만'이며 'embarked'가 'S' 또는 'Q'인 데이터의 'embark_town', 'fare', 'survived', 'embarked', 'who' 열만 가져오기

     

    평균을 계산하는 방법은 .mean() 메소드를 사용하면 쉽게 구할 수 있습니다

     

    Ex2)의 코드와 출력 결과는 아래와 같습니다

    순차적으로 조건에 맞게 논리식을 작성하면 됩니다 

     

    틀린 부분 댓글로 작성해주시면 감사하겠습니다 😊

    댓글