<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def compute_bgband (evtpath, srcreg, bkgreg, ebins, env=None):
 """Compute background information for a source in one or more energy bands. evtpath Path to a CIAO events file srcreg String specifying the source region to consider; use 'region(path.reg)' if you have the region saved in a file. bkgreg String specifying the background region to consider; same format as srcreg ebins Iterable of 2-tuples giving low and high bounds of the energy bins to consider, measured in eV. env An optional CiaoEnvironment instance; default settings are used if unspecified. Returns a DataFrame containing at least the following columns: elo The low bound of this energy bin, in eV. ehi The high bound of this energy bin, in eV. ewidth The width of the bin in eV; simply `abs(ehi - elo)`. nsrc The number of events within the specified source region and energy range. nbkg The number of events within the specified background region and energy range. nbkg_scaled The number of background events scaled to the source area; not an integer. nsrc_subbed The estimated number of non-background events in the source region; simply `nsrc - nbkg_scaled`. log_prob_bkg The logarithm of the probability that all counts in the source region are due to background events. src_sigma The confidence of source detection in sigma inferred from log_prob_bkg. The probability of backgrounditude is computed as: b^s * exp (-b) / s! where `b` is `nbkg_scaled` and `s` is `nsrc`. The confidence of source detection is computed as: sqrt(2) * erfcinv (prob_bkg) where `erfcinv` is the inverse complementary error function. """

    import numpy as np
    import pandas as pd
    from scipy.special import erfcinv, gammaln

    if env is None:
        from . import CiaoEnvironment
        env = CiaoEnvironment ()

    srcarea = get_region_area (env, evtpath, srcreg)
    bkgarea = get_region_area (env, evtpath, bkgreg)

    srccounts = [count_events (env, evtpath, '[sky=%s][energy=%d:%d]' % (srcreg, elo, ehi))
                 for elo, ehi in ebins]
    bkgcounts = [count_events (env, evtpath, '[sky=%s][energy=%d:%d]' % (bkgreg, elo, ehi))
                 for elo, ehi in ebins]

    df = pd.DataFrame ({
        'elo': [t[0] for t in ebins],
        'ehi': [t[1] for t in ebins],
        'nsrc': srccounts,
        'nbkg': bkgcounts
    })

    df['ewidth'] = np.abs (df['ehi'] - df['elo'])
    df['nbkg_scaled'] = df['nbkg'] * srcarea / bkgarea
    df['log_prob_bkg'] = df['nsrc'] * np.log (df['nbkg_scaled']) - df['nbkg_scaled'] - gammaln (df['nsrc'] + 1)
    df['src_sigma'] = np.sqrt (2) * erfcinv (np.exp (df['log_prob_bkg']))
    df['nsrc_subbed'] = df['nsrc'] - df['nbkg_scaled']
    return df