запуск функции, содержащей «value_counts» сразу для нескольких переменных в кадре данных - PullRequest
0 голосов
/ 21 апреля 2019

Я хочу вызвать функцию для всех переменных в кадре данных.Моя функция содержит атрибут « value_counts » и возвращает ошибку «Объект DataFrame не имеет атрибута value_counts».какой подход должен быть правильным?

Мой фрейм данных выглядит следующим образом:

def absolute_and_relative_freq(variable, flag):
    global  ax, ax1 
    # Dataframe of absolute and relative frequency for Var & Event
    absolute_frequency = variable.value_counts()
    relative_frequency = (round(variable.value_counts()/len(tppf)*100, 2))
    ct = pd.crosstab(variable,flag)
    event_rate = round((ct[1]/absolute_frequency)*100,2)
    # Was multiplied by 100 and rounded to 2 decimal points for percentage.
    df = pd.DataFrame({'Absolute Frequency':absolute_frequency, 'Relative Frequency(%)':relative_frequency,'event_count':ct[1], 'event' : event_rate})
    df.sort_values('Absolute Frequency',axis = 0, ascending = False,inplace = True )
    print('Absolute & Relative Frequency of',variable.name,':')
    display(df)
    fig_size = (12,8)
    font_size = 12
    title_size = 18   
    fig, ax1 = plt.subplots(figsize=(15, 10))
    ax2 = ax1.twinx()
    df['Relative Frequency(%)'].plot(title = ' %s' %variable.name,figsize = fig_size,kind='bar', color='b', ax=ax1,label = 'pct_total')
    df['event'].plot(kind='line',color='r', marker='s', ax=ax2,label = 'pct_event')
    ax1.legend(loc =0)
    ax2.legend(loc =2)
    ax1.set_ylabel('Relative Frequency(%)',fontsize =font_size)
    #ax2.set_ylabel('Event Rate(%)',fontsize =font_size)
    #ax1.yaxis.tick_left()
    #ax2.yaxis.tick_left()
    #risky = 
    #plt.legend()
    plt.show()

[Я должен получить такую ​​таблицу для каждой переменной и графиков.] [2]

Я попытался запустить цикл for:

list1 = ['POL_STATUS', 'INSURANCE_OBJ', 'SECTOR', 'PLAN_ID']
for l in list1 :
    absolute_and_relative_freq(l, tppf.UR_FLAG_NEW)

1 Ответ

0 голосов
/ 23 апреля 2019

value_counts () можно использовать только в серии

def absolute_and_relative_freq(df,variable, flag):
     absolute_frequency = df[variable].value_counts()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...