async load() {
    let response;
    try {
      response = await fetch(LOCAL_JENA_WEATHER_CSV_PATH);
    } catch (err) {}

    if (response != null &&
        (response.statusCode === 200 || response.statusCode === 304)) {
      console.log('Loading data from local path');
    } else {
      response = await fetch(REMOTE_JENA_WEATHER_CSV_PATH);
      console.log(
          `Loading data from remote path: ${REMOTE_JENA_WEATHER_CSV_PATH}`);
    }
    const csvData = await response.text();

    // Parse CSV file.
    const csvLines = csvData.split('\n');

    // Parse header.
    const columnNames = csvLines[0].split(',');
    for (let i = 0; i < columnNames.length; ++i) {
      // Discard the quotes around the column name.
      columnNames[i] = columnNames[i].slice(1, columnNames[i].length - 1);
    }

    this.dateTimeCol = columnNames.indexOf('Date Time');
    tf.util.assert(this.dateTimeCol === 0, `Unexpected date-time column index`);

    this.dataColumnNames = columnNames.slice(1);
    this.tempCol = this.dataColumnNames.indexOf('T (degC)');
    tf.util.assert(this.tempCol >= 1, `Unexpected T (degC) column index`);

    this.dateTime = [];
    this.data = [];  // Unnormalized data.
    // Day of the year data, normalized between 0 and 1.
    this.normalizedDayOfYear = [];
    // Time of the day, normalized between 0 and 1.
    this.normalizedTimeOfDay = [];
    for (let i = 1; i < csvLines.length; ++i) {
      const line = csvLines[i].trim();
      if (line.length === 0) {
        continue;
      }
      const items = line.split(',');
      const parsed = this.parseDateTime_(items[0]);
      const newDateTime = parsed.date;
      if (this.dateTime.length > 0 &&
          newDateTime.getTime() <=
              this.dateTime[this.dateTime.length - 1].getTime()) {
      }

      this.dateTime.push(newDateTime);
      this.data.push(items.slice(1).map(x => +x));
      this.normalizedDayOfYear.push(parsed.normalizedDayOfYear);
      this.normalizedTimeOfDay.push(parsed.normalizedTimeOfDay);
    }
    this.numRows = this.data.length;
    this.numColumns = this.data[0].length;
    this.numColumnsExcludingTarget = this.data[0].length - 1;
    console.log(
        `this.numColumnsExcludingTarget = ${this.numColumnsExcludingTarget}`);

    await this.calculateMeansAndStddevs_();
  }
Load and preprocess data.

This method first tries to load the data from `LOCAL_JENA_WEATHER_CSV_PATH`
(a relative path) and, if that fails, will try to load it from a remote
URL (`JENA_WEATHER_CSV_PATH`).