Share |

среда, 17 августа 2016 г.

Как в Python читать файлы формата excel

Иногда задача кажется бессмысленной, но все равно хочется ее решить: ведь совершенно просто файл формата .xlsx сохранить в формате .csv и не парить по поводу загрузки в Python для обработки.
Но раз уж попала вожжа под хвост, то покатимся. Это первая причина, а вторая причина - мои посты на 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 обрезает пустые строки сверху. Т.е. если вам прислали файл, в котором сверху отступ в виде пустых строк, то загрузятся только строки с данными

Пост показался полезным?

Кликните на директ рекламу - вы сэкономите время с помощью кода, а мое затраченное время будет не таким бессмысленным)))

Комментариев нет:

Отправить комментарий

рек