Ejemplo n.º 1
0
def fiyat(baslangic_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"),
          bitis_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"), rename_tr=False, periyot="saatlik"):
    """
    İlgili tarih aralığı için saatlik GÖP, GİP, DGP fiyat bilgilerini vermektedir.

    Parametreler
    ------------
    baslangic_tarihi : %YYYY-%AA-%GG formatında başlangıç tarihi (Varsayılan: bugün)
    bitis_tarihi     : %YYYY-%AA-%GG formatında bitiş tarihi (Varsayılan: bugün)
    periyot          : metin formatında periyot(saatlik, gunluk, aylik, yillik) (Varsayılan: "gunluk")

    Geri Dönüş Değeri
    -----------------
    GÖP, GİP, DGP Fiyatları (MWh)
    """
    if __dogrulama.__baslangic_bitis_tarih__periyot_dogrulama(baslangic_tarihi, bitis_tarihi, periyot):
        if periyot.lower() == "saatlik":
            df_gop = __gop.ptf(baslangic_tarihi, bitis_tarihi)
            df_gip = __gip.aof(baslangic_tarihi, bitis_tarihi)
            df_dgp = __dgp.smf(baslangic_tarihi, bitis_tarihi)
            df_fiyat = __red(lambda left, right: __pd.merge(left, right, on=["Tarih", "Saat"], how="outer"),
                             [df_gop, df_gip, df_dgp])
            return df_fiyat
        elif periyot.lower() == "gunluk":
            df_gop = __gop.ptf(baslangic_tarihi, bitis_tarihi)
            df_gip = __gip.aof(baslangic_tarihi, bitis_tarihi)
            df_dgp = __dgp.smf(baslangic_tarihi, bitis_tarihi)
            df_fiyat = __red(lambda left, right: __pd.merge(left, right, on=["Tarih", "Saat"], how="outer"),
                             [df_gop, df_gip, df_dgp])
            return df_fiyat.groupby("Tarih").mean().reset_index().drop("Saat", axis=1)
        elif periyot.lower() == "aylik":
            baslangic_tarihi = __dt.datetime.strptime(baslangic_tarihi, '%Y-%m-%d').replace(day=1).strftime("%Y-%m-%d")
            bitis_tarihi = __dt.datetime.strptime(bitis_tarihi, '%Y-%m-%d')
            bitis_tarihi = __dt.date(bitis_tarihi.year, bitis_tarihi.month,
                                     __calendar.monthrange(bitis_tarihi.year, bitis_tarihi.month)[-1]).strftime(
                "%Y-%m-%d")
            df_gop = __gop.ptf(baslangic_tarihi, bitis_tarihi)
            df_gip = __gip.aof(baslangic_tarihi, bitis_tarihi)
            df_dgp = __dgp.smf(baslangic_tarihi, bitis_tarihi)
            df_fiyat = __red(lambda left, right: __pd.merge(left, right, on=["Tarih", "Saat"], how="outer"),
                             [df_gop, df_gip, df_dgp])
            df_fiyat["Yıl-Ay"] = df_fiyat["Tarih"].dt.to_period('M')
            return df_fiyat.groupby("Yıl-Ay").mean().reset_index().drop("Saat", axis=1)
        elif periyot.lower() == "yillik":
            baslangic_tarihi = __dt.datetime.strptime(baslangic_tarihi, '%Y-%m-%d').replace(day=1, month=1).strftime(
                "%Y-%m-%d")
            bitis_tarihi = __dt.datetime.strptime(bitis_tarihi, '%Y-%m-%d').replace(day=31, month=12).strftime(
                "%Y-%m-%d")
            df_gop = __gop.ptf(baslangic_tarihi, bitis_tarihi)
            df_gip = __gip.aof(baslangic_tarihi, bitis_tarihi)
            df_dgp = __dgp.smf(baslangic_tarihi, bitis_tarihi)
            df_fiyat = __red(lambda left, right: __pd.merge(left, right, on=["Tarih", "Saat"], how="outer"),
                             [df_gop, df_gip, df_dgp])
            df_fiyat["Yıl"] = df_fiyat["Tarih"].dt.to_period('Y')
            return df_fiyat.groupby("Yıl").mean().reset_index().drop("Saat", axis=1)
Ejemplo n.º 2
0
def tum_santraller_gerceklesen(baslangic_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"),
                               bitis_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"), rename_tr=False):
    """
    İlgili tarih aralığı için tüm lisanslı santrallerin gerçek zamanlı üretim bilgisini vermektedir.

    Parametreler
    ------------
    baslangic_tarihi : %YYYY-%AA-%GG formatında başlangıç tarihi (Varsayılan: bugün)
    bitis_tarihi     : %YYYY-%AA-%GG formatında bitiş tarihi (Varsayılan: bugün)

    Geri Dönüş Değeri
    -----------------
    Tüm lisanslı santrallerin gerçek zamanlı üretim Değerleri (Tarih, Saat, Santral Üretimleri)
    """
    if __dogrulama.__baslangic_bitis_tarih_dogrulama(baslangic_tarihi, bitis_tarihi):
        sant = __santraller.gercek_zamanli_uretim_yapan_santraller()
        list_sant = sant[["Id", "Kısa Adı"]].to_dict("records")
        list_sant_len = len(list_sant)
        list_sant = list(
            zip([baslangic_tarihi] * list_sant_len, [bitis_tarihi] * list_sant_len, list_sant))
        list_sant = list(map(list, list_sant))
        with __Pool(__mp.cpu_count()) as p:
            list_df_unit = p.starmap(__gerceklesen_santral, list_sant, chunksize=1)
        list_df_unit = list(filter(lambda x: len(x) > 0, list_df_unit))
        df_unit = __red(lambda left, right: __pd.merge(left, right, how="outer", on=["Tarih", "Saat"], sort=True),
                        list_df_unit)
        return df_unit
Ejemplo n.º 3
0
def tum_uevcb_eak(baslangic_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"),
                  bitis_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"), rename_tr=False):
    """
    İlgili tarih aralığı için Emre Amade Kapasite (EAK) girebilecek olan tüm organizasyonların uzlaştırmaya esas
    veriş-çekiş birimlerinin saatlik KGUP bilgilerini vermektedir.

    Parametreler
    ------------
    baslangic_tarihi : %YYYY-%AA-%GG formatında başlangıç tarihi (Varsayılan: bugün)
    bitis_tarihi     : %YYYY-%AA-%GG formatında bitiş tarihi (Varsayılan: bugün)

    Geri Dönüş Değeri
    -----------------
    KGÜP Girebilen Organizasyonların UEVCB KGUP Değerleri (Tarih, Saat, KGUP)
    """
    if __dogrulama.__baslangic_bitis_tarih_dogrulama(baslangic_tarihi, bitis_tarihi):
        org_uevcb = tum_organizasyonlar_veris_cekis_birimleri()
        list_org_uevcb = org_uevcb[["Org EIC Kodu", "UEVÇB EIC Kodu", "UEVÇB Adı"]].to_dict("records")
        list_org_uevcb_len = len(list_org_uevcb)
        list_date_org_uevcb_eic = list(
            zip([baslangic_tarihi] * list_org_uevcb_len, [bitis_tarihi] * list_org_uevcb_len, list_org_uevcb))
        list_date_org_uevcb_eic = list(map(list, list_date_org_uevcb_eic))
        with __Pool(__mp.cpu_count()) as p:
            list_df_unit = p.starmap(__eak_uevcb, list_date_org_uevcb_eic, chunksize=1)
        list_df_unit = list(filter(lambda x: len(x) > 0, list_df_unit))
        df_unit = __red(lambda left, right: __pd.merge(left, right, how="outer", on=["Tarih", "Saat"], sort=True),
                        list_df_unit)
        return df_unit
Ejemplo n.º 4
0
def tum_organizasyonlar_eak(baslangic_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"),
                            bitis_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"), rename_tr=False):
    """
    İlgili tarih aralığı için Emre Amade Kapasite (EAK) girebilecek olan tüm organizasyonların saatlik EAK bilgilerini
    vermektedir.

    Parametreler
    ------------
    baslangic_tarihi : %YYYY-%AA-%GG formatında başlangıç tarihi (Varsayılan: bugün)
    bitis_tarihi     : %YYYY-%AA-%GG formatında bitiş tarihi (Varsayılan: bugün)

    Geri Dönüş Değeri
    -----------------
    EAK Girebilen Organizasyonların EAK Değerleri (Tarih, Saat, EAK)
    """
    if __dogrulama.__baslangic_bitis_tarih_dogrulama(baslangic_tarihi, bitis_tarihi):
        org = organizasyonlar()
        list_org = org[["EIC Kodu", "Kısa Adı"]].to_dict("records")
        org_len = len(list_org)
        list_date_org_eic = list(zip([baslangic_tarihi] * org_len, [bitis_tarihi] * org_len, list_org))
        list_date_org_eic = list(map(list, list_date_org_eic))
        with __Pool(__mp.cpu_count()) as p:
            list_df_unit = p.starmap(__eak, list_date_org_eic, chunksize=1)
        list_df_unit = list(filter(lambda x: len(x) > 0, list_df_unit))
        df_unit = __red(lambda left, right: __pd.merge(left, right, how="outer", on=["Tarih", "Saat"], sort=True),
                        list_df_unit)
        return df_unit
Ejemplo n.º 5
0
def tum_dagitimlar_profil_gruplari(
        tarih=__dt.datetime.today().strftime("%Y-%m-%d")):
    """
    İlgili tarih aralığı için Kesinleşmiş Gün Öncesi Üretim Planı (KGÜP) girebilecek olan tüm organizasyonların saatlik
    KGUP bilgilerini vermektedir.

    Parametreler
    ------------
    baslangic_tarihi : %YYYY-%AA-%GG formatında başlangıç tarihi (Varsayılan: bugün)
    bitis_tarihi     : %YYYY-%AA-%GG formatında bitiş tarihi (Varsayılan: bugün)

    Geri Dönüş Değeri
    -----------------
    KGÜP Girebilen Organizasyonların KGUP Değerleri (Tarih, Saat, KGUP)
    """
    if __dogrulama.__tarih_dogrulama(tarih):
        dist = dagitim_bolgeleri()
        list_dist = list(dist["Id"])
        org_len = len(list_dist)
        list_date_dist = list(zip([tarih] * org_len, list_dist))
        list_date_dist = list(map(list, list_date_dist))
        with __Pool(__mp.cpu_count()) as p:
            list_df_unit = p.starmap(profil_abone_grubu,
                                     list_date_dist,
                                     chunksize=1)
        list_df_unit = list(filter(lambda x: len(x) > 0, list_df_unit))
        df_unit = __red(
            lambda left, right: __pd.merge(
                left, right, how="outer", on=["Id"], sort=True), list_df_unit)
        df_unit.columns = ["Id"] + list(dist["Dağıtım Şirket Adı"])
        return df_unit
Ejemplo n.º 6
0
def primer_sekonder_fiyat_miktar(
        baslangic_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"),
        bitis_tarihi=__dt.datetime.today().strftime("%Y-%m-%d")):
    """
    İlgili tarih aralığı için saatlik primer/sekonder frekans rezerv fiyat/miktar bilgilerini vermektedir.

    Parametreler
    ------------
    baslangic_tarihi : %YYYY-%AA-%GG formatında başlangıç tarihi (Varsayılan: bugün)
    bitis_tarihi     : %YYYY-%AA-%GG formatında bitiş tarihi (Varsayılan: bugün)

    Geri Dönüş Değeri
    -----------------
    PFK/SFK Fiyat/Yükümlülük
    """
    if __dogrulama.__baslangic_bitis_tarih_dogrulama(baslangic_tarihi,
                                                     bitis_tarihi):
        try:
            pfk_miktar = primer_frekans_rezerv_miktari(baslangic_tarihi,
                                                       bitis_tarihi)
            pfk_fiyat = primer_rezerv_fiyati(baslangic_tarihi, bitis_tarihi)
            sfk_miktar = sekonder_frekans_rezerv_miktari(
                baslangic_tarihi, bitis_tarihi)
            sfk_fiyat = sekonder_rezerv_fiyati(baslangic_tarihi, bitis_tarihi)
            df = __red(
                lambda left, right: __pd.merge(
                    left, right, how="outer", on=["Tarih", "Saat"], sort=True),
                [pfk_miktar, pfk_fiyat, sfk_miktar, sfk_fiyat])
        except (KeyError, TypeError):
            return __pd.DataFrame()
        else:
            return df
Ejemplo n.º 7
0
def tum_gorevli_tedarik_hacim(
        baslangic_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"),
        bitis_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"),
        rename_tr=False,
        hacim_tipi="NET"):
    """
    İlgili tarih aralığı için tüm görevli tedarik şirketleri için saatlik net hacim bilgilerini vermektedir.

    Parametreler
    ------------
    baslangic_tarihi : %YYYY-%AA-%GG formatında başlangıç tarihi (Varsayılan: bugün)
    bitis_tarihi     : %YYYY-%AA-%GG formatında bitiş tarihi (Varsayılan: bugün)
    hacim_tipi       : metin formatında hacim tipi ("NET", "ARZ", yada "TALEP") (varsayılan: "NET")

    Geri Dönüş Değeri
    -----------------
    Tüm Organizasyonların Saatlik GÖP Hacmi (Tarih, Saat, Hacim)
    """
    if __dogrulama.__baslangic_bitis_tarih_dogrulama(baslangic_tarihi,
                                                     bitis_tarihi):
        org = __organizasyonlar()
        org = org[(org["Adı"].str.contains("K1")) |
                  (org["Adı"].str.contains("K2")) |
                  (org["Adı"].str.contains("K3"))].reset_index(drop=True)
        list_org = org[["EIC Kodu", "Kısa Adı"]].to_dict("records")
        org_len = len(list_org)
        list_date_org_eic = list(
            zip([baslangic_tarihi] * org_len, [bitis_tarihi] * org_len,
                list_org))
        list_date_org_eic = list(map(list, list_date_org_eic))
        with __Pool(__mp.cpu_count()) as p:
            if hacim_tipi.lower() == "net":
                list_df_unit = p.starmap(__organizasyonel_net_hacim,
                                         list_date_org_eic,
                                         chunksize=1)
            elif hacim_tipi.lower() == "arz":
                list_df_unit = p.starmap(__organizasyonel_arz_hacim,
                                         list_date_org_eic,
                                         chunksize=1)
            elif hacim_tipi.lower() == "talep":
                list_df_unit = p.starmap(__organizasyonel_talep_hacim,
                                         list_date_org_eic,
                                         chunksize=1)
            else:
                __logging.error(
                    "Lütfen geçerli bir hacim tipi giriniz: Net, Arz, Talep",
                    exc_info=False)
        list_df_unit = list(filter(lambda x: len(x) > 0, list_df_unit))
        df_unit = __red(
            lambda left, right: __pd.merge(
                left, right, how="outer", on=["Tarih", "Saat"], sort=True),
            list_df_unit)
        return df_unit
Ejemplo n.º 8
0
def hacim(baslangic_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"),
          bitis_tarihi=__dt.datetime.today().strftime("%Y-%m-%d"), rename_tr=False, periyot="gunluk"):
    """
    İlgili tarih aralığı için GÖP, GİP, DGP, İA hacim bilgilerini vermektedir.

    Parametreler
    ------------
    baslangic_tarihi : %YYYY-%AA-%GG formatında başlangıç tarihi (Varsayılan: bugün)
    bitis_tarihi     : %YYYY-%AA-%GG formatında bitiş tarihi (Varsayılan: bugün)
    periyot          : metin formatında periyot(saatlik, gunluk, aylik, yillik) (Varsayılan: "gunluk")

    Geri Dönüş Değeri
    -----------------
    GÖP, GİP, DGP, İA Hacimleri (MWh)
    """
    if __dogrulama.__baslangic_bitis_tarih__periyot_dogrulama(baslangic_tarihi, bitis_tarihi, periyot):
        if periyot.lower() == "saatlik":
            df_ia = __ia.hacim(baslangic_tarihi, bitis_tarihi)[["Tarih", "Saat", "Arz Miktarı"]]
            df_ia.rename(index=str, columns={"Arz Miktarı": "İA"}, inplace=True)
            df_gop = __gop.hacim(baslangic_tarihi, bitis_tarihi)[["Tarih", "Saat", "Eşleşme Miktarı"]]
            df_gop.rename(index=str, columns={"Eşleşme Miktarı": "GÖP"}, inplace=True)
            df_gip = __gip.hacim(baslangic_tarihi, bitis_tarihi)[["Tarih", "Saat", "Eşleşme Miktarı"]]
            df_gip.rename(index=str, columns={"Eşleşme Miktarı": "GİP"}, inplace=True)
            df_dgp = __dgp.hacim(baslangic_tarihi, bitis_tarihi)
            df_dgp["Toplam"] = df_dgp["Teslim Edilen YAL"] - df_dgp["Teslim Edilen YAT"]
            df_dgp = df_dgp[["Tarih", "Saat", "Toplam"]]
            df_dgp.rename(index=str, columns={"Toplam": "DGP"}, inplace=True)
            df = __red(lambda left, right: __pd.merge(left, right, on=["Tarih", "Saat"]),
                       [df_ia, df_gop, df_gip, df_dgp])
            return df
        else:
            periods = {"gunluk": "DAILY", "aylik": "MONTHLY", "yillik": "YEAR"}
            try:
                particular_url = \
                    __first_part_url + "market-volume" + "?startDate=" + baslangic_tarihi + "&endDate=" + \
                    bitis_tarihi + "&period=" + periods[periyot.lower()]
                json = __make_requests(particular_url)
                df = __pd.DataFrame(json["body"]["marketVolumeList"])
                df["Tarih"] = __pd.to_datetime(df["date"].apply(lambda d: d[:10]))
                df.rename(index=str,
                          columns={"bilateralContractAmount": "İA Miktarı", "dayAheadMarketVolume": "GÖP Mİktarı",
                                   "intradayVolume": "GİP Mİktarı", "balancedPowerMarketVolume": "DGP Miktarı"},
                          inplace=True)
                df = df[["Tarih", "İA Miktarı", "GÖP Mİktarı", "GİP Mİktarı", "DGP Miktarı"]]
            except (KeyError, TypeError):
                return __pd.DataFrame()
            else:
                return df