Za pridobitev korelacije med dvema stolpcema uporabite .corr
Imam naslednji pandas dataframe Top15
:
tukaj vpišite opis slike
Ustvarim stolpec, ki ocenjuje število citirljivih dokumentov na osebo:
Top15['PopEst'] = Top15['Energy Supply'] / Top15['Energy Supply per Capita']
Top15['Citable docs per Capita'] = Top15['Citable documents'] / Top15['PopEst']
Zanima me povezanost med številom citirljivih dokumentov na prebivalca in oskrbo z energijo na prebivalca. Zato uporabim metodo .corr()
(Pearsonova korelacija):
data = Top15[['Citable docs per Capita','Energy Supply per Capita']]
correlation = data.corr(method='pearson')
101
3
Brez dejanskih podatkov je težko odgovoriti na vprašanje, vendar domnevam, da iščete nekaj takega:
To izračuna korelacijo med vašima stolpcema
'Citable docs per Capita'
in'Energy Supply per Capita'
.Na primer:
Potem
daje
1
, kot je bilo pričakovano.Če spremenite vrednost, npr.
se v ukazu
vrne
kar je po pričakovanjih še vedno blizu 1.
Če uporabite
.corr
neposredno na svoj podatkovni okvir, bo vrnil vse parne korelacije med vašimi stolpci; zato na diagonali matrike opazite1
(vsak stolpec je popolnoma koreliran sam s seboj).bo zato vrnil
Na grafikonu, ki ga prikazujete, je predstavljen le zgornji levi vogal korelacijske matrike (predvidevam).
Lahko se zgodi, da se v vaši rešitvi pojavi
NaN
s - za primer si oglejte ta prispevek.Če želite filtrirati vnose nad/pod določenim pragom, lahko preverite to vprašanje. Če želite izrisati toplotno karto korelacijskih koeficientov, lahko preverite ta odgovor, če pa nato naletite na težavo s prekrivanjem oznak osi, preverite naslednji prispevek.
Naletel sem na isto težavo. Izkazalo se je, da je
Citable Documents per Person
spremenljivka, ki jo python privzeto preskoči. Vsi drugi stolpci mojega podatkovnega okvira so bili v numeričnih formatih, zato sem to rešil s pretvorbo stolpca vnp.float64
.Zapomni si, da je to natanko tisti stolpec, ki si ga izračunal sam
Če želite korelacije med vsemi pari stolpcev, lahko naredite nekaj takega: