• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

빈도수가 1000개 이상인 데이터를 따로 담을 때 코드 질문 있습니다.

24.04.18 21:03 작성 조회수 58

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

강좌에서

academy_count = df_academy["상권업종소분류명"].value_counts()

후에

academy_count_1000 = academy_count[academy_count > 1000]

으로 데이터를 따로 담았는데 여기서 아래와 같은 academy_count를 따로 담지 않고 한번에 작성하는 코드

academy_count_1000 = df_academy[df_academy["상권업종소분류명"].value_counts() > 1000]

는 왜 오류가 나는 걸까요? 불리언 인덱싱 값을 시리즈 형태로 반환할 때, 새로 지정한 academy_count는 시리즈 형태이지만, df_academy는 데이터프레임이라서 오류가 나는 건가요??

답변 2

·

답변을 작성해보세요.

0

안녕하세요. 질문주신 내용처럼 value_counts() 결과의 인덱스 값과 데이터프레임의 인덱스 값이 다릅니다.

해당 결과는 빈도수 결과인 value_counts() 의 일부를 가져오는 것이라 해당 결과로 인덱싱을 해주어야 의도한 값을 가져올 수 있습니다.

감사합니다 :)

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.18

안녕하세요, 인프런 AI 인턴입니다. 박찬모님의 질문에 대해 설명드리겠습니다.

우선, 질문 주신 코드에서 발생하는 오류의 원인을 설명드리자면, df_academy["상권업종소분류명"].value_counts() > 1000 코드는 시리즈의 각 값에 대해 빈도수가 1000을 초과하는지 여부를 나타내는 불리언 시리즈를 반환합니다. 그러나 이 불리언 시리즈는 원본 데이터프레임 df_academy의 행과 직접적으로 매핑되지 않습니다. value_counts()로 생성된 시리즈의 인덱스는 df_academy의 ‘상권업종소분류명’의 고유 값들이 되므로, 이를 바로 df_academy의 특정 조건으로 사용하는 것은 불가능합니다.

하지만, 유사한 질문에 대해 이미 답변된 사례가 있습니다. 그 내용을 토대로 질문에 답변해 드릴 수 있습니다.

이와 관련된 질문은 df.loc으로 인덱싱 항목에서 볼 수 있습니다. 자세한 내용은 다음 URL에서 확인할 수 있습니다:
- df.loc으로 인덱싱

위 링크의 질문에서 언급된 .loc 메서드 사용법은 이런 상황에서 핵심적입니다. df.loc을 사용하면 조건에 맞는 행을 선택할 수 있으며 여러 조건을 함께 사용할 수도 있습니다. 다만, 본 문제에서와 같이 직접 value_counts()의 결과를 조건으로 사용하는 것은 불가능한데, 그 대신 isin() 메서드와 시리즈의 인덱스를 사용해 같은 결과를 낼 수 있습니다.

질문에서 원하는 한번에 필터링하는 방법은 바로는 불가능하지만, 두 단계로 나누어 수행할 수 있는 코드의 예시를 다음과 같이 볼 수 있습니다:
1. value_counts()로 빈도수가 1000 이상인 ‘상권업종소분류명’들을 찾습니다.
2. 찾은 항목들을 isin() 메서드에 적용해 해당하는 행만을 필터링합니다.

질문하신 코드의 오류는 value_counts()가 반환하는 결과가 원본 데이터프레임과 직접적인 연관이 없기 때문에 발생합니다. 따라서, 원하는 결과를 얻기 위해서는 두 단계를 거쳐야 합니다. 유사한 질문에서 나온 답변을 참고하여 해결 방법을 모색하는 것이 좋겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.