input: Write a function to create a recommendation system in Python using Pandas to recommend new products to customers based on past purchases. The function should read in a CSV file containing product data, create an item-based collaborative filter using the NearestNeighbors algorithm from scikit-learn, and then make product recommendations for each item.
  assert recommend_products(pd.DataFrame({'item_id': [0, 1, 2], 'feature1': [0.1, 0.2, 0.3], 'feature2': [0.4, 0.5, 0.6]})) == ['Recommendations for item 0: [1 2]', 'Recommendations for item 1: [0 2]', 'Recommendations for item 2: [0 1]']
  assert recommend_products(pd.DataFrame({'item_id': [0], 'feature1': [0.1], 'feature2': [0.4]})) == ['Recommendations for item 0: [0]']
  assert recommend_products(pd.DataFrame({'item_id': [0, 1], 'feature1': [0.1, 0.2], 'feature2': [0.4, 0.5]})) == ['Recommendations for item 0: [1]', 'Recommendations for item 1: [0]']
  assert recommend_products(pd.DataFrame()) == []
  assert recommend_products(pd.DataFrame({'item_id': [0, 1, 2, 3], 'feature1': [0.1, 0.2, 0.3, 0.4], 'feature2': [0.4, 0.5, 0.6, 0.7]})) == ['Recommendations for item 0: [1 2 3]', 'Recommendations for item 1: [0 2 3]', 'Recommendations for item 2: [0 1 3]', 'Recommendations for item 3: [0 1 2]']
output: 
  def recommend_products(df):
      if df.empty:
          return []
      
      from sklearn.neighbors import NearestNeighbors
      
      X = df.drop('item_id', axis=1).values
      nbrs = NearestNeighbors(n_neighbors=3, algorithm='auto').fit(X)
      distances, indices = nbrs.kneighbors(X)
      
      recommendations = []
      for i, item in enumerate(df['item_id']):
          rec_items = indices[i][indices[i] != i]
          recommendations.append(f'Recommendations for item {item}: {rec_items.tolist()}')
      
      return recommendations
  