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)
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
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
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
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
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
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
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