• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

apply처리 관련 질문

21.04.08 00:26 작성 조회수 214

0

선생님~ 강의 정말 잘 듣고 많이 배우고 있습니다.

정말 감사합니다. 

강의 10:47~ 부분에서 

bureau['BUREAU_IS_DPD'] = bureau['CREDIT_DAY_OVERDUE'].apply(lambda x: 1 if x > 0 else 0)

apply관련 설명하시면서 판다스에서 apply 람다식으로 하면 시간이 좀 더 걸린다고 하시면서 나중에 기회되면 설명해주시겠다고 하셨는데요..!

이 부분에 대한 설명을 듣고 싶네요 ㅜㅎ

그리고

apply 람다식 말고 다른 방법으로는 어떤 방법을 권장하시는 지 설명해주시면 감사하겠습니다.ㅠ 

답변 3

·

답변을 작성해보세요.

0

엔지니어링 관련해서는 워낙 주워들은게 많아서, 그걸로 말씀드리는 거라서, 추천할만한 책 같은 것은 잘 모르겠습니다. 그냥 시간이 지나면서 여러가지 찾다 보니까, 그런 감각이 생기는것 같습니다.

그리고 칭찬 감사합니다. ^^;

freedom07님의 프로필

freedom07

질문자

2021.04.09

아 그렇군요..!!ㅎㅎ 답변 감사합니다^^

0

freedom07님의 프로필

freedom07

질문자

2021.04.09

와..상세하게 답변해주셔서 정말 감사합니다 ㅠ엔지니어 기반의 설명까지 해주셔서 엔지니어링 관련되서 지식이 정말 적음에도 불구하고 정말 이해가 잘 되게 설명해주시네요..

내공에 설명력까지 갖춰주시는 답변에 감탄하고..선생님께 감사합니다 ㅠㅠ..!

엔지니어링관련에도 예전부터 내공이 참 깊으시다고 느껴졌는데 배울점이 참 많습니다..ㅠ

혹시 기초적으로 조금 알고 싶어서.. 엔지니어링 관련 지식을 얻기위해 추천하는 책이나 사이트 혹시 있을까요..? 추천해주시면 감사하겠습니다..ㅠ!

0

안녕하십니까,

이게 엔지니어링에 관련된 것입니다.

pandas는 기반이 numpy입니다. 그러니까, numpy를 편리하게 사용하기 위해서 interface만 DataFrame인 기반인 것이지 내부는 다 numpy로 되어 있습니다.

그리고 numpy는 CPU의 SIMD 연산을 통해서 Vector processing을 array별로 많은 데이터를 한꺼번에 처리할 수 있습니다. 그래서 pandas는 메모리 상에서 다량의 array를 Vector processing으로 처리해서 매우 빠릅니다(일반적인 RDBMS보다 매우 빠릅니다)

그런데 이 vector processing은 array 를 통체로 적용하는 내부연산에서만 적용됩니다. 일반적으로 pandas의 개별 컬럼은 개별 array에 해당 됩니다. 그래서 개별 컬럼(개별 array)의 min, max, avg, groupby, boolean 연산등은 엄청 빠릅니다. 그런데 array의 개별적인 원소들을 하나씩 체크해가면서 수행해야 되는 연산, 가령 개별 원소의 특정 조건을 if else로 조사하는 로직은 vector processing을 적용되지 않습니다. 그래서 상대적으로 수행 속도가 느립니다(이때는 좀 많이 느린것 같습니다 ^^;;)

apply lambda 식이 개별적인 원소들을 하나씩 체크해야만 하는 대표적인 로직이며, 이를 빠르게 하려면 array통채로 계산할 수 있는 로직을 생각해 내야 되는데, 이게 불가능한 경우가 대부분 입니다.

감사합니다.