[파이썬] eval()

YUNA AN·2024년 8월 12일

Chat GPT로 공부하기

목록 보기
2/14

👩‍🏫 두 코드의 차이가 뭐야?

df["embeddings"] = df["embeddings"].apply(eval).apply(np.array)
     
df["embedding"] = df["embedding"].progress_apply(lambda x: eval(x))     

👩‍🏫 Chat GPT 답변

두 코드의 차이는 주로 다음과 같은 측면에서 발생합니다:

1. 평가 방법:

  • 첫 번째 코드:
    df["embeddings"] = df["embeddings"].apply(eval).apply(np.array)
    • eval()을 사용하여 embeddings 열의 각 값을 평가하고, 그 결과를 np.array()를 통해 NumPy 배열로 변환합니다.
    • 두 번의 apply를 사용하여 첫 번째 apply(eval)로 문자열이나 다른 표현식들을 평가하고, 두 번째 apply(np.array)로 평가된 결과를 NumPy 배열로 변환합니다.
  • 두 번째 코드:
    df["embedding"] = df["embedding"].progress_apply(lambda x: eval(x))
    • 이 코드도 eval()을 사용하여 embedding 열의 값을 평가하지만, 여기서는 progress_apply()lambda를 사용하고 있습니다.
    • lambda x: eval(x)eval(x)를 단순히 람다 함수로 감싼 것입니다. 여기서는 NumPy 배열로 변환하지 않고, 단순히 평가된 값을 새로운 값으로 설정합니다.

2. progress_apply의 사용:

  • 첫 번째 코드는 일반적인 apply 메서드를 사용합니다.
  • 두 번째 코드tqdm 라이브러리에서 제공하는 progress_apply를 사용하여, 적용 과정에서 진행 상황을 시각적으로 보여줍니다. 이 기능은 특히 큰 데이터셋을 처리할 때 유용할 수 있습니다.

3. 결과의 차이:

  • 첫 번째 코드는 평가된 값을 NumPy 배열로 변환하므로, 결과적으로 "embeddings" 열은 NumPy 배열들을 담고 있습니다.
  • 두 번째 코드는 단순히 평가된 결과를 저장하기 때문에, embedding 열에는 평가된 값이 그대로 저장되며, 별도의 배열 변환은 없습니다.

요약

  • 첫 번째 코드는 문자열을 평가한 후, NumPy 배열로 변환하여 저장합니다.
  • 두 번째 코드는 문자열을 평가한 후, 그 결과를 그대로 저장하며, 진행 상황을 표시할 수 있습니다.

이 두 코드의 차이는 주로 데이터를 어떻게 변환하고, 그 결과를 어떻게 저장할 것인지에 따라 달라집니다.

profile
Supply Chain Planning Specialist in Medical/Healthcare

0개의 댓글