Si può leggere ODF (Open Document Format) di documenti in Python utilizzando i seguenti moduli:
Utilizzando ezodf, un semplice ODS-to -DataFrame convertitore potrebbe assomigliare a questo:
import pandas as pd
import ezodf
doc = ezodf.opendoc('some_odf_spreadsheet.ods')
print("Spreadsheet contains %d sheet(s)." % len(doc.sheets))
for sheet in doc.sheets:
print("-"*40)
print(" Sheet name : '%s'" % sheet.name)
print("Size of Sheet : (rows=%d, cols=%d)" % (sheet.nrows(), sheet.ncols()))
# convert the first sheet to a pandas.DataFrame
sheet = doc.sheets[0]
df_dict = {}
for i, row in enumerate(sheet.rows()):
# row is a list of cells
# assume the header is on the first row
if i == 0:
# columns as lists in a dictionary
df_dict = {cell.value:[] for cell in row}
# create index for the column headers
col_index = {j:cell.value for j, cell in enumerate(row)}
continue
for j, cell in enumerate(row):
# use header instead of column index
df_dict[col_index[j]].append(cell.value)
# and convert to a DataFrame
df = pd.DataFrame(df_dict)
Il foglio di calcolo ODF (file * .ods) è stato richiesto sul tracker di emissione pandas
: https://github.com/pydata/pandas/issues/2311, ma non è ancora implementato.
ezodf
è stato utilizzato nello PR9070 incompleto per implementare il supporto ODF nei panda. Quella PR è ora chiusa (leggi il PR per una discussione tecnica), ma è ancora disponibile come funzionalità sperimentale nella forcella thispandas
.
Grazie. Sarebbe bello se ci fosse qualcosa di più diretto, ma immagino che questa sia una possibilità. – Lamps1829
Non c'è niente di più diretto di un file che contiene solo i dati grezzi. Tali file devono essere in un determinato formato di file. Esistono formati binari per questo (come NetCDF o HDF5) e formati ascii, come CSV. Sfortunatamente, CSV non è un vero standard. Tuttavia, CSV è piuttosto semplice da affrontare nella maggior parte delle situazioni. –