Pandas rullende korrelasjon

Pandas rullende korrelasjon

“Rullekorrelasjoner oppnås ved å beregne korrelasjonene mellom to tidsserier ved hjelp av et rullende vindu. Vi kan identifisere om to korrelerte tidsserier avviker fra hverandre over tid ved å bruke rullende korrelasjoner.”

Å finne den rullende korrelasjonen på en Pandas DataFrame kan gjøres ved hjelp av “DataFrame_Object.Rulling ().corr () ”-metode. I denne illustrasjonen vil vi lære å beregne den rullende korrelasjonen på en Pandas dataaframe med den grunnleggende teknikken.

Syntaks:

På to dataframmer:

DataFrame_Object1.Rulling (bredde).Corr (DataFrame_Object2)

(ELLER)

På to kolonner i en dataaframe:

DataFrame_Object ['Column1'].Rulling (bredde).Corr (DataFrame_Object ['Column2'])


Det viktige å huske mens du spesifiserer verdiene for kolonnene er at lengden på verdiene for alle kolonnene som er inneholdt i DataFrame må være lik. Hvis vi legger en ulik verdi på verdien, vil ikke programmet utføre.

Eksempel 1: Korrelate kolonne1 vs kolonne2

La oss opprette en dataaframe med 3 kolonner og 10 rader og korrelere mengden med kostnadskolonnen i 2 dager.

Importer pandaer
# Lag Pandas DataFrame for beregning av korrelasjon
# med 3 kolonner.
Analytics = Pandas.DataFrame ('produkt': [11,22,33,44,55,66,77,88,99,110]],
'Mengde': [200.455.800.900.900.122.400.700.80.500],
'Kostnad': [2400.4500.5090.600.8000.7800.1100.2233.500.1100])
# Korrelere mengde med kostnadskolonne i 2 dager.
Analytics ['Correlated'] = Analytics ['Quantity'].Rulling (2).Corr (Analytics ['Cost'])
Print (Analytics)


Produksjon:

Produktmengde kostnad korrelert
0 11 200 2400 nan
1 22 455 4500 1.0
2 33 800 5090 1.0
3 44 900 600 -1.0
4 55 900 8000 Nan
5 66 122 7800 1.0
6 77 400 1100 -1.0
7 88 700 2233 1.0
8 99 80 500 1.0
9 110 500 1100 1.0


Korrelasjonen i 2 dager, 200 til 400, er nan og så er plassert i kolonnen "korrelert".

Eksempel 2: Visualisering

La oss lage en dataaframe med 3 kolonner og 5 rader og korrelere "salget" vs "Product_likes".

Bruk Seaborn til å se korrelasjonen i en graf og få Pearson -korrelasjonskoeffisienten.

Importer pandaer
Importer sjøborn
fra scipy importstatistikk
# Lag Pandas DataFrame for beregning av korrelasjon
# med 3 kolonner.
Analytics = Pandas.DataFrame ('Produktnavn': ['TV', 'Steel', 'Plastic', 'Leather', 'Others'],
'Product_likes': [100,20,45,67,9],
'Salg': [2300.890.1400.1800.200])
Print (Analytics)
skrive ut()
# Se korrelasjonskoeffisienten
trykk (statistikk.Pearsonr (Analytics ['Sales'], Analytics ['Product_likes'])))
skrive ut()
# Se nå korrelasjonssalget vs Product_likes
Seaborn.lmplot (x = "salg", y = "produkt_likes", data = analyse)


Produksjon:

Produktnavn Produkt_likes salg
0 TV 100 2300
1 stål 20 890
2 plast 45 1400
3 skinn 67 1800
4 andre 9 200
(0.9704208315867275, 0.006079620327457793)



Nå kan du se sammenhengen mellom salg og produkt_likes.

La oss nå få den rullende korrelasjonen for disse to kolonnene i 3 dager.

Kode for eksempel 2:

# Korrelerer salget med Product_Likes -kolonnen i 5 dager.
Analytics ['Correlated'] = Analytics ['Salg'].Rulling (3).Corr (Analytics ['Product_likes'])
Print (Analytics)


Produksjon:

Produktnavn produkt_likes salg korrelert
0 TV 100 2300 nan
1 stål 20 890 nan
2 plast 45 1400 0.998496
3 skinn 67 1800 0.999461
4 andre 9 200 0.989855


Du kan se at disse to kolonnene er sterkt korrelert.

Eksempel 3: Ulike dataframmer

La oss lage 2 dataframmer med 1 kolonne hver og korrelere dem.

Importer pandaer
Importer sjøborn
fra scipy importstatistikk
Analytics1 = Pandas.DataFrame ('Salg': [2300,890,1400,1800,200,2000,340,56,78,0])
Analytics2 = Pandas.DataFrame ('Product_likes': [100,20,45,67,9,90,8,1,3,0])
# Se korrelasjonskoeffisienten for de to ovennevnte DataFrames
trykk (statistikk.Pearsonr (Analytics1 ['Sales'], Analytics2 ['Product_likes']))
# Korrelerer salget med Product_Likes DataFrame
Print (Analytics1 ['Salg'].Rulling (5).Corr (Analytics2 ['Product_likes']))


Produksjon:

(0.9806646612423284, 5.97410226154508E-07)
0 Nan
1 Nan
2 Nan
3 Nan
4 0.970421
5 0.956484
6 0.976242
7 0.990068
8 0.996854
9 0.996954
dtype: float64


Du kan se at disse to kolonnene er sterkt korrelert.

Konklusjon

Denne diskusjonen dreier seg om å beregne det rullende vinduet og deretter finne korrelasjonen av en Pandas dataaframe. For å sette begge disse konseptene i praksis, tilbyr Pandas en praktisk “dataframe.Rulling ().corr () ”-metode. For at elevens bekvemmelighet skal forstå prosessen bedre, har vi gitt tre praktisk implementerte eksempler sammen med visualisering og searborn -modul. Hvert eksempel er trukket ut med en detaljert forklaring av trinnene. Du kan enten bruke den på forskjellige kolonner i en enkelt DataFrame, eller du kan bruke de samme kolonnene fra forskjellige DataFrames; alt avhenger av dine krav.