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

유피노트님의 프로필 이미지
유피노트

작성한 질문수

파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기

[3/14] Pandas의 Series와 DataFrame 이해와 색인

dataframe 접근속도 관련 문의

해결된 질문

작성

·

238

2

유튜브 보다 인프런 강의까지 오게되었는데 듣다 궁금한 부분이 있어서 질문드립니다. %timeit을 해서 확인해보니 1) df["Name"][0] 2) df.loc[0."Name"] 3) df.loc[0]["Name"] - 유튜브에서는 1)과 2)를 비교해주셨고,
- 인프런에서는 2)와 3)을 비교해주시면서
 
2)가 접근속도가 더 빠르다고 하였는데
1)이 가장 빠르다고 나와서 이에 대한 다른 이유?가 있는지 궁금해서 문의드립니다.

답변 1

1

박조은님의 프로필 이미지
박조은
지식공유자

안녕하세요.

유튜브 영상을 다시 촬영해서 올린거라 loc의 사용방법에 대해 .loc[행, 열] 로 사용하는 게 빠르다는 의도였는데

유튜브에서는 비교 대상이 달라서 혼란이 있었겠네요. 꼼꼼하게 봐주셔서 고맙습니다.

timeit 으로 속도를 측정한건 loc 사용법에 대해 [행][열] 보다는 [행, 열]로 사용하는 것이 좋다는 의도입니다.

 

df[열][행] 은 두 번 인덱싱 해서만 사용할 수 있고 행을 먼저 인덱싱 하려면  .loc[행][열]을 사용해야 합니다.

그래서 이 두 가지 방법 중에는 보통 인덱싱 순서에 따라 사용하면 되는데 속도가 중요하다면 df[열][행] 을 사용해 주세요.


실제로 현업에서 pandas 를 사용하다보면 3 가지의 속도를 크게 느낄 만큼 병목이 생길 정도는 아닙니다.

그래서 현업에서 사용할 때는 어떤 걸 먼저 인덱싱해야 하는지 목적에 따라 사용할 때가 더 많습니다.

물론 데이터가 몇G이상 넘어가게 되면 차이가 커지기도 하는데 인덱싱 부분은 체감할 만큼의 속도차는 아니기는 합니다. 그래서 결론은 df[열][행] 을 사용하는게 가장 빠르지만 .loc를 사용한다면 .loc[행, 열]을 사용하는게 속도나 대괄호 타이핑이 약간 줄어든다는 면에서 더 좋습니다.

 

유피노트님의 프로필 이미지
유피노트

작성한 질문수

질문하기