Tutorial showing how to read EBAS NASA Ames files

This low-level tutorial shows how to read an EBAS NASA Ames file using the class EbasNasaAmesFile of pyaerocom and how to access the import data and metadata.

NOTE: variable names and names of metadata attributes below use the EBAS conventions and not the AeroCom naming conventions, since the purpose of the EbasNasaAmesFile reading routine is to solely import the content of the original data files (provided by EBAS) into a python interface. If you intend to use EBAS data for AeroCom purposes (e.g. model intercomparison), please use the ReadEbas routine (or the ReadUngridded factory class) which is doing the mapping to AeroCom naming conventions.

Please see here for information related to the EBAS NASA Ames file format.

[1]:
import pyaerocom as pya
import glob
Initating pyaerocom configuration
Checking database access...
Checking access to: /lustre/storeA
Access to lustre database: True
Init data paths for lustre
Expired time: 0.022 s
[2]:
ebasdir = pya.const.EBASMC_DATA_DIR
ebasdir
[2]:
'/lustre/storeA/project/aerocom/aerocom1/AEROCOM_OBSDATA/EBASMultiColumn/data/data/'
[3]:
files = glob.glob('{}DE0043G*2010*nephelometer*lev2.nas'.format(ebasdir))
[4]:
print('No. of files found: {}'.format(len(files)))
No. of files found: 2
[5]:
files[0]
[5]:
'/lustre/storeA/project/aerocom/aerocom1/AEROCOM_OBSDATA/EBASMultiColumn/data/data/DE0043G.20100201000000.20150304123917.nephelometer..pm10.11mo.1h.DE09L_TSI_Neph_3563.DE09L_scatt_NEPH.lev2.nas'

Read the first file that was found:

[6]:
mc = pya.io.EbasNasaAmesFile(file=files[0],
                             only_head=False,          #set True if you only want to import header
                             replace_invalid_nan=True, #replace invalid values with NaNs
                             convert_timestamps=True,  #compute datetime64 timestamps from numerical values
                             decode_flags=True)        #decode all flags (e.g. 0.111222333 -> 111 222 333)

print(mc)
Pyaerocom EbasNasaAmesFile
--------------------------

num_head_lines: 91
num_head_fmt: 1001
data_originator: Flentje, Harald
sponsor_organisation: DE09L, Deutscher Wetterdienst, DWD, Met. Obs., Hohenspeissenberg, , 82283, Hohenspeissenberg, Germany
submitter: Flentje, Harald
project_association: ACTRIS EMEP GAW-WDCA
vol_num: 1
vol_totnum: 1
ref_date: 2010-01-01T00:00:00
revision_date: 2015-03-04T00:00:00
freq: 0.041667
descr_time_unit: days from file reference point
num_cols_dependent: 23
mul_factors (list, 23 items): [1.00, 1.00, ..., 1.00, 1.00]
vals_invalid (list, 23 items): [1000, 9999.0, ..., 9999.999999, 10.00]
descr_first_col: end_time of measurement, days from the file reference point

   Column variable definitions
   -------------------------------
   EbasColDef: name=starttime, unit=days, is_var=False, is_flag=False, flag_col=23,
   EbasColDef: name=endtime, unit=days, is_var=False, is_flag=False, flag_col=23,
   EbasColDef: name=pressure, unit=hPa, is_var=True, is_flag=False, flag_col=23, location=instrument internal, statistics=arithmetic mean, matrix=instrument, detection_limit=, detection_limit_expl.=, measurement_uncertainty=, measurement_uncertainty_expl.=,
   EbasColDef: name=relative_humidity, unit=%, is_var=True, is_flag=False, flag_col=23, location=instrument internal, statistics=arithmetic mean, matrix=instrument, detection_limit=, detection_limit_expl.=, measurement_uncertainty=, measurement_uncertainty_expl.=,
   EbasColDef: name=temperature, unit=K, is_var=True, is_flag=False, flag_col=23, location=instrument internal, statistics=arithmetic mean, matrix=instrument, detection_limit=, detection_limit_expl.=, measurement_uncertainty=, measurement_uncertainty_expl.=,
   EbasColDef: name=aerosol_light_backscattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=450.0 nm, statistics=arithmetic mean,
   EbasColDef: name=aerosol_light_backscattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=450.0 nm, statistics=percentile:15.87,
   EbasColDef: name=aerosol_light_backscattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=450.0 nm, statistics=percentile:84.13,
   EbasColDef: name=aerosol_light_backscattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=550.0 nm, statistics=arithmetic mean,
   EbasColDef: name=aerosol_light_backscattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=550.0 nm, statistics=percentile:15.87,
   EbasColDef: name=aerosol_light_backscattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=550.0 nm, statistics=percentile:84.13,
   EbasColDef: name=aerosol_light_backscattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=700.0 nm, statistics=arithmetic mean,
   EbasColDef: name=aerosol_light_backscattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=700.0 nm, statistics=percentile:15.87,
   EbasColDef: name=aerosol_light_backscattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=700.0 nm, statistics=percentile:84.13,
   EbasColDef: name=aerosol_light_scattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=450.0 nm, statistics=arithmetic mean,
   EbasColDef: name=aerosol_light_scattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=450.0 nm, statistics=percentile:15.87,
   EbasColDef: name=aerosol_light_scattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=450.0 nm, statistics=percentile:84.13,
   EbasColDef: name=aerosol_light_scattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=550.0 nm, statistics=arithmetic mean,
   EbasColDef: name=aerosol_light_scattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=550.0 nm, statistics=percentile:15.87,
   EbasColDef: name=aerosol_light_scattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=550.0 nm, statistics=percentile:84.13,
   EbasColDef: name=aerosol_light_scattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=700.0 nm, statistics=arithmetic mean,
   EbasColDef: name=aerosol_light_scattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=700.0 nm, statistics=percentile:15.87,
   EbasColDef: name=aerosol_light_scattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=700.0 nm, statistics=percentile:84.13,
   EbasColDef: name=numflag, unit=no unit, is_var=False, is_flag=True, flag_col=None,

   EBAS meta data
   ------------------
decode_flags: True
data_definition: EBAS_1.1
set_type_code: TU
timezone: UTC
file_name: DE0043G.20100201000000.20150304123917.nephelometer..pm10.11mo.1h.DE09L_TSI_Neph_3563.DE09L_scatt_NEPH.lev2.nas
file_creation: 20190701194839
startdate: 20100201000000
revision_date: 20150304123917
version: 1
version_description: initial revision
data_level: 2
period_code: 11mo
resolution_code: 1h
sample_duration: 1h
orig._time_res.: 10mn
station_code: DE0043G
platform_code: DE0043S
station_name: Hohenpeissenberg
station_wdca-id: GAWADE__HPB
station_gaw-id: HPB
station_gaw-name: Hohenpeissenberg
station_land_use: Grassland
station_setting: Mountain
station_gaw_type: G
station_wmo_region: 6
station_latitude: 47.8014984131
station_longitude: 11.0096197128
station_altitude: 985.0 m
measurement_height: 15.0 m
regime: IMG
component:
unit: 1/Mm
matrix: pm10
laboratory_code: DE09L
instrument_type: nephelometer
instrument_name: TSI_Neph_3563
instrument_manufacturer: TSI
instrument_model: 3563
method_ref: DE09L_scatt_NEPH
standard_method: cal-gas=CO2+AIR_truncation-correction=Anderson1998
inlet_type: Impactor--direct
inlet_description: PM10 at ambient humidity inlet, Digitel, flow 170 l/min
humidity/temperature_control: Nafion dryer
volume_std._temperature: 273.15 K
volume_std._pressure: 1013.25 hPa
detection_limit: 0.3 1/Mm
detection_limit_expl.: Determined only by instrument counting statistics, no detection limit flag used
measurement_uncertainty: 0.3 1/Mm
measurement_uncertainty_expl.: Determined only by instrument counting statistics, no detection limit flag used
zero/negative_values: Zero values may appear due to statistical variations at very low concentrations
originator: Flentje, Harald, Harald.Flentje@dwd.de, , , , , , , ,
submitter: Flentje, Harald, Harald.Flentje@dwd.de, , , , , , , ,
acknowledgement: Request acknowledgement details from data originator
comment: Angstrom-based Anderson & Ogren 1998 corr used for truncation correction

   Data
   --------
[[3.10000000e+01 3.10416660e+01            nan ...            nan
             nan 9.99000000e-01]
 [3.10416670e+01 3.10833330e+01            nan ...            nan
             nan 9.99000000e-01]
 [3.10833330e+01 3.11249990e+01            nan ...            nan
             nan 9.99000000e-01]
 ...
 [3.64875000e+02 3.64916666e+02 9.04000000e+02 ... 1.35433110e+01
  1.62446480e+01 1.00000000e-01]
 [3.64916667e+02 3.64958333e+02 9.04000000e+02 ... 1.13367710e+01
  1.42932090e+01 1.00000000e-01]
 [3.64958333e+02 3.64999999e+02 9.03000000e+02 ... 1.13635590e+01
  1.40839410e+01 1.00000000e-01]]
Colnum: 24
Timestamps: 8016

The NASA Ames files are strucured in the same way as they are represented by in the instance of the EbasNasaAmesFile class.

  • A header with global metadata

  • One row that specifies multiplication factors for each data column (mul_factors)

  • One row that specifies NaN-equivalent values for each data column (vals_invalid)

  • A number of rows specifying metainformation for each data column in the file (i.e. 12 rows, if the data has 12 columns)

  • Dataset specific metadata

  • Data block: rows are timestamps, columns are different columns specified in the header (cf. 2 points above)

    • Represented by 2D numpy array (data attribute) where first index is row and second index is column

For details related to the file format see here.

[7]:
print(mc.shape)
(8016, 24)

Data array

The data is imported as a 2D numpy array which is accessible via the data attribute:

[8]:
mc.data
[8]:
array([[3.10000000e+01, 3.10416660e+01,            nan, ...,
                   nan,            nan, 9.99000000e-01],
       [3.10416670e+01, 3.10833330e+01,            nan, ...,
                   nan,            nan, 9.99000000e-01],
       [3.10833330e+01, 3.11249990e+01,            nan, ...,
                   nan,            nan, 9.99000000e-01],
       ...,
       [3.64875000e+02, 3.64916666e+02, 9.04000000e+02, ...,
        1.35433110e+01, 1.62446480e+01, 1.00000000e-01],
       [3.64916667e+02, 3.64958333e+02, 9.04000000e+02, ...,
        1.13367710e+01, 1.42932090e+01, 1.00000000e-01],
       [3.64958333e+02, 3.64999999e+02, 9.03000000e+02, ...,
        1.13635590e+01, 1.40839410e+01, 1.00000000e-01]])

The first index corresponds to the individual measurements (rows in file) and the second index corresponds to the individual columns that are stored in the file.

Column information

Detailed information about each column can be accessed via the var_defs attribute, the first two columns are always the start and stop timestamps:

[9]:
mc.var_defs[0]
[9]:
EbasColDef: name=starttime, unit=days, is_var=False, is_flag=False, flag_col=23,
[10]:
mc.var_defs[1]
[10]:
EbasColDef: name=endtime, unit=days, is_var=False, is_flag=False, flag_col=23,

After the start / stop columns follow the individual data columns.

[11]:
mc.var_defs[2]
[11]:
EbasColDef: name=pressure, unit=hPa, is_var=True, is_flag=False, flag_col=23, location=instrument internal, statistics=arithmetic mean, matrix=instrument, detection_limit=, detection_limit_expl.=, measurement_uncertainty=, measurement_uncertainty_expl.=,
[12]:
mc.var_defs[3]
[12]:
EbasColDef: name=relative_humidity, unit=%, is_var=True, is_flag=False, flag_col=23, location=instrument internal, statistics=arithmetic mean, matrix=instrument, detection_limit=, detection_limit_expl.=, measurement_uncertainty=, measurement_uncertainty_expl.=,
[13]:
mc.var_defs[4]
[13]:
EbasColDef: name=temperature, unit=K, is_var=True, is_flag=False, flag_col=23, location=instrument internal, statistics=arithmetic mean, matrix=instrument, detection_limit=, detection_limit_expl.=, measurement_uncertainty=, measurement_uncertainty_expl.=,
[14]:
mc.var_defs[5]
[14]:
EbasColDef: name=aerosol_light_backscattering_coefficient, unit=1/Mm, is_var=True, is_flag=False, flag_col=23, wavelength=450.0 nm, statistics=arithmetic mean,

In addition to the data columns in the files (such as time stamps, or measured values of a certain variable) there is at least one flag column in the data array and each data column has assigned one flag column (cf. output above where the index of the flag column for each data column is provided flag_col=23, i.e. column 23 is the flag column assigned to each of the 5 data columns that were displayed exemplary above:

[15]:
mc.var_defs[23]
[15]:
EbasColDef: name=numflag, unit=no unit, is_var=False, is_flag=True, flag_col=None,

The is_var attribute specifies, whether this column contains actual variable data or if it is a flag column. A NASA Ames file can have one or more flag columns that can be used to identify valid or invalid measurments. Each flag in a flag column comprises a floating point number that has encoded up to 3 3-digit numerical flags which are specified here:

https://github.com/metno/pyaerocom/blob/master/pyaerocom/data/ebas_flags.csv

More info about the flags follows below. You can see, that the column 4 printed above has assigned column 12 (index 11) as flag column.

If you want to see an overview of all available columns in the file you may use the following command:

[16]:
mc.print_col_info()
Column 0
Pyaerocom EbasColDef
--------------------
name: starttime
unit: days
is_var: False
is_flag: False
flag_col: 23

Column 1
Pyaerocom EbasColDef
--------------------
name: endtime
unit: days
is_var: False
is_flag: False
flag_col: 23

Column 2
Pyaerocom EbasColDef
--------------------
name: pressure
unit: hPa
is_var: True
is_flag: False
flag_col: 23
location: instrument internal
statistics: arithmetic mean
matrix: instrument
detection_limit:
detection_limit_expl.:
measurement_uncertainty:
measurement_uncertainty_expl.:

Column 3
Pyaerocom EbasColDef
--------------------
name: relative_humidity
unit: %
is_var: True
is_flag: False
flag_col: 23
location: instrument internal
statistics: arithmetic mean
matrix: instrument
detection_limit:
detection_limit_expl.:
measurement_uncertainty:
measurement_uncertainty_expl.:

Column 4
Pyaerocom EbasColDef
--------------------
name: temperature
unit: K
is_var: True
is_flag: False
flag_col: 23
location: instrument internal
statistics: arithmetic mean
matrix: instrument
detection_limit:
detection_limit_expl.:
measurement_uncertainty:
measurement_uncertainty_expl.:

Column 5
Pyaerocom EbasColDef
--------------------
name: aerosol_light_backscattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 450.0 nm
statistics: arithmetic mean

Column 6
Pyaerocom EbasColDef
--------------------
name: aerosol_light_backscattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 450.0 nm
statistics: percentile:15.87

Column 7
Pyaerocom EbasColDef
--------------------
name: aerosol_light_backscattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 450.0 nm
statistics: percentile:84.13

Column 8
Pyaerocom EbasColDef
--------------------
name: aerosol_light_backscattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 550.0 nm
statistics: arithmetic mean

Column 9
Pyaerocom EbasColDef
--------------------
name: aerosol_light_backscattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 550.0 nm
statistics: percentile:15.87

Column 10
Pyaerocom EbasColDef
--------------------
name: aerosol_light_backscattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 550.0 nm
statistics: percentile:84.13

Column 11
Pyaerocom EbasColDef
--------------------
name: aerosol_light_backscattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 700.0 nm
statistics: arithmetic mean

Column 12
Pyaerocom EbasColDef
--------------------
name: aerosol_light_backscattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 700.0 nm
statistics: percentile:15.87

Column 13
Pyaerocom EbasColDef
--------------------
name: aerosol_light_backscattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 700.0 nm
statistics: percentile:84.13

Column 14
Pyaerocom EbasColDef
--------------------
name: aerosol_light_scattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 450.0 nm
statistics: arithmetic mean

Column 15
Pyaerocom EbasColDef
--------------------
name: aerosol_light_scattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 450.0 nm
statistics: percentile:15.87

Column 16
Pyaerocom EbasColDef
--------------------
name: aerosol_light_scattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 450.0 nm
statistics: percentile:84.13

Column 17
Pyaerocom EbasColDef
--------------------
name: aerosol_light_scattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 550.0 nm
statistics: arithmetic mean

Column 18
Pyaerocom EbasColDef
--------------------
name: aerosol_light_scattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 550.0 nm
statistics: percentile:15.87

Column 19
Pyaerocom EbasColDef
--------------------
name: aerosol_light_scattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 550.0 nm
statistics: percentile:84.13

Column 20
Pyaerocom EbasColDef
--------------------
name: aerosol_light_scattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 700.0 nm
statistics: arithmetic mean

Column 21
Pyaerocom EbasColDef
--------------------
name: aerosol_light_scattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 700.0 nm
statistics: percentile:15.87

Column 22
Pyaerocom EbasColDef
--------------------
name: aerosol_light_scattering_coefficient
unit: 1/Mm
is_var: True
is_flag: False
flag_col: 23
wavelength: 700.0 nm
statistics: percentile:84.13

Column 23
Pyaerocom EbasColDef
--------------------
name: numflag
unit: no unit
is_var: False
is_flag: True
flag_col: None

You can see that all variable columns were assigned the same flag column, since there is only one flag column at the end (index 23). This would be different if there were multiple flag columns (e.g. one for each variable).

Access flag information

You can access the flags for each column using the flag_col_info attribute of the file (and the key of the respective flag column, that you want to access, here->11).

[17]:
flagcol = mc.flag_col_info[23]
flagcol
[17]:
<pyaerocom.io.ebas_nasa_ames.EbasFlagCol at 0x7f11494eb2b0>

The raw flags can be accessed via:

[18]:
flagcol.raw_data
[18]:
array([0.999, 0.999, 0.999, ..., 0.1  , 0.1  , 0.1  ])

And the processed flags are in stored in a (Nx3) numpy array where N is the total number of timestamps.

[19]:
flagcol.decoded
[19]:
array([[999,   0,   0],
       [999,   0,   0],
       [999,   0,   0],
       ...,
       [100,   0,   0],
       [100,   0,   0],
       [100,   0,   0]])

For instance, access the flags of the 5 timestamp:

[20]:
flagcol.decoded[4]
[20]:
array([999,   0,   0])

This timestamp contains 1 (of the possible up to 3) flags: 999.

Validity of a combination of the flags can be directly accessed via:

[21]:
flagcol.valid[4]
[21]:
False

This flag (999) evaluates to an invalid measurement. Looking into the flag definition file we see that these two flags have the following meaning:

  • 999,’Missing measurement, unspecified reason’,’M’

where the last string specifies if this flag is valid (V) or invalid (I) or missing (M).

Convert object to pandas Dataframe

[22]:
df = mc.to_dataframe()
df.head()
[22]:
starttime_days endtime_days pressure_hPa_instrument_arithmetic mean relative_humidity_%_instrument_arithmetic mean temperature_K_instrument_arithmetic mean aerosol_light_backscattering_coefficient_1/Mm_450.0nm_arithmetic mean aerosol_light_backscattering_coefficient_1/Mm_450.0nm_percentile:15.87 aerosol_light_backscattering_coefficient_1/Mm_450.0nm_percentile:84.13 aerosol_light_backscattering_coefficient_1/Mm_550.0nm_arithmetic mean aerosol_light_backscattering_coefficient_1/Mm_550.0nm_percentile:15.87 ... aerosol_light_scattering_coefficient_1/Mm_450.0nm_arithmetic mean aerosol_light_scattering_coefficient_1/Mm_450.0nm_percentile:15.87 aerosol_light_scattering_coefficient_1/Mm_450.0nm_percentile:84.13 aerosol_light_scattering_coefficient_1/Mm_550.0nm_arithmetic mean aerosol_light_scattering_coefficient_1/Mm_550.0nm_percentile:15.87 aerosol_light_scattering_coefficient_1/Mm_550.0nm_percentile:84.13 aerosol_light_scattering_coefficient_1/Mm_700.0nm_arithmetic mean aerosol_light_scattering_coefficient_1/Mm_700.0nm_percentile:15.87 aerosol_light_scattering_coefficient_1/Mm_700.0nm_percentile:84.13 numflag_no unit
2010-02-01 00:29:59 31.000000 31.041666 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.999
2010-02-01 01:29:59 31.041667 31.083333 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.999
2010-02-01 02:29:59 31.083333 31.124999 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.999
2010-02-01 03:29:59 31.125000 31.166666 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.999
2010-02-01 04:29:59 31.166667 31.208333 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.999

5 rows × 24 columns

You may also apply selection constraints when converting to a DataFrame

[23]:
scattering = mc.to_dataframe('aerosol_light_scattering_coefficient', statistics='arithmetic mean')
scattering
[23]:
aerosol_light_scattering_coefficient_1/Mm_450.0nm_arithmetic mean aerosol_light_scattering_coefficient_1/Mm_550.0nm_arithmetic mean aerosol_light_scattering_coefficient_1/Mm_700.0nm_arithmetic mean
2010-02-01 00:29:59 NaN NaN NaN
2010-02-01 01:29:59 NaN NaN NaN
2010-02-01 02:29:59 NaN NaN NaN
2010-02-01 03:29:59 NaN NaN NaN
2010-02-01 04:29:59 NaN NaN NaN
... ... ... ...
2010-12-31 19:29:59 29.312950 19.707840 13.09690
2010-12-31 20:29:59 28.166000 19.270330 11.51522
2010-12-31 21:29:59 36.854919 25.116589 14.89398
2010-12-31 22:29:59 30.724499 21.249210 12.81499
2010-12-31 23:29:59 28.431919 20.387381 12.72375

8016 rows × 3 columns

[24]:
scattering.plot(figsize=(16,8))
[24]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f11494752e8>
../../_images/pyaerocom-tutorials_obsolete_add02_read_ebas_nasa_ames_40_1.png