Форум сайта python.su
Всем привет! Огромнейшая проблема просто для меня, поскольку язык для меня абсолютно неизвестный, а скроки выполнения работы крайне малы. Есть таблица Excel с данными и пропусками в них. Есть уже функция, которая считывает эти данные, адаптирует формат даты, делит данные на массивы по годам. Нужна функция, которая будет проходить по всем столбцам и проводить интерполяцию в них. Тип интерполяции не важен. Библиотека SciPy (которая, к слову, у меня не ставится, а на Линуксе и Маке без проблем). Код, который уже есть, привожу ниже, файл тоже. Умоляю, выручайте!
import xlrd file_location = "E:/FIRES.xls" workbook = xlrd.open_workbook(file_location) sheet = workbook.sheet_by_index(0) print (sheet.nrows) print (sheet.ncols) date = sheet.cell_value(1, 0) true = xlrd.xldate.xldate_as_datetime(date, workbook.datemode) check_year = str(true).split('-')[0] print (check_year) array_one = [] array_two = [] test = [] for row in range(1, sheet.nrows, 1): del array_two[:] for col in range(sheet.ncols): array_two.append(sheet.cell(row, col)) date = sheet.cell_value(row, 0) true = xlrd.xldate.xldate_as_datetime(date, workbook.datemode) year = str(true).split('-')[0] del array_two[0] array_two.insert(0, year) array_two.insert(0, true) array_one.append(array_two) if year == check_year: test.append(array_two) else: print (test) check_year = year test = []
Отредактировано outrage (Янв. 27, 2017 13:44:54)
Офлайн
Ссылка на файл в гугл-диске не работает (404 error).
Поэтому трудно представить, в чем задача; но в любом случае – я бы рекомендовал для ее решения пакет pandas, который (на базе xlrd) может работать с xls-файлами, а также может выполнять интерполяцию, заполнение пропущенных данных и т.п.
Под Windows устанавливать лучше свободно распространяемый дистрибутив anaconda (от continuum analytics), который содержит и Python и много полезных пакетов для решения вычислительных задач и задач обработки данных.
Офлайн
scidamПрошу прощения, заменила ссылку на нормальную. Собственно, сама библиотека не проблема, у меня есть кого попросить ее поставить на Маке, проблема конкретно в самом коде, потому что, как я писала выше, язык ну аж вообще не знакомый, руководитель диплома поставил уж больно сложную задачу выучить язык и сделать диплом за короткий срок.
Ссылка на файл в гугл-диске не работает (404 error).Поэтому трудно представить, в чем задача; но в любом случае – я бы рекомендовал для ее решения пакет pandas, который (на базе xlrd) может работать с xls-файлами, а также может выполнять интерполяцию, заполнение пропущенных данных и т.п.Под Windows устанавливать лучше свободно распространяемый дистрибутив anaconda (от continuum analytics), который содержит и Python и много полезных пакетов для решения вычислительных задач и задач обработки данных.
Офлайн
C установленным пакетом pandas Ваша задача решается следующим образом:
import pandas as pd data = pd.read_excel('FIRES.xls') print(data.info()) # Информация о загруженных данных (до интерполяции) print(data.interpolate().info()) # выводит информацио о данных после интерполяции (линейной) пропущенных данных
<class 'pandas.core.frame.DataFrame'> RangeIndex: 2760 entries, 0 to 2759 Data columns (total 11 columns): date 2760 non-null datetime64[ns] proton1 2712 non-null float64 proton2 2712 non-null float64 proton3 2712 non-null float64 electron1 2747 non-null float64 electron2 2747 non-null float64 fluks107 2760 non-null int64 speed 2754 non-null float64 np 2754 non-null float64 temp 2484 non-null float64 newfires 2664 non-null float64 dtypes: datetime64[ns](1), float64(9), int64(1) memory usage: 237.3 KB ==================== Далее идет то, что после интерполяции: <class 'pandas.core.frame.DataFrame'> RangeIndex: 2760 entries, 0 to 2759 Data columns (total 11 columns): date 2760 non-null datetime64[ns] proton1 2760 non-null float64 proton2 2760 non-null float64 proton3 2760 non-null float64 electron1 2760 non-null float64 electron2 2760 non-null float64 fluks107 2760 non-null int64 speed 2760 non-null float64 np 2760 non-null float64 temp 2760 non-null float64 newfires 2760 non-null float64 dtypes: datetime64[ns](1), float64(9), int64(1) memory
Офлайн
scidamДовольно интересно, надо будет покопаться и разобраться, большое спасибо за ответ!
C установленным пакетом pandas Ваша задача решается следующим образом:
Офлайн