Código fuente para تقدیر.کوائف

import os
from datetime import date

import pandas as pd


[documentos]class کوائف(object): """ آب وہوا کے کوائف۔ """ def __init__(خود, اعداد, سے=None, تک=None, متغیرات=None): """ خالی (یا نہ خالی) کوائف بانانا۔ Parameters ---------- اعداد: pd.DataFrame | None پہلہ سے ھونے طالے اعدادو شمار۔ سے: date پہلی تاریخ۔ تک: date آخری تاریخ۔ """ if اعداد is None and (سے is None or تک is None): raise ValueError if متغیرات is None: متغیرات = اعداد.columns سے = سے or اعداد.index.min() تک = تک or اعداد.index.max() خود.اعداد = pd.DataFrame(columns=متغیرات, index=pd.period_range(سے, تک), dtype=float) if اعداد is not None: خود.اعداد = خود.اعداد.combine_first(اعداد) خود.اعداد = خود.اعداد[سے:تک] خود.سے = سے خود.تک = تک خود._بھرنا() def _بھرنا(خود): """ لاپتہ کہائف کو بھرنے کی کوشیش کریگا۔ """ # لاپتہ اوست درجہ حرارت بھرنا، جہاں بھر جا سکتا ھیے۔ if 'درجہ_حرارت_اوسط' in خود.اعداد: خود.اعداد['درجہ_حرارت_اوسط'].fillna( (خود.اعداد['درجہ_حرارت_کم'] + خود.اعداد['درجہ_حرارت_زیادہ']) / 2, inplace=True )
[documentos] def روزانہ(خود): """ روزانہ کی ظرز پر کوائف ۔ Returns ------- pd.DataFrame """ return خود.اعداد
[documentos] def ماہانہ(خود): """ ماہانہ کی ظرز پر کوائف ۔ Returns ------- pd.DataFrame کوائف کی ماہانہ اوسط۔ """ return خود.اعداد.resample('M').mean()
[documentos] def سالانہ(خود): """ سالانہ کی ظرز پر کوائف ۔ Returns ------- pd.DataFrame کوائف کی سالانہ اوسط۔ """ return خود.اعداد.resample('Y').mean()
[documentos] def لاپتہ(خود, سارے=False): """ نا معلوم دنوں کے کوائف واپس دیگا۔ Parameters ---------- سارے: bool صرف ان دنوں کے کوائف دے گا جینکے سارےعمودی ستون کے کوائف نا معلوم ہیں۔ Returns ------- pd.PeriodIndex """ if سارے: return خود.اعداد[خود.اعداد.isnull().all(axis=1)].index return خود.اعداد[خود.اعداد.isnull().any(axis=1)].index
[documentos] def لکھنا(خود, راستہ, نام='تقدیر', وضع='.csv'): """ کوائف کو مسل میں رکھنا۔ Parameters ---------- راستہ: str مسل کا راستہ۔ نام: str مسل کا نام۔ وضع: str مسل کا وضع۔ `.csv` یا `.json` ہو سکتا ہے۔ """ if not os.path.isdir(راستہ): os.mkdir(راستہ) پورا_نام = os.path.join(راستہ, نام + وضع) if وضع == '.csv': خود.اعداد.to_csv(پورا_نام, encoding='utf8') elif وضع == '.json': خود.اعداد.to_json(پورا_نام, force_ascii=False) else: raise ValueError(وضع)
def متاغیرات(خود): return list(خود.اعداد.columns) def __add__(خود, دوسرہ): return کوائف(خود.اعداد.combine_first(دوسرہ.اعداد), خود.سے, خود.تک)