Цикл For на основе количества меток в целевой переменной

#python #dataframe #for-loop #variables #data-visualization

#python #фрейм данных #цикл for #переменные #визуализация данных

Вопрос:

Я новичок в python и учусь работать над for циклом для создания автоматической гистограммы. Приведенный ниже код разработан для целевой переменной с 2 классами (0 ,1) . Я пытаюсь создать for цикл, который может создавать x0, x1, x2 и так далее в зависимости от количества классов в целевой переменной.

Например: если моя целевая переменная имеет 4 класса, то меня нужно x0, x1, x2, x3 создать с Target == 0,1,2,3 помощью for x s, а также аналогичным образом мне нужны trace1 , trace2 , trace3 , и trace4 для 4 классов.

Может кто-нибудь, пожалуйста, помочь мне с этим?

 from scipy.stats import skew
from scipy.stats import kurtosis

def plotBarCat(df,feature,target):
    x0 = df[df[target]==0][feature]
    x1 = df[df[target]==1][feature]

    trace1 = go.Histogram(
        x=x0,
        opacity=0.75
    )
    trace2 = go.Histogram(
        x=x1,
        opacity=0.75
    )

    data = [trace1, trace2]
    layout = go.Layout(barmode='overlay',
                      title=feature,
                       yaxis=dict(title='Count'
        ))
    fig = go.Figure(data=data, layout=layout)

    py.iplot(fig, filename='overlaid histogram')

    def DescribeFloatSkewKurt(df,target):
  

Ответ №1:

Это должно сработать для вас:

 def plotBarCat(df,feature,target):
    # use set to get unique classes
    classes = set(df[target])
    # create list for traces
    data = []
    
    for c in classes:
        z = df[df[target] == c][feature]
        trace = go.Histogram(x=z, opacity=0.75)
        data.append(trace)

    layout = go.Layout(barmode='overlay',
                      title=feature,
                       yaxis=dict(title='Count'
        ))
    fig = go.Figure(data=data, layout=layout)

    py.iplot(fig, filename='overlaid histogram')