Загрузка данных


1. Какие способы переименования столбцов существуют в Pandas? В чём преимущества и недостатки каждого?
   Ответ: 
   - rename() с копией: безопасный, не меняет исходные данные, но требует присваивания.
   - rename() с inplace=True: меняет исходный DataFrame, экономит память.
   - Прямое присваивание columns: самый быстрый, но требует указания ВСЕХ столбцов.

2. Как добавить новый столбец в определённую позицию DataFrame (не в конце)?
   Ответ: Использовать метод insert(позиция, 'имя_столбца', данные). Например: df.insert(2, 'new_col', [1,2,3])

3. В чём разница между удалением столбцов через drop() и через оператор del?
   Ответ: drop() может удалять несколько столбцов сразу и работает с копией (inplace=False).
   del удаляет только один столбец и всегда изменяет исходный DataFrame.

4. Почему после удаления строк рекомендуется выполнять сброс индекса? Что произойдёт, если этого не сделать?
   Ответ: После удаления строк индексы становятся "рваными" (1,5,7...). Без reset_index() 
   могут возникнуть проблемы при итерации и объединении DataFrame.

5. Как добавить несколько строк в DataFrame с помощью pd.concat()? Что означает параметр ignore_index=True?
   Ответ: pd.concat([df1, df2], ignore_index=True). ignore_index=True создаёт новые индексы 
   0,1,2... вместо сохранения старых.

6. Объясните разницу между .loc[] и .iloc[] при отборе данных.
   Ответ: .loc[] - отбор по меткам индекса (включая правую границу), 
   .iloc[] - отбор по целочисленным позициям (как в списках Python).

7. Как выполнить условное объединение значений в столбце на основе значений другого столбца?
   Ответ: Использовать loc[условие, 'столбец'] = новое_значение. Например:
   df.loc[df['age'] > 18, 'status'] = 'Adult'

8. Для чего используется метод str.cat()? Приведите пример использования.
   Ответ: str.cat() объединяет строки с указанным разделителем. Пример: df['full'] = df['first'].str.cat(df['last'], sep=' ')

9. Как сохранить DataFrame в CSV-файл без сохранения индекса? Почему это часто необходимо?
   Ответ: df.to_csv('file.csv', index=False). Это необходимо, чтобы при загрузке не создавался 
   лишний столбец с индексами.

10. Что произойдёт при попытке удалить несуществующий столбец или строку?
    Ответ: Pandas вызовет ошибку KeyError, так как указанный столбец/строка не найдены.