4번째 프로젝트 github 코드리뷰

        train_df = train_df.copy()
        train_df["time"] = pd.to_datetime(train_df["time"], unit='s')

        user_time = train_df.groupby('user')['time'].agg(['min', 'max']).reset_index()
user_time = train_df.groupby('user', as_index=False)['time'].agg(['min', 'max'])
라고 해도 될 것 같습니다.

무슨 차이냐면

  • 첫 번째 방법은 그룹화 후 reset_index()를 추가로 호출
  • 두번째 방법 groupby()에서 as_index=False를 사용하면 바로 ‘user’ 컬럼이 인덱스가 아닌 일반 컬럼으로 생성


        Args:
            filename (str): Name of the file to load the matrix from
        """
        load_path = self.data_dir / filename

굳이 변수로 할당 안 해도 될 것 같습니다.

# load_path 변수 할당 없이 바로 사용
return np.load(self.data_dir / filename)  # 예시
# 또는
with open(self.data_dir / filename, 'r') as f:  # 예시
    # 파일 처리 로직

변수 할당을 줄여 코드를 간결하게하고 메모리 사용을 줄일 수 있다.


       # 각 사용자별로 추천 항목 추가
        for user, user_df in df.groupby('user'):
            for item in user_df['item']:
                all_recommendations[user].append(item)
df.groupby("user")["item"].apply(list)
로 갈음할 수 있어보입니다.

파이썬 스러운 코드로 수정이 가능하다.


self.users = [i for i in range(num_user)]

리스트 보다는 텐서 로 할당해두는 게 나았을 것 같아요.

self.users = torch.arange(num_user)  # 텐서로 변경

리스트 컴프리헨션을 텐서로 변경하는 것이 바람직하다.