Convert A .sav File To .csv File In Python
Solution 1:
For what it's worth, you can import SPSS files very easily into Python using pandas
:
import pandas as pd
df = pd.read_spss("input_file.sav")
And then you can export the data with the .to_csv()
method:
df.to_csv("output_file.csv", index=False)
If you only need to export certain columns, you can specify that too:
df[["column_a", "column_b"]].to_csv("output_file.csv", index=False)
Solution 2:
The column of latitude and longitude in the extracted files using your code looks interchanged. Further the latitude scale ranges from 0 to 180 (not +90 0 -90)) ...whether the 0 starts from the top. Pl. comment.
Solution 3:
I know that this solution uses R instead of python, but it is really simple and works well.
library(foreign)
write.table(read.spss("inFile.sav"), file="outFile.csv", quote = TRUE, sep = ",")
Solution 4:
I could solve my problem by changing the requisite output format and here is my code:
import scipy.io as spio
import numpy as np
import csv
on2file = 'ON2_2016_112m_220415.sav' # i/p file
outfile = 'ON2_2016_112m_220415.csv' # o/p file# Read i/p file
s = spio.readsav(on2file, python_dict=True, verbose=True)
# Creating Grid#d_lat = s["d_lat"]#d_lon = s["d_lon"]
lat = np.arange(-90,90,1.78218) # (101,)
lon = np.arange(-180,180,1.78218) # (202,)
ylat,xlon = np.meshgrid(lat,lon)
on2grid = np.asarray(s["on2_grid"])
on2gridsmooth = np.asarray(s["on2_grid_smooth"])
nrows = len(on2grid)
ncols = len(on2grid[0])
xlon_grid = xlon.reshape(nrows*ncols,1)
ylat_grid = ylat.reshape(nrows*ncols,1)
on2grid_new = on2grid.reshape(nrows*ncols,1)
on2gridsmooth_new = on2gridsmooth.reshape(nrows*ncols,1)
# Concatenation
allgriddata = np.concatenate((xlon_grid, ylat_grid, on2grid_new, on2gridsmooth_new),axis=1)
# Writing o/p file
f_handle = file(outfile,'a')
np.savetxt(f_handle,allgriddata,delimiter=",",fmt='%0.3f',header="longitude, latitude, on2_grid, on2_grid_smooth")
f_handle.close()
Solution 5:
I am working on it and, for the moment, this is my 'poor' solution:
First I import module savReaderWriter to convert .sav file into structured array Second I import module numpy to convert structured array into csv:
import savReaderWriter
import numpy as np
reader_np = savReaderWriter.SavReaderNp("infile.sav")
array = reader_np.to_structured_array("outfile.dat")
np.savetxt("outfile2.csv", array, delimiter=",")
reader_np.close()
The problem is that I lose name atributes during conversion. I will try to solve the problem.
Post a Comment for "Convert A .sav File To .csv File In Python"