anki-addons / src /presenter /tests_count_addons_number_presenter.py
Ya-Alex's picture
Add TestsCountAddonsNumberPresenter
c946de7
from datetime import date
import pandas as pd
from gradio import BarPlot
from pandas import DataFrame
from src.dataset_data import DatasetData
from src.df_utils import DfUtils
class TestsCountAddonsNumberPresenter:
def __init__(self, data: DatasetData):
self.__data = data
def present(self) -> BarPlot:
all_dfs: dict[date, DataFrame] = self.__data.get_parquet_dict()
github_dfs: dict[date, DataFrame] = {day: df[['id', 'github']] for day, df in all_dfs.items()}
tests_count_dfs: dict[date, DataFrame] = {day: DfUtils.extract_tests_count(df)
for day, df in github_dfs.items()}
have_tests_dfs: dict[date, DataFrame] = {day: df[df["tests_count"] > 0] for day, df in tests_count_dfs.items()}
parquet_file_row_count: dict[date, int] = {day: len(df) for day, df in have_tests_dfs.items()}
plot_df: DataFrame = pd.DataFrame.from_dict(parquet_file_row_count, orient="index").reset_index()
plot_df.columns = ["Date", "RowCount"]
plot_df["Date"] = plot_df["Date"].astype(str)
return BarPlot(plot_df, x="Date", y="RowCount", y_title="Addons number", y_lim=[0, None], y_axis_format="d")