7.16. HTML Power Plant

7.16.1. Code

import pandas as pd

pd.set_option('display.width', 200)
pd.set_option('display.max_columns', 15)
pd.set_option('display.max_rows', 100)
pd.set_option('display.min_rows', 100)
pd.set_option('display.max_seq_items', 100)


DATA = 'https://pl.wikipedia.org/wiki/Lista_reaktor%C3%B3w_j%C4%85drowych'

MONTHS_PLEN = {
    'stycznia': 'January',
    'lutego': 'February',
    'marca': 'March',
    'kwietnia': 'April',
    'maja': 'May',
    'czerwca': 'June',
    'lipca': 'July',
    'sierpnia': 'August',
    'września': 'September',
    'października': 'October',
    'listopada': 'November',
    'grudnia': 'December',
}

COLUMNS = [
    'nazwa',
    'rozpoczecie_budowy',
    'wlaczenie_do_sieci',
    'roznica_lata',
    'moc_netto',
]


result = (pd
    .read_html(DATA)[1]
    .query('Status == "W eksploatacji"')
    .rename(columns={'Elektrownia / Nazwa bloku': 'nazwa'})
    .assign(
        rozpoczecie_budowy=lambda df: df['Rozpoczęcie budowy'].replace(MONTHS_PLEN, regex=True).map(pd.to_datetime),
        wlaczenie_do_sieci=lambda df: df['Włącz. do sieci'].replace(MONTHS_PLEN, regex=True).map(pd.to_datetime),
        roznica_dni=lambda df: df['wlaczenie_do_sieci'] - df['rozpoczecie_budowy'],
        roznica_lata=lambda df: df['roznica_dni'] / pd.Timedelta(days=365.25),
        year=lambda df: df['rozpoczecie_budowy'].dt.year,
        moc_netto=lambda df: df['Moc elektryczna (netto / brutto)'].str.split('/', expand=True)[0],
        moc_brutto=lambda df: df['Moc elektryczna (netto / brutto)'].str.split('/', expand=True)[1],
    )
    .replace({
        'moc_netto': {' MWe': ''},
        'moc_brutto': {' MWe': ''}
    }, regex=True)
    .round({'roznica_lata': 1})
    .astype({
        'moc_netto': 'int64',
        'moc_brutto': 'int64',
    }, errors='ignore')
    .convert_dtypes()
    .loc[:, COLUMNS]
)




# Polska Elektrownia Jądrowa
# 3 750 MWe