コード例 #1
0
                    df['station'] = station

                    # Set index
                    df = df.set_index(['station', 'time'])

                    # Round decimals
                    df = df.round(1)

                    # Append data to full DataFrame
                    if df_station is None:
                        df_station = df
                    else:
                        df_station = df_station.join(df)

            except BaseException:

                pass

        # Append data to full DataFrame
        if df_full is None:
            df_full = df_station
        else:
            df_full = df_full.append(df_station)

    except BaseException:

        pass

# Write DataFrame into Meteostat database
task.write(df_full, hourly_national)
コード例 #2
0
                'wspd':
                obs.wind_speed.value('KMH') if obs.wind_speed is not None
                and obs.wind_speed.value('KMH') > 0 else None,
                'pres':
                obs.press.value('HPA') if obs.press is not None else None,
                'coco':
                get_condicode(obs.weather) if obs.weather is not None else None
            })

    except BaseException:

        pass

# List -> DataFrame
df = pd.DataFrame.from_records(data)

# Calculate humidity data
df['rhum'] = df.apply(lambda row: temp_dwpt_to_rhum(row), axis=1)

# Drop dew point column
df = df.drop('dwpt', axis=1)

# Set index
df = df.set_index(['station', 'time'])

# Round decimals
df = df.round(1)

# Write DataFrame into Meteostat database
task.write(df, hourly_metar)
コード例 #3
0
                    'rhum': record['data']['instant']['details']['relative_humidity'] if 'relative_humidity' in record['data']['instant']['details'] else None,
                    'prcp': record['data']['next_1_hours']['details']['precipitation_amount'] if 'next_1_hours' in record['data'] and 'precipitation_amount' in record['data']['next_1_hours']['details'] else None,
                    'wspd': record['data']['instant']['details']['wind_speed'] * 3.6 if 'wind_speed' in record['data']['instant']['details'] else None,
                    'wpgt': record['data']['instant']['details']['wind_speed_of_gust'] * 3.6 if 'wind_speed_of_gust' in record['data']['instant']['details'] else None,
                    'wdir': int(round(record['data']['instant']['details']['wind_from_direction'])) if 'wind_from_direction' in record['data']['instant']['details'] else None,
                    'pres': record['data']['instant']['details']['air_pressure_at_sea_level'] if 'air_pressure_at_sea_level' in record['data']['instant']['details'] else None
                }

            # Create DataFrame
            df = pd.DataFrame(map(map_data, data['properties']['timeseries']))

            # Set index
            df['station'] = station[0]
            df = df.set_index(['station', 'time'])

            # Shift prcp column by 1 (as it refers to the next hour)
            df['prcp'] = df['prcp'].shift(1)

            # Append data to full DataFrame
            if df_full is None:
                df_full = df
            else:
                df_full = df_full.append(df)

        except error.HTTPError:

            pass

    # Write DataFrame into Meteostat database
    task.write(df_full, hourly_model)
コード例 #4
0
    'WG km/h': 'wspd',
    'WSG km/h': 'wpgt',
    'N l/m²': 'prcp',
    'LDred hPa': 'pres',
    'SO %': 'tsun'
}

# Read CSV data
df = pd.read_csv(
    'http://www.zamg.ac.at/ogd/',
    ';',
    parse_dates=parse_dates,
    usecols=usecols,
    decimal=',')

# Rename columns
df = df.rename(columns=names)

# Set index
df = df.set_index(['station', 'time'])

# Convert time zone to UTC
df = df.tz_localize('Europe/Vienna', level='time')
df = df.tz_convert(None, level='time')

# Convert sunshine from percent to minutes
df['tsun'] = round(60 * (df['tsun'] / 100))

# Write DataFrame into Meteostat database
task.write(df, hourly_synop)
コード例 #5
0
                         decimal=',',
                         parse_dates=parse_dates)

        # Rename columns
        df = df.rename(columns=names)

        # Snow cm -> mm
        df['snow'] = df['snow'].multiply(10)

        # Change coco
        df['coco'] = df['coco'].apply(get_condicode)

        # Add station column
        df['station'] = station['id']

        # Set index
        df = df.set_index(['station', 'time'])

        # Append data to full DataFrame
        if df_full is None:
            df_full = df
        else:
            df_full = df_full.append(df)

    except BaseException:

        pass

# Write DataFrame into Meteostat database
task.write(df_full, hourly_synop)
コード例 #6
0
                df['dwpt'] = df['dwpt'].div(10)
                df['pres'] = df['pres'].div(10)
                df['wspd'] = df['wspd'].div(10).apply(ms_to_kmh)
                df['prcp'] = df['prcp'].div(10)

                # Calculate humidity data
                df['rhum'] = df.apply(lambda row: temp_dwpt_to_rhum(row),
                                      axis=1)

                # Drop dew point column
                df = df.drop('dwpt', axis=1)

                # Add station column
                df['station'] = station['id']

                # Set index
                df = df.set_index(['station', 'time'])

                # Round decimals
                df = df.round(1)

                # Write data into Meteostat database
                task.write(df, hourly_global)

        except BaseException:

            pass

# Quit FTP connection
ftp.quit()
コード例 #7
0
        # Adapt columns
        df['tavg'] = df['tavg'].div(10)
        df['tmin'] = df['tmin'].div(10)
        df['tmax'] = df['tmax'].div(10)
        df['prcp'] = df['prcp'].div(10)
        df['wspd'] = df['wspd'].div(10).apply(ms_to_kmh)
        df['wpgt'] = df['wpgt'].div(10).apply(ms_to_kmh)

        # Add station column
        df['station'] = station['id']

        # Set index
        df = df.set_index(['station', 'time'])

        # Append data to full DataFrame
        if df_full is None:
            df_full = df
        else:
            df_full = df_full.append(df)

    except BaseException:

        pass

# Write DataFrame into Meteostat database
task.write(df_full, daily_global)

# Quit FTP connection
ftp.quit()
コード例 #8
0
        df = df.rename(columns=NAMES)

        # Convert PRES to MSL
        df['pres'] = df.apply(lambda row: pres_to_msl(row, altitude), axis=1)
        df['wpgt'] = df['wpgt'].apply(ms_to_kmh)
        df['wspd'] = df['wspd'].apply(ms_to_kmh)
        df['tsun'] = df['tsun'] * 60
        df['snow'] = df['snow'] * 10

        # Add weather station ID
        df['station'] = station

        # Set index
        df = df.set_index(['station', 'time'])

        # Round decimals
        df = df.round(1)

        # Append data to full DataFrame
        if df_full is None:
            df_full = df
        else:
            df_full = df_full.append(df)

    except BaseException:

        pass

# Write DataFrame into Meteostat database
task.write(df_full, daily_national)