• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

행 기준 데이터 불러오기 (loc)

20.06.22 15:18 작성 조회수 105

1

행을 기준으로 데이터를 불러오는 방법에 대해 질문 드립니다~^^

df.loc[0] 은 0번째 인덱스의 행을 불러옵니다. (맞나요?ㅎㅎ)

그럼 df.loc[0, 1] 은 에러를 출력, 

df.loc[0, "열 이름"] 은 "열 이름"의 해당하는 열의 0번째 행의 값을 불러옵니다.

그럼 iloc를 사용하는 것이 아니라면

df.loc[0, 1]가 에러를 출력하는 것은 loc를 이용시 df.loc[0, "열 이름"] 은 0번째 행, 0번째 열의 값을 불러오지만

( [행index, 열index] )을 위처럼 열의 변수명을 이용하는 것이 아닌  둘다 인덱스를 이용시

불러올 수 없는 건가요?

df[0][0]으로 0번째 행의 0번째 열의 값을 출력하는 것을 알고 있지만 제가 이해하는게 맞는 것인지 궁금합니다.

답변 3

·

답변을 작성해보세요.

0

안녕하세요.

질문주신 두 가지 방법에 대해서는 속도차이는 별로 없습니다.

가장 큰 차이점은 열이름에 공백이나 특수문자가 들어갔을 때 df.열이름 으로 사용할 수가 없습니다.

또, 연산의 속도차이는 %timeit을 통해 직접 프로파일링 해보시면 두 가지 방법의 속도 차이를 좀 더 정확하게 보실 수 있습니다.

%timeit df.열이름.describe() 

%timeit df["열이름"].describe()

이렇게 두 가지 방법으로 비교해 보세요!

그리고 df["열이름"] 으로 표현하면 1차원 시리즈로 반환이 되고

df[["열이름"]] 으로 표현하면 2차원 데이터프레임으로 반환이 됩니다.

0

nealzs님의 프로필

nealzs

질문자

2020.06.23

pandas으로 불러온 데이터를 처리하는 과정에서

df.열이름                 df["열이름"]

위 두가지 코드에서 특별한 차이점이 있는지 궁금합니다~

예를 들어 df.열이름.describe() 와 df["열이름"].describe 에서 연산의 속도차이가 있나요?

후자는 2차원으로도 표현 가능한 것 같은데 그 외로는 별차이가 없나요~~?

0

안녕하세요. 

질문 주신 내용은 .iloc를 사용하시면 0부터 시작하는 인덱스 번호로 데이터를 색인할 수 있습니다.

그리고 .loc 했을 때 인덱스가 숫자이기 때문에 .loc[0] 을 했을 때 첫번째 행을 불러올 수 있는 것입니다.

그래서 .loc는 행의 숫자보다는 인덱스값으로 불러온다가 더 정확한 표현입니다.

.iloc 로 인덱스 번호를 통해 행, 열의 값을 색인해 보세요!