Python, Wie zu finden, Durchschnitt von Spalten mit dataframes-Methode anwenden

Dies ist eine Frage, auf Udacity Daten Wissenschaft Nanodegree und ich kann ' T es herausfinden. Die Anweisungen sind:

Verwenden Sie das dataframe ' s Methode anwenden, erstellen Sie eine neue Serie namens avg_medal_count zeigt, dass die Durchschnittliche Anzahl der gold -, Silber-und bronze-Medaillen verdient unter den Ländern, die verdient mindestens eine Medaille jeglicher Art in der 2014 Olympischen Spiele in Sotschi.

Den code, den ich derzeit habe ist:

import numpy
from pandas import DataFrame, Series

def avg_medal_count():

 countries = ['Russian Fed.', 'Norway', 'Canada', 'United States',
                 'Netherlands', 'Germany', 'Switzerland', 'Belarus',
                 'Austria', 'France', 'Poland', 'China', 'Korea', 
                 'Sweden', 'Czech Republic', 'Slovenia', 'Japan',
                 'Finland', 'Great Britain', 'Ukraine', 'Slovakia',
                 'Italy', 'Latvia', 'Australia', 'Croatia', 'Kazakhstan']

    gold = [13, 11, 10, 9, 8, 8, 6, 5, 4, 4, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
    silver = [11, 5, 10, 7, 7, 6, 3, 0, 8, 4, 1, 4, 3, 7, 4, 2, 4, 3, 1, 0, 0, 2, 2, 2, 1, 0]
    bronze = [9, 10, 5, 12, 9, 5, 2, 1, 5, 7, 1, 2, 2, 6, 2, 4, 3, 1, 2, 1, 0, 6, 2, 1, 0, 1]

    olympic_medal_counts = {'country_name':countries,
                            'gold': Series(gold),
                            'silver': Series(silver),
                            'bronze': Series(bronze)}    
    df = DataFrame(olympic_medal_counts)


# YOUR CODE HERE


    return avg_medal_count

Ich habe versucht ein paar verschiedene Dinge wie:

avg_medal_count = df.apply(numpy.mean), bekomme aber immer die Fehlermeldung besagt, dass es nicht konvertieren konnte die erste Spalte, die numerische, die Sinn macht, da die erste Spalte ist eine Liste von Ländern. Wie kann ich df.apply nur auf gold -, Silber-und bronze-Spalten? Ich habe versucht andere Variationen, aber nichts funktionierte. Ich bin mir ziemlich sicher, dass ich brauchen, um eine Kombination von df.apply und numpy.mean, denn das ist das, was ich gerade erfuhr. Irgendwelche Gedanken?

Dank!

  • Gut, was sind die Einschränkungen hier? Ich meine, man konnte nur tun df[['gold','silver','bronze']].apply(np.mean)) oder Sie können filter der Spalte Auswahl von dtype, die andere Sache ist, dass müssen Sie auch filter df, so dass mindestens eine Medaille von jeder Typ hat verdient, auch dies ist eine übung für die Leser, die Sie angehen sollte dies ein problem gleichzeitig
InformationsquelleAutor Tarik Hodzic | 2015-04-07
Schreibe einen Kommentar