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

Dongmin Park님의 프로필 이미지

작성한 질문수

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

작업형1 모의문제1

작업형 1 모의문제1 - 문제 1

해결된 질문

작성

·

22

0

  • 70%의 데이터를 추출하는 과정에서 그냥 df[:int(len(df)*0.7)을 한 것과 df.loc[int(len(df), : ]과 결과값에 차이가 존재하는 걸 확인했습니다. 왜 차이가 발생하는지 알 수 있을까요? 이전 작업까지의 결과물은 수치가 정상적으로 나오는 것을 확인했습니다.

     

     

  • df[:int(len(df)*0.7) 의 경우

     

    스크린샷 2024-11-17 오후 6.23.04.png.webp

     

  • df.loc[int(len(df), : ]

     

    스크린샷 2024-11-17 오후 6.28.27.png.webp

     

     

답변 2

0

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

loc 와 iloc의 차이에 대한 이해가 필요합니다.

만약 아래와 같이 인덱스와 컬럼1개가 있다고 가정하면

loc는 인덱스 명으로 구분합니다. 1이 첫번째 인덱스고, 3이 두번째 인덱스 입니다.

iloc는 인덱스 번호로 구분합니다. 0이 첫번째 인덱스고, 1이 두번째 인덱스 입니다.

1 수박

3 딸기

4 포도

5 사과


100개의 데이터가 있을 때 70까지 쪼개기 위해서는 iloc가 적합합니다.

0

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

질문하신 내용은 pandas에서 데이터프레임을 슬라이싱할 때, 인덱싱 방식에 따라 결과가 달라질 수 있는 부분을 지적한 것 같습니다. 두 가지 방법의 차이를 이해하는 것이 중요합니다.

슬라이싱 설명

  1. df[:int(len(df)*0.7)]:

    • 이 방식은 기본적으로 Python의 리스트 슬라이싱 규칙을 따릅니다. 주어진 인덱스 n까지 (즉, n-1 인덱스까지) 포함하여 슬라이싱합니다. 이는 0부터 int(len(df)*0.7) 까지의 데이터를 가져옵니다. 따라서, 해당 값에 도달하기 전까지의 데이터만을 취하고, 끝 인덱스는 포함하지 않음에 주의해야 합니다.
  2. df.loc[:int(len(df)*0.7)]:

    • loc는 레이블 기반 접근이므로 슬라이스의 끝 값도 포함합니다. 이 경우는 지정된 인덱스를 포함하여 모든 데이터가 슬라이싱됩니다. 따라서 이 사용법은 특정 레이블을 포함한 데이터의 서브셋을 취할 때 유용합니다.

예시를 통한 차이점 이해

  • 일반 슬라이싱을 사용하면 끝값 직전까지만 포함되므로, [:int(len(df)*0.7)]에서의 차이가 발생합니다.
  • 반면, .loc 슬라이싱에서는 지정한 인덱스 값까지 포함하여 슬라이스 되기 때문에 결과가 다르게 나올 수 있습니다.

관련 질문과 추가 정보

이와 관련된 팬더스 데이터 슬라이싱의 추가적인 사용법과 방법에 대한 유사한 질문에 대한 답변을 포함하고 있습니다. 아래 링크에서 더 많은 정보를 확인하실 수 있습니다:

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