Как конвертировать csv в excel в Jupyter Notebook
Ну что, начинаю тут вещать и собирать свои лайфхаки. Без них бы я не разобралась в том, что знаю сейчас.
В Jupyter’е есть как минимум с десяток классных функций упрощающих жизнь всем, для примера возьму импорт и экспорт датафреймов:
Импорт
pd.read_csv(filename)
| Загрузить CSV filepd.read_table(filename)
| Из текстового файла с разделителями (например, TSV)pd.read_excel(filename)
| Загрузить Excel filepd.read_sql(query, connection_object)
| Загрузка из таблицы / базы данных SQLpd.read_json(json_string)
| Чтение из строки, URL или файла в формате JSONpd.read_html(url)
| Разбирает html URL, строку или файл и извлекает таблицы в список датафреймовpd.read_clipboard()
| Берет содержимое вашего буфера обмена и передает его в read_table()
pd.DataFrame(dict)
| Словарь, ключи для имен столбцов, значения для данных в виде списков
Экспорт
df.to_csv(filename)
| Записать в CSV filedf.to_excel(filename)
| Записать в Excel filedf.to_sql(table_name, connection_object)
| Записать в SQL tabledf.to_json(filename)
| Записать в JSON format
Сегодня расскажу немножко про боль при сохранении cvs в excel, ключевое почему не срабатывает просто сухое to_excel()
- нужно сначала записать данные в эксель, а после сохранять.
Например у вас загружен в Jupyter csv с помощьюpd.read_csv(filename)
Ниже будет перевод материала из вот этой статьи на медиуме, спасибо @Stephen Fordham.
У Стивена очень подробно все описано, даже с примером как в файл сохранить несколько датафреймов в разные вкладки. Я же представлю скрин того, как сохранить один датафрейм.
Опишу то что мы видим, чтобы использовать Pandas для записи объектов Dataframe в Excel, необходимо установить 2 библиотеки. Это библиотеки xlrd и openpyxl соответственно. Для удобства эти библиотеки можно установить, не выходя из Jupyter Notebook, просто добавив к команде префикс !
подписать с последующей установкой pip
. Когда эта ячейка будет выполнена, вывод будет либо «Требование уже выполнено», либо установка будет выполнена автоматически.
Отвечаю на вопрос, почему у меня на скрине
! pip install openpyxl==3.0.1
При установке последней версии методом! pip install openpyxl
(ставится последняя версия 3.0.2) у меня возникает ошибка при выполнении сохраненияTypeError: got invalid input value of type <class 'xml.etree.ElementTree.Element'>, expected string or Element
Собственно вопрос решается если ставить версию ниже
Далее все проще, как пишет Стивен в своей публикации — От Pandas Dataframe к Excel за 3 шага
- Чтобы начать процесс экспорта Pandas Dataframes в Excel, необходимо создать объект ExcelWriter. Это достигается с помощью метода ExcelWriter, который вызывается непосредственно из библиотеки панд. В этом методе я указываю имя файла Excel (в статье по ссылке автор выбрал Tennis_players, у меня же вы найдете games) и включаю расширение .xlsx. Этот шаг создает основную книгу экселя, в которую мы можем затем записать наши датафреймы.
- После этого я вызываю метод
.to_excel
на скрине выше. В методе.to_excel
первым аргументом, который нужно указать, является объект ExcelWriter, за которым следует необязательный параметр имя листа. (я не использовала индекс, но в статье, на которую я ссылаюсь устанавливают аргумент index =False, по умолчанию, кстати, идет True) Проставляем аргумент ‘utf-8’ для параметра encoding для обработки любых специальных символов. Тоже самое можно повторить и для других датафреймов, единственное записывать их в разные листы, параметр sheet_name. - Наконец, теперь, когда наши датафреймы поставлены в очередь для экспорта, мы вызываем метод save для объекта ExcelWriter, который мы назначили переменной my_excel_file.