Ho questo esempio dataframe:Come tracciare determinate righe di un dataframe panda?
animal gender name first second third
0 dog m Ben 5 6 3
1 dog f Lilly 2 3 5
2 dog m Bob 3 2 1
3 cat f Puss 1 4 4
4 cat m Inboots 3 6 5
5 wolf f Lady NaN 0 3
6 wolf m Summer 2 2 1
7 wolf m Grey 4 2 3
8 wolf m Wind 2 3 5
9 lion f Elsa 5 1 4
10 lion m Simba 3 3 3
11 lion f Nala 4 4 2
Ora, ho il sospetto che potrebbero aver bisogno di indicizzazione gerarchico per questo, ma non ho ottenuto che lontano nel Panda ancora. Tuttavia, ho davvero bisogno di fare alcune cose (apparentemente troppo avanzate) con esso e non ho capito come farlo. Fondamentalmente, quello che mi piacerebbe avere alla fine è, in questo caso, una trama (probabilmente una trama a dispersione, anche se una linea servirebbe altrettanto bene in questo momento).
1) Mi piacerebbe avere una figura di 4 sottotrame - una sottotrama per ogni animale. Il titolo di ciascuna sottotrama dovrebbe essere l'animale.
2) In ciascuna delle sottotrame, vorrei tracciare i numeri (ad esempio il numero di cuccioli nati ogni anno), cioè i valori di "primo", "secondo" e "terzo" per una data riga e dargli un'etichetta, che mostrerebbe il 'nome' nella legenda. E per ogni sottotrama (ogni animale), vorrei tracciare separatamente il maschio e la femmina (es. Maschio in blu e femmina in rosso) e inoltre, trama anche la media per l'animale (cioè la media in ogni colonna per il dato animale) in nero.
3) una nota: tramando contro 1,2,3 per exaple - riferendosi al numero di colonna, Così, per esempio, per la prima sottotrama con il titolo 'cane' Vorrei tracciare qualcosa come plt.plot(np.array([1,2,3]),x,'b', np.array([1,2,3]),y,'r', np.array([1,2,3]), np.mean(x,y,axis=1),'k')
dove x sarebbe (nel primo caso) 5,6,3 e la legenda per questa trama blu mostrerebbe "Ben", y sarebbe 2,3,5 e la legenda per la trama rossa mostrerebbe "Lilly" e il nero la trama sarebbe 3,5, 4,5, 4 e nella legenda definirò che è "media" (per ciascuna delle sottotrame).
Spero di essere stato abbastanza chiaro. Capisco che senza vedere la figura risultante potrebbe essere difficile immaginarlo ma ... beh, se sapessi come farlo, non lo chiederei ...
Quindi, in conclusione, vorrei loop attraverso il dataframe su diversi livelli, avendo animali su sottotrame separati e confronto tra maschi e femmine e la media tra loro in ciascuna delle sottotrame.
Il mio dataframe reale è molto più grande, quindi, nel caso ideale, mi piacerebbe una soluzione che sia robusta ma di facile comprensione (per un principiante di programmazione).
Per avere un'idea di ciò una sottotrama dovrebbe essere simile, questo è il prodotto in Excel:
Utilizzare 'per i, gruppo in df.groupby ('animal'):' e traccia in un ciclo. Non una risposta perché sono un po 'frettoloso per il tempo. –
Penso che la mia domanda sia parzialmente soddisfatta qui: http://stackoverflow.com/questions/14300137/making-matplotlib-scatter-plots-from-dataframes-in-pythons-pandas?rq=1 ma ancora, non sono del tutto fiducioso con l'indicizzazione e il looping attraverso questi dati multidimensionali e specialmente tracciando righe, non colonne ... – durbachit
Grazie Chinmay! Quando hai tempo, potresti spiegarci di più? (Ad esempio, come gestisco i due argomenti per groupby - per cosa è "i"? E come indirizzare le righe dell'oggetto raggruppato.) – durbachit