pandas.DataFrame.loc 사용법 요약

"loc"은 DataFrame 내에서 조건을 충족하는 행과 열을 추출할 수 있습니다. pandas를 이용하고 있으면 자주 나오는 「loc」입니다만, 데이터의 지정 방법에 바리에이션이 있으므로, 그 변을 정리해 가고 싶습니다.

데이터 지정 정보



loc은 크게 나누면 다음의 데이터 지정이 가능합니다.
  • 단일 라벨
  • 라벨 목록
  • 레이블 슬라이스 개체
  • 진위 값 목록
  • 조건식 지정

  • 다양한 사용법이 있네요... (゜_゜)
    프로그램을 쓸 때도 주의가 필요합니다만, 읽을 때에 어느 패턴으로 실장되고 있는지 냉정하게 구별하지 않으면, 「????」라고 될 것 같습니다. 각 샘플 코드를 작성해보고 동작을 확인해 보겠습니다.

    실제로 사용해 보았습니다.



    이번 동작 확인으로 이용하는 데이터는 스스로 만든 것입니다.
    import pandas as pd
    loc_sample_data = pd.read_csv("loc_sample_data.csv",index_col="item_name")
    loc_sample_data.head()
    



    행 인덱스는 item_name, 열은 price, stock, producing_area로 구성됩니다.

    단일 인덱스 레이블 지정



    추출하려는 행의 인덱스 레이블(단일)을 지정하여 데이터를 추출합니다.
    이번에는 itemC의 추출을 해 나갑니다.
    loc_sample_data.loc["itemC"]
    



    추출할 수 있었습니다. 추출된 데이터는 Series 유형입니다.

    색인 레이블 목록 지정



    위의 예는 단일 행만 추출하지만 여러 행을 지정/추출할 수 있습니다. 복수 지정하는 경우는 리스트로 지정합니다.
    이번에는 itemA, itemD의 추출을 해 나갑니다.
    loc_sample_data.loc[["itemA", "itemD"]]
    



    추출할 수 있었습니다. 추출된 데이터는 DataFrame 유형이었습니다.

    단일 행 레이블, 열 레이블 지정



    행과 열 각각의 레이블을 지정하여 데이터를 추출할 수도 있습니다. 이번에는 행 → itemB, 열 → producing_area를 지정하여 데이터 추출합니다.
    loc_sample_data.loc["itemB", "producing_area"]
    


    추출할 수 있었습니다. 추출된 데이터 str형입니다. 이 예제에서는 추출된 데이터 str 형식이지만 DataFrame에 저장된 데이터의 내용에 따라 달라집니다.

    슬라이스를 이용한 행 레이블, 열 레이블 지정



    슬라이스를 이용하여 행, 열을 복수 지정할 수 있습니다. 이것을 이용해 itemA, itemB의 price를 추출합니다.
    loc_sample_data.loc["itemA":"itemB","price"]
    



    추출할 수 있었습니다. 이것을 사용할까 ...?

    진위 값 목록을 사용한 데이터 지정



    추출할 데이터 프레임과 동일한 길이(행 수)의 진위 값 목록을 지정하여 True 행만 추출할 수 있습니다. 이번에는 itemB와 itemD를 추출해 본다.
    loc_sample_data.loc[[False, True, False, True]]
    


    추출할 수 있었습니다. 이것 단발이라고 사용할 기회가 될 것 같지만, 사전에 각 행마다 추출 조건을 만족할지 어떨지를 판정해, 리스트를 작성하면 사용도가 있을 것 같네요.

    조건식을 이용한 데이터 지정



    가장 많이 사용할 것 같은 사람입니다. 이번에는 price가 500보다 큰 데이터(itemC, itemD)를 추출해 보겠습니다.
    loc_sample_data.loc[loc_sample_data["price"] > 500]
    



    추출할 수 있었습니다. 역시 이것 단체라면 제일 사용하자.

    조건식을 이용하여 특정 열만 추출



    이전 조건식 외에도 특정 열을 지정하여 추출합니다. 조건은 앞에서 비슷하지만 이번에는 producing_area 열만 추출합니다.
    loc_sample_data.loc[loc_sample_data["price"] > 500, ["producing_area"]]
    



    마지막으로



    여러가지 사용법 있습니다만, 반드시 익히는 것이 좋은 것은 조건식을 이용한 데이터 추출입니까. 이번 조금 길고 피곤해서 끝납니다. 그럼 다시 다음 게시물에!

    좋은 웹페이지 즐겨찾기