Buon Natale. Sono ancora molto nuovo per Python e Pandas quindi l'aiuto è apprezzato.
Sto cercando di leggere in un file netCDF, cosa che posso fare e quindi importarlo in un Dataframe di Pandas. Il file netcDF è 2D, quindi voglio solo "scaricarlo". Ho provato il metodo DataFrame ma non riconosce l'oggetto. Presumibilmente ho bisogno di convertire l'oggetto netCDF in una matrice numpy 2D? Ancora grazie per le idee sul modo migliore per farlo. I migliori auguri JasonImporta il file netCDF in Pandas dataframe
risposta
È possibile utilizzare una libreria come PyNIO per leggere il file in p.e. matrici insipide e dar loro da mangiare ai panda.
PyNIO consente di leggere diversi formati di file, inclusi i classici netCDF3 e netCDF4.
netcdf4-python può anche leggere questi formati netCDF ed è compatibile py3.3
Se il file NetCDF (o OPeNDAP
set di dati) segue le convenzioni CF metadati si può approfittare di loro utilizzando la NetCDF4-Python package
, che li rende l'accesso a Pandas davvero facile. (Sto usando l'Enthought Python Distribution che include sia Pandas che NetCDF4-Python).
Nell'esempio seguente, il file NetCDF viene servito tramite OPeNDAP e la libreria NetCDF4-Python consente di aprire e utilizzare un set di dati OPeNDAP remoto come se fosse un file NetCDF locale, che è piuttosto fluido. Se volete vedere gli attributi del file NetCDF4, puntare il browser a questo link http://geoport-dev.whoi.edu/thredds/dodsC/HUDSON_SVALLEY/5951adc-a1h.nc.html
Si dovrebbe essere in grado di eseguire questo senza modifiche:
from matplotlib import pyplot as plt
import pandas as pd
import netCDF4
url='http://geoport-dev.whoi.edu/thredds/dodsC/HUDSON_SVALLEY/5951adc-a1h.nc'
vname = 'Tx_1211'
station = 0
nc = netCDF4.Dataset(url)
h = nc.variables[vname]
times = nc.variables['time']
jd = netCDF4.num2date(times[:],times.units)
hs = pd.Series(h[:,station],index=jd)
fig = plt.figure(figsize=(12,4))
ax = fig.add_subplot(111)
hs.plot(ax=ax,title='%s at %s' % (h.long_name,nc.id))
ax.set_ylabel(h.units)
Il risultato può essere vista qui nel notebook ipython : http://nbviewer.ipython.org/4615153/
La libreria xarray gestisce i dati netCDF arbitrari-dimensionali e conserva i metadati. Xarray fornisce un semplice metodo di apertura dei file netCDF, e convertirli in panda dataframes:
import xarray as xr
ds = xr.open_dataset('/path/to/netcdf')
df = ds.to_dataframe()
Ciò creerà una dataframe con un multi-indice con tutte le dimensioni in esso. Sfortunatamente, Pandas non supporta i metadati arbitrari, quindi andrà perso nella conversione, ma puoi mantenere lo ds
in giro e usare i metadati da quello.
- 1. Lettura file Json come errore Pandas Dataframe
- 2. Pandas Dataframe suddiviso in sessioni
- 3. Pandas che scrive il dataframe nel file CSV
- 4. Py Pandas .format (dataframe)
- 5. Pandas HDFStore scarica il dataframe dalla memoria
- 6. Unmelt Pandas dataframe
- 7. Pandas Dataframe a RDD
- 8. pandas DataFrame diagonale
- 9. Ordinamento naturale Pandas DataFrame
- 10. Transforming Pandas Dataframe
- 11. Concatenazione colonna Pandas DataFrame
- 12. Pandas dataframe gerarchica
- 13. Pandas dataframe cartesiana
- 14. Convertire Pandas dataframe stringa csv
- 15. Pandas Dataframe per excel foglio
- 16. concatenate pandas dataframe in un loop di file
- 17. Slice Pandas DataFrame per riga
- 18. Come caricare un file tsv in un DataFrame di Pandas?
- 19. normalizzazione quantile su pandas dataframe
- 20. pandas DataFrame concat/update ("upsert")?
- 21. Conversione del dataframe di Pandas in errore Spark Dataframe
- 22. heatmap seaborn using pandas dataframe
- 23. Plot pandas dataframe contenente NaN
- 24. Combinare Pandas dataframe DateTime Colonne
- 25. Pandas DataFrame concat vs append
- 26. Pandas: Creazione colonna aggregati in dataframe
- 27. Sostituisci data con NaT in Pandas dataframe
- 28. Pretty Printing a pandas dataframe
- 29. Girare Pandas dataframe di stringhe in istogramma
- 30. Come spostare una colonna in Pandas DataFrame
xray è ora xarray: http://xarray.pydata.org/en/stable/ –
Grazie @DaveX, aggiornato. – naught101