Я пытаюсь использовать Python для записи данных из открытого набора данных SPSS в файл excel. Приведенная ниже программа работает нормально, но для файла с 1,4 миллионами точек данных требуется около 35 секунд (2500 случаев, 700 переменных).Эффективно записывать данные SPSS в Excel с помощью Python
На данный момент я просматриваю каждый случай (как кортеж), а затем назначая каждый элемент кортежа в ячейку. openpyxl
- это предпочтительный модуль Excel (поскольку раньше я не использовал какой-либо другой).
Я собираюсь использовать программу Python для гораздо больших наборов данных, поэтому мне было интересно, есть ли более эффективная логика этого.
BEGIN PROGRAM.
import spssdata
import spss,spssaux, sys
import openpyxl
from openpyxl import Workbook
import gc
#initialise timer
time_start = time.time()
#Create the workbook to save the codebook
wb=openpyxl.Workbook()
ws1=wb.create_sheet()
spss.StartDataStep()
MyFile = spss.Dataset()
varDict = spssaux.VariableDict()
MyCases=MyFile.cases
MyVars=MyFile.varlist
for varnum, varname in enumerate(MyFile.varlist):
ws1.cell(row=1,column=varnum+1).value=varname.name
ws2.cell(row=1,column=varnum+1).value=varname.name
for eachcase in range (len(MyCases)):
for eachvar in range (len(MyCases[eachcase])):
ValueToWrite=MyCases[eachcase][eachvar]
ws1.cell(row=eachcase+2,column=eachvar+1).value=ValueToWrite
spss.EndDataStep()
wb.save("some filename")
del wb
gc.collect()
time_end = time.time()
time_taken = int(time_end-time_start)
print ("Saving took " + str(time_taken) + " seconds.")
END PROGRAM.
Есть ли особая причина, по которой вы хотите управлять этим экспортом с помощью Python? Как мне кажется, прямой экспорт прямоугольного набора данных в Excel? Почему бы просто не использовать собственный SPSS для сохранения набора данных в виде Excel? В чем причина того, что это нужно использовать в Python? –
Вы правы, это в основном экспорт данных из набора данных. Но я также делаю некоторые преобразования, форматирование, написание частей данных на несколько файлов wroksheets, и все уже написано в Python. Я планирую сделать это расширением SPSS. Сохранение, казалось, было легкой частью, но оказалось довольно трудоемким. –
Я использовал/использовал 'xlsxwriter', который имеет метод' set_column', поэтому избегает необходимости цикла для каждой строки/случая для заполнения файла Excel. Он также имеет различные другие функции для форматирования ect. –