Иногда задача кажется бессмысленной, но все равно хочется ее решить: ведь совершенно просто файл формата .xlsx сохранить в формате .csv и не парить по поводу загрузки в Python для обработки.
Но раз уж попала вожжа под хвост, то покатимся. Это первая причина, а вторая причина - мои посты на 99 % носят содержательный характер, гуманитарный я бы сказал. Т.е. я показываю содержательное решение задачи, а где-нибудь в уголке показываю метод (с помощью xgboost). А сегодня под настроение хочется показать кусок кода.
Загружаем сначала необходимые пакеты
Загружаем
Ну и как то так
Но раз уж попала вожжа под хвост, то покатимся. Это первая причина, а вторая причина - мои посты на 99 % носят содержательный характер, гуманитарный я бы сказал. Т.е. я показываю содержательное решение задачи, а где-нибудь в уголке показываю метод (с помощью xgboost). А сегодня под настроение хочется показать кусок кода.
Ну и так
давайте загрузим в Python такой файл
first
|
second
|
2
|
5
|
3
|
6
|
import pandas as pd import xlrdЗа загрузку файла excel отвечает пакет xlrd, и загружается он напрямую, не через pip - мелочь, а приятно.
Загружаем
rb = xlrd.open_workbook('D:1.xlsx',formatting_info=False) sheet = rb.sheet_by_index(0)Далее вот такой хитрый код
row = [] for i in range(sheet.nrows): r = sheet.row_values(i) row.append(r) print (row)Данные у нас выходят в таком виде
[['first', 'second'], [2.0, 5.0], [3.0, 6.0]]Нам это не нравится, мы переводим в табличный вид
df = pd.DataFrame(row) df.columns = df.iloc[0] df = df.reindex(df.index.drop(0))Последние две строки для того, чтобы первая строка стала заголовками. Можно, видимо, сделать это элегантней.
Ну и как то так
first
|
second
|
|
1
|
2
|
5
|
2
|
3
|
6
|
Такой способ загрузки может быть востребован, если вы не хотите тратить время на переформатирование файла (чаще присылают excel, а не csv). И кроме того, при данном способе Python обрезает пустые строки сверху. Т.е. если вам прислали файл, в котором сверху отступ в виде пустых строк, то загрузятся только строки с данными
Комментариев нет:
Отправить комментарий