Wenn ich den "tips" -Datensatz als Jointplot grafiere, würde ich die Top 10-Ausreißer (oder top-n-Ausreißer) anhand ihrer Indizes aus dem "tips" -Datafeld beschriften. Ich berechne den Rest (die Entfernung eines Punktes von der Durchschnittslinie), um die Ausreißer zu finden. Bitte ignorieren Sie die Vorzüge dieser Ausreißer-Erkennungsmethode. Ich möchte nur den Graphen gemäß der Spezifikation annotieren.Ausreißer auf dem Seaborn-Jointplot kommentieren
import seaborn as sns
sns.set(style="darkgrid", color_codes=True)
tips = sns.load_dataset("tips")
model = pd.ols(y=tips.tip, x=tips.total_bill)
tips['resid'] = model.resid
#indices to annotate
tips.sort_values(by=['resid'], ascending=[False]).head(5)
tips.sort_values(by=['resid'], ascending=[False]).tail(5)
%matplotlib inline
g = sns.jointplot("total_bill", "tip", data=tips, kind="reg",
xlim=(0, 60), ylim=(0, 12), color="r", size=7)
Wie mit Anmerkungen versehen ich die 10 Ausreißer (größte 5 und kleinste 5 Residuen) auf dem Graphen von jedem Indexwert des Punktes (größte Residuen) um dies zu haben:
Das Sortieren und Abschneiden der Iterablen 'head' und' tail' war eine gute Möglichkeit, die Anzahl der Iterationen zu reduzieren, vor allem für große Datenframes wie meine eigentliche Datenmenge. Danke –
Das ist wirklich cool. Gute Arbeit! – Charlie
Ich aktualisierte die Antwort mit einer Lösung für neuere Pandas. – ImportanceOfBeingErnest