2017-06-12 3 views
0

Ich habe einen Datensatz von jedem Spieler in der NBA und ihre Statistiken seit 1950. Die Spalten im Datensatz bestehen aus dem Jahr, dem Jahr, Spielernamen und seinem Team für dieses Jahr, Jahre in der NBA und 20 Spalten verschiedener Statistiken für jeden Spieler in jedem Jahr seiner Karriere. Eine der Spalten ist "PTS", das ist die Gesamtzahl der Punkte, die der Spieler in diesem Jahr erzielt hat. Ich möchte ein Streudiagramm in Python erstellen, das die Jahre 1950 bis 2017 auf der X-Achse und die Gesamtpunkte in diesem Jahr auf der Y-Achse zeigt. Ich glaube, dass der effizienteste Weg, um die Gesamtpunktzahl für jede Jahreszeit zurückzukehren:Python Scatter Plots für aggregierte Spalten in einem Pandas Datenrahmen

import numpy as np 
    import pandas as pd 
    import matplotlib.pyplot as plt 
    import seaborn as sns 
    seasons = pd.read_csv('C:/windows/temp/Seasons_Stats.csv') 
    tp_yr = seasons.groupby('Year').agg({'PTS': ['sum']}) 

Aber Erstellen des Streudiagramm mit:

tp_yr.plot.scatter(x= 'Year', y = 'PTS', s = 'None', c='red') 

kehrt:

KeyError: 'Year'

und eine leere Grafik Ich möchte die Gesamtpunkte in einem Jahr für alle Jahre von 1950 bis 2017 in einem roten Streudiagramm darstellen.

+0

„Ich habe Probleme“ ist keine ausreichende Beschreibung des Problems. Seien Sie konkret: Was sind die Spalten im Datenrahmen? Was sollte die endgültige Handlung zeigen (was ist die Xaxis, was ist die Yaxis, was sollen die Punkte repräsentieren?), Was hast du versucht, eine solche Handlung zu erstellen? Was ist das Problem? Inwiefern entspricht es nicht Ihren Erwartungen oder erhalten Sie einen Fehler? Wie Sie sehen können, ist die Liste der offenen Fragen länger als Ihre Frage selbst. Bitte bearbeite es, um es beantwortbar zu machen. – ImportanceOfBeingErnest

+0

Danke, ich habe den Beitrag für mehr Klarheit bearbeitet –

+0

Konvertieren der Spalte "Jahr" würde den Fehler beheben, den Sie geschrieben haben. (Siehe: https://stackoverflow.com/questions/35432918/scatter-plot-with-string-x-and-y-coordinates) Um die anderen Fragen zu beantworten, müssen Sie ein wenig mehr von Ihrem Code zeigen. – mimre

Antwort

1

Sie erhalten einen Schlüsselfehler, da im aggregierten Datenrahmen keine Spalte mit dem Namen "Jahr" vorhanden ist, da das Jahr als Index verwendet wird.

Um den Index als Spalte des Datenrahmens zurück zu erhalten, verwenden Sie .reset_index().

So etwas sollte funktionieren:

ptsbyyear = df.groupby("Year").agg({'PTS': ['sum']}).reset_index() 
ptsbyyear.plot(kind="scatter", x="Year", y="PTS") 
+0

Vielen Dank. Ich bemerkte, dass das Jahr einen Spaltennamen haben wollte, und erkannte, dass das das Problem war, wusste aber nicht, wie man das Jahr als a abruft. Danke noch einmal. –

+0

Ich habe deine Antwort akzeptiert, oder? –

Verwandte Themen