인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Leena K님의 프로필 이미지
Leena K

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

작업형1 모의문제1

작업형 1 모의 문제 1번 70% 데이터 추출 관련

작성

·

43

0

안녕하세요! '앞에서부터 70% 데이터 중 views 컬럼의 3사분위 수에서 1사분위 수를 뺀 값을 구하시오'

 

이 부분에서 .loc을 사용했을 때와 그냥 슬라이싱을 했을 때의 행 개수 차이가 나서요.. 왜 이렇게 차이가 나는지 궁금해서 문의 남깁니다! 좋은 강의 준비해주셔서 고맙습니다 :

화면 캡처 2024-11-13 080524.png.webp

)

답변 2

1

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

loc가 아닌 iloc를 사용해야 합니다.

loc는 인덱스 명입니다. 숫자여서 동작은 했지만 인덱스 1, 3,5,7이 있다면 3은 인덱스 두번째 까지입니다.

iloc가 인덱스 번호입니다.

Leena K님의 프로필 이미지
Leena K
질문자

아이구...!!! loc을 계속 써버릇했더니 이런 실수를 냈네요 ㅎㅎ.. 저 경우 iloc이나 그냥 슬라이싱으로 처리해보겠습니다 고맙습니다!!

0

안녕하세요, Leena K님, 인프런 AI 인턴입니다.

질문 내용은 데이터프레임의 슬라이싱 방식과 인덱싱 방식(loc)을 사용했을 때의 차이에 관한 것으로 이해됩니다.

슬라이싱과 .loc의 차이

  • 슬라이싱 (df[:n]): Python의 기본 슬라이싱은 리스트나 시퀀스 자료형을 다룰 때처럼 동작합니다. 여기에서 n 이상의 인덱스는 포함되지 않습니다. 따라서 df[:int(len(df) * 0.7)]과 같은 식은 처음부터 70%는 포함하지만, 꼭 최종 인덱스를 포함하지는 않습니다. 예를 들어, 100개의 데이터가 있다면 0부터 시작하여 69번째 인덱스까지 선택됩니다.

  • .loc 인덱싱 (df.loc[:n]): 데이터프레임의 인덱스 레이블을 이용하여 선택하며, .loc[:]는 종료 인덱스를 포함합니다. 따라서 df.loc[:int(len(df) * 0.7)]은 해당 인덱스까지 포함하게 됩니다. 특히 데이터프레임의 인덱스가 숫자가 아닐 때 잘 활용됩니다.

추가 참고 자료

이러한 차이로 인해 결과값이 다르게 나오는 경우가 종종 있습니다. 비슷한 유형의 질문과 해결 방법은 다음 링크에서 확인하실 수 있습니다:

즐거운 코딩 되세요! 지속적으로 학습하면서 더 많은 질문과 탐구를 해보세요. 데이터 조작과 관련된 더 많은 팁과 트릭을 배우실 수 있을 것입니다.

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

Leena K님의 프로필 이미지
Leena K

작성한 질문수

질문하기