Beispiel #1
0
    def monovariate_plot_sorted(self, dataset):
        g = self.monovariate_plot_session["g"]
        options_tipo_var = self.monovariate_plot_session["options_tipo_var"]
        options_categorical_list = self.monovariate_plot_session[
            "option_categorical_list"]
        dataset = dataset
        unique_values = dataset[g[0]].unique()

        data = table.dist_frequenza(dataset,
                                    g[0],
                                    save=False,
                                    tipo="categoriale",
                                    lista_ordinale=options_categorical_list)

        data_non_tot = data.drop("Totale")

        datatest = pd.DataFrame({
            "X": data_non_tot.index.values,
            "Frequency": data_non_tot["Frequenze"].values
        })
        datatest.dropna(inplace=True)
        datatest.set_index(datatest["X"], inplace=True)
        datatest.index = datatest.index.map(str)
        datatest = datatest.loc[options_categorical_list]

        equilibrium_values = tools.Sq_output(datatest["Frequency"])
        if options_tipo_var == "cardinale":
            characteristic_values = {
                "mean": datatest["Frequency"].mean(),
                "standard deviation": datatest["Frequency"].std(),
                "gini index": tools.gini(datatest["Frequency"].values)
            }

        if options_tipo_var == "categoriale":
            characteristic_values = {
                "mode":
                datatest[datatest["Frequency"] ==
                         datatest["Frequency"].max()]["X"].values[0],
                "total equilibrium":
                datatest["Frequency"].sum() /
                len(datatest["Frequency"].unique()),
                "Sq":
                equilibrium_values["Sq"],
                "Sq_norm":
                equilibrium_values["Sq_Norm"],
                "Eq":
                equilibrium_values["Eq"]
            }
        chart = altair_monovariate(data=datatest,
                                   options_tipo_var=options_tipo_var,
                                   lista_ordinale=options_categorical_list)

        return render_template(
            "monovariate/monovariate_plot.html",
            operation_form=g,
            chart_json=chart.to_json(),
            data=data.to_html(classes="table table-striped"),
            unique_values=unique_values,
            options_tipo_var=options_tipo_var,
            characteristic_values=characteristic_values)
Beispiel #2
0
    def recode_operation(self, request, obj_elab):
        g = request.form.getlist('recode_var')
        self.recode_session["recode_var"] = g
        obj_elab.recode_var = g

        dataset = obj_elab.dataset
        unique_values = dataset[g[0]].unique()

        data = table.dist_frequenza(dataset,
                                    g[0],
                                    save=False,
                                    tipo="categoriale")

        return render_template(
            "recode/recode_operation.html",
            operation_form=g,
            data=data.to_html(classes="table table-striped"),
            unique_values=unique_values,
        )
Beispiel #3
0
    def monovariate_plot(self, request, dataset):
        r = request
        g = r.form.getlist('monovariate')
        options_tipo_var = r.form["var_type"]
        #options_ordinal_list = r.form["ordinal_list"]
        options_drop = r.form["drop_missing"]

        self.monovariate_plot_session = {
            "g": g,
            "options_tipo_var": options_tipo_var,
            #'options_categorical_list': options_ordinal_list
        }

        if options_drop == "drop":
            dataset.dropna(subset=[g[0]], inplace=True)
        elif options_drop == "no_drop":
            pass

        unique_values = dataset[g[0]].unique()
        series = dataset[g[0]]

        data = table.dist_frequenza(dataset,
                                    g[0],
                                    save=False,
                                    tipo=options_tipo_var)

        if options_tipo_var == "cardinale":
            dataset_cardinale = dataset.round(2)
            data = table.dist_frequenza(dataset_cardinale,
                                        g[0],
                                        save=False,
                                        tipo=options_tipo_var)

        data_non_tot = data.drop("Totale")
        datatest = pd.DataFrame({
            "X": data_non_tot.index.values,
            "Frequency": data_non_tot["Frequenze"].values
        })

        if options_tipo_var == "likert":
            options_categorical_list = ["1", "2", "3", "4", "5"]
            data = table.dist_frequenza(dataset,
                                        g[0],
                                        save=False,
                                        tipo="ordinale",
                                        lista_ordinale=[1, 2, 3, 4, 5])

            data_non_tot = data.drop("Totale")

            dataset_dist_plot = pd.DataFrame({
                "X":
                data_non_tot.index.values,
                "Frequency":
                data_non_tot["Frequenze"].values
            })
            dataset_dist_plot.dropna(inplace=True)
            dataset_dist_plot.set_index(dataset_dist_plot["X"], inplace=True)
            dataset_dist_plot.index = dataset_dist_plot.index.map(str)
            dataset_dist_plot = dataset_dist_plot.loc[options_categorical_list]
            dataset_dist_plot.fillna(0, inplace=True)
            dataset_dist_plot.X = dataset_dist_plot.index
            print(dataset_dist_plot)

        try:
            gini = tools.gini(series)
        except:
            gini = np.nan

        equilibrium_values = tools.Sq_output(datatest["Frequency"])
        if options_tipo_var == "cardinale":
            characteristic_values = {
                "mean": series.mean(),
                "standard deviation": series.std(),
                "gini index": str(gini)
            }

        elif options_tipo_var == "categoriale":
            characteristic_values = {
                "mode":
                datatest[datatest["Frequency"] ==
                         datatest["Frequency"].max()]["X"].values[0],
                "total equilibrium":
                datatest["Frequency"].sum() /
                len(datatest["Frequency"].unique()),
                "Sq":
                equilibrium_values["Sq"],
                "Sq_norm":
                equilibrium_values["Sq_Norm"],
                "Eq":
                equilibrium_values["Eq"]
            }

        elif options_tipo_var == "likert":
            characteristic_values = {
                "mean":
                series.mean(),
                "standard deviation":
                series.std(),
                "gini index":
                str(gini),
                "mode":
                datatest[datatest["Frequency"] ==
                         datatest["Frequency"].max()]["X"].values[0],
                "total equilibrium":
                datatest["Frequency"].sum() /
                len(datatest["Frequency"].unique()),
                "Sq":
                equilibrium_values["Sq"],
                "Sq_norm":
                equilibrium_values["Sq_Norm"],
                "Eq":
                equilibrium_values["Eq"]
            }

        print(options_tipo_var)
        if options_tipo_var == "categoriale" or options_tipo_var == "ordinale":
            chart = altair_monovariate_bar(data=datatest,
                                           options_tipo_var=options_tipo_var,
                                           lista_ordinale=False)
            print(chart.to_json())
        elif options_tipo_var == "likert":
            chart = altair_monovariate_bar(
                data=dataset_dist_plot,
                options_tipo_var=options_tipo_var,
                lista_ordinale=options_categorical_list)

            print(chart.to_json())
        elif options_tipo_var == "cardinale":
            print(dataset[g[0]])
            dataset_hist = dataset.round(2)
            chart = altair_monovariate_hist(dataset_hist, g[0])
            print(chart.to_json())

        return render_template(
            "monovariate/monovariate_plot.html",
            operation_form=g,
            chart_json=chart.to_json(),
            data=data.to_html(classes="table table-striped"),
            unique_values=unique_values,
            options_tipo_var=options_tipo_var,
            characteristic_values=characteristic_values)