Monday, October 24, 2016

Python bereken eksponensiële bewegende gemiddelde

Ek het 'n verskeidenheid van datums en 'n meting op elk van dié datums. ID graag 'n eksponensiële bewegende gemiddelde te bereken vir elk van die datums. Het enige iemand weet hoe om nuwe te doen hierdie Im om luislang. Dit nie die geval blyk dat gemiddeldes is gebou in die standaard Python biblioteek, wat lyk my as 'n bietjie vreemd. Miskien Im nie op soek in die regte plek. So, gegewe die volgende kode, hoe kon ek bereken die bewegende geweegde gemiddelde van IK-punte vir kalender datums (Theres waarskynlik 'n beter manier om die datastruktuur, enige raad sal waardeer word) vra 28 Januarie 09 by 18:01 My luislang is 'n bietjie verroes (enigiemand kan vry om hierdie kode korreksies aan te bring, indien Ive opgemors die sintaksis een of ander manier te wysig voel), maar hier gaan. Hierdie funksie beweeg agtertoe, van die einde van die lys van die begin af, die berekening van die eksponensiële bewegende gemiddelde vir elke waarde deur agteruit te werk totdat die gewig koëffisiënt vir 'n element minder as die gegewe Epsilon is. Aan die einde van die funksie, dit keer die waardes voordat hy terugkeer die lys (sodat hulle is in die korrekte volgorde vir die oproeper). (Kant nota: As ek met behulp van 'n ander as Python taal, Id skep 'n volle grootte leë reeks eerste en dan vul dit agtertoe-orde, sodat ek wouldnt het om dit te keer aan die einde, maar ek dont dink jy kan verklaar. 'n groot leë reeks in python. En in Python lyste, aanbring is baie goedkoper as prepending, wat is die rede waarom ek die lys in omgekeerde volgorde gebou. korrigeer my as Im verkeerd.) die Alpha argument is die verval faktor op elke iterasie. Byvoorbeeld, as jy 'n alfa van 0,5 gebruik, dan vandag se bewegende gemiddelde waarde sal bestaan ​​uit die volgende geweegde waardes: Natuurlik, as jy het 'n groot verskeidenheid van waardes, die waardes van tien of vyftien dae gelede gewoond bydra baie om vandag se geweegde gemiddelde. Die epsilon argument kan jy 'n afgesnyde punt, onder wie jy sal ophou om te bekommer oor ou waardes (sedert hul bydrae tot vandag waarde gering sal wees) stel. Youd roep die funksie iets soos hierdie: geantwoord 28 Januarie 09 by 18:46 Ek dont weet Python, maar vir die gemiddelde deel, bedoel jy 'n eksponensieel verrottende laaglaatfilter van die vorm waar alfa dt / TLU, dt die tyd stap van die filter, TLU die tydkonstante van die filter (die veranderlike-tyd stap vorm van hierdie is soos volg, net clip dt / TLU om nie meer as 1.0) as jy iets soos 'n datum filter, maak seker dat jy om te skakel na 'n swaai-punt hoeveelheid soos sekondes sedert 1 Januarie 1970.Im in die proses van die skep van 'n forex algoritme en wou my skoot op die berekening van EMO (Eksponensiële Moving gemiddeldes) probeer. My resultate verskyn korrek te wees (in vergelyking met die berekeninge wat ek gedoen het met die hand) so ek glo die volgende metode werk, maar net wou 'n ekstra stel oë te kry om maak seker im niks ontbreek. Let daarop dat hierdie die EMO vir die nuutste pryse net terug, nie die geval is dit terug 'n verskeidenheid EMAS as wat isnt wat ek nodig het vir my aansoek. Rekursie is 'n goeie hulpmiddel vir die regte werk, maar hier is dit gebruik om eenvoudige herhaling bereik. As sodanig die kode. is moeiliker om te lees en te redeneer oor. stadiger omdat baie van die kode in ema net nodig om een ​​keer te hardloop. sal misluk met 'n groot genoeg waarde van die venster te danke aan oorloop Luislange noem stapel. Let dokumenteer ten minste die grense van elke funksie, bv. die venster is die lengte van die venster, en die posisie tel terug vanaf die einde van data. (Om die waarheid dinge sou duideliker wees as posisie was 'n normale vorentoe indeks in data) Hef 'n uitsondering wanneer jy 'n parameter het 'n ongeldige waarde. Terugkeer Geen plaas sal eers later veroorsaak dat 'n meer verwarrende uitsondering nie. Trouens, as ek probeer Indicators (). Ema (closeprices, 600) Ek kry oneindige rekursie omdat SMA terugkeer Geen. wat maak ema oproep SMA oor en oor weer. Die vorige punt openbaar ook dat as Len (data) Dit venster 2 is nie die regte geldigheidstoets. Die 1 in data-window2 1: - window 1 lyk dont korrekte my. Ek veronderstel jy wil data-window2: - window Die verklaring terugkeer previousema is in 'n vreemde plek, want op daardie stadium het jy 'n nuwe currentema bereken. Dit is die basis geval van die rekursie, en is dit gebruiklik om die basis geval eerste te hanteer. My voorstel vir ema: geantwoord 26 November 14 aan 18:56 Pretty vlak oorsig: Jy hoef nie 'n klas vir wat jy doen te skryf (en ek stel voor dat jy 'n blik op hierdie video). Jou klas geen data omsluit en jy gebruik dit net om jou funksies in 'n dieselfde entiteit. Ek dink dinge sou makliker om te verstaan ​​as jy was om classmethod definieer om dit voor die hand liggend dat jy gewoond regtig staatmaak op enige geval hoegenaamd nie. Tog sou selfs 'n beter opsie wees om net funksies te definieer in 'n aanwyser module. antwoord 24 November 14 aan 18:04 Dankie vir die voorstelle wat ek eintlik gedoen het hulle as classmethods en gedebatteer heen en weer gaan tussen selfs met behulp van 'n klas of net die definisie van funksies in 'n aanwyser module (wat ek nou gaan doen). â € ChrisC 25 November 14 by 19:12 Net kyk na die video ook groot dinge. â € ChrisC 25 November 14 aan 19:43 Jou Antwoord 2016 stapel Exchange, Incnumpy. average Axis waarlangs om gemiddeld 'n. As een. gemiddelde gedoen oor die plat skikking. gewigte. arraylike, opsioneel 'n verskeidenheid van gewigte wat verband hou met die waardes in 'n. Elke waarde in 'n bydrae lewer tot die gemiddelde volgens sy verwante gewig. Die gewigte array kan óf 1-D (in welke geval moet sy lengte van die grootte van 'n langs die gegewe as wees) of van dieselfde vorm as 'n. As weightsNone. dan sal al die data in 'n word aanvaar dat 'n gewig gelyk aan een het. teruggekeer . Bool, opsionele Standaard is Vals. As dit waar is. die tuple (gemiddelde. sumofweights) teruggestuur, anders net die gemiddelde teruggestuur. As weightsNone. sumofweights is gelykstaande aan die aantal elemente waaroor die gemiddelde geneem. gemiddelde, sumofweights. arraytype of dubbel terug die gemiddelde langs die gespesifiseerde as. Wanneer teruggekeer waar is. terugkeer 'n tuple met die gemiddelde as die eerste element en die som van die gewigte as die tweede element. Die tipe terugkeer is Float as a van heelgetal tipe, anders is dit van dieselfde soort as 'n. sumofweights is van dieselfde soort as die gemiddelde. Python Data-analise Biblioteek pandas is 'n oop bron, BSD-lisensie biblioteek met 'n hoë-prestasie, maklik-om-te gebruik datastrukture en data-analise gereedskap vir die Python-programmeertaal. pandas is 'n NUMFocus geborg projek. Dit sal help om te verseker dat die sukses van die ontwikkeling van pandas as 'n wêreldklas-open-source projek. 0.19.0 Finale (2 Oktober 2016) Dit is 'n groot vrylating uit 0.18.1 en sluit verskeie API veranderinge, 'n paar nuwe funksies, verbeterings, en verbeterings prestasie saam met 'n groot aantal foutherstellings. Ons beveel aan dat alle gebruikers op te gradeer om hierdie weergawe. mergeasof () vir asof-styl time-reeks aansluit, sien hier. rolling () is nou tyd-reeks bewus, kyk hier readcsv () ondersteun nou die ontleding van kategoriese data, kyk hier 'n funksie unioncategorical () is bygevoeg vir die kombinasie van categoricals, sien hier PeriodIndex het nou sy eie tydperk dtype, en verander meer in ooreenstemming met ander indeks klasse te wees. Sien hier skraal datastrukture opgedoen verbeterde ondersteuning van int en Bool dtypes, kyk hier Vergelyking bedrywighede met 'n reeks nie meer ignoreer die indeks, kyk hier vir 'n oorsig van die API veranderinge. Bekendstelling van 'n pandas ontwikkeling API vir nut funksies, kyk hier. Afkeuring van Panel4D en PanelND. Ons beveel aan om hierdie tipe van n-dimensionele data voor te stel met die xarray pakket. Die opheffing van die voorheen afgekeur modules pandas. io. data. pandas. io. wb. pandas. tools. rplot. Sien die Whatsnew oorsig vir 'n omvattende lys van al verbeterings en foute wat in 0.19.0 vasgestel het. Meld asseblief enige probleme hier Beste manier om Beste manier om pandas kry installeer word om te installeer via conda Bou vir OSX-64, Linux-64, Linux-32, wen-64, wen-32 vir Python 2.7, Python 3.4, en Python 3.5 is almal beskikbaar. conda installeer pandas Vinnige vignette Watter probleem doen pandas los Python het 'n lang groot vir data munging en voorbereiding, maar minder so vir data-analise en modellering. pandas help vul hierdie gaping, sodat jy uit te voer jou hele data-analise workflow in Python sonder om oor te skakel na 'n meer domein spesifieke taal soos R. gekombineer met die uitstekende IPython toolkit en ander biblioteke, die omgewing om dit te doen data-ontleding in Python blink in prestasie, produktiwiteit, en die vermoë om saam te werk. pandas nie beduidende modellering funksionaliteit buite lineêre en paneel regressie vir hierdie implementeer, kyk na statsmodels en scikit-leer. Meer werk is nog nodig om Python 'n eerste klas statistiese modellering omgewing, maar ons is goed op pad in die rigting van daardie doel. Wat doen ons gebruikers het om 8220 pandas sê ons toelaat om meer te fokus op navorsing en minder op ontwikkeling. Ons het pandas maklik om te leer, maklik om te gebruik, en maklik om te handhaaf gevind. Die bottom line is dat dit toegeneem het ons productivity.8221 Direkteur van Optimization amp Analytics 8220 pandas is die ideale hulpmiddel vir die oorbrugging van die gaping tussen vinnige iterasies van ad hoc-analise en kwaliteit van die produksie-kode. As jy wil 'n instrument wat gebruik word in 'n multi-gedissiplineerde organisasie van ingenieurs, wiskundiges en ontleders, kyk nie further.8221 8220We gebruik pandas te tydreeksdata op ons produksie bedieners verwerk. Die eenvoud en elegansie van sy API en sy hoë vlak van prestasie vir 'n hoë-volume datastelle, het dit 'n ideale keuse vir us.8221 Biblioteek dui op 'n vinnige en doeltreffende DataFrame voorwerp vir datamanipulasie met 'n geïntegreerde kruip gereedskap vir lees en skryf data tussen in-geheue datastrukture en verskillende formate: CSV en teks lêers, Microsoft Excel, SQL databasis en die vinnige HDF5 formaat Intelligent data belyning en geïntegreerde hantering van die vermiste data. kry outomatiese-etiket gebaseer belyning in berekeninge en maklik manipuleer morsig data in 'n ordelike vorm Flexible hervorming en tuimelende van datastelle Intelligent-etiket gebaseer sny. fancy kruip. en subsetting van groot datastelle kolomme kan ingevoeg word en verwyder van data strukture vir grootte mutability Aggregating of transformasie van data met 'n kragtige groep enjin laat split aansoek doen-kombineer bedrywighede op data stel hoë prestasie samesmelting en samevoeging van data stel Hiërargiese as kruip bied 'n intuïtiewe manier van werk met 'n hoë-dimensionele data in 'n laer-dimensionele datastruktuur Tyd reeks - functionality: datum bereik geslag en frekwensie sukses, beweeg venster statistieke, beweeg venster lineêre regressies, datum verskuiwing en agter. Selfs skep domein-spesifieke tyd neutraliseer en sluit tydreekse sonder data Hoogs geskik vir prestasie verloor. met 'n kritiese kode paaie geskryf in Cython of C. Python met pandas is in gebruik in 'n wye verskeidenheid van akademiese en kommersiële gebiede, insluitend Finansies, Neuroscience, Ekonomie, Statistiek, Advertising, web analytics, en more. Advanced Matplotlib Series (video's en eindig bron alleenlik) Sodra jy 'n basiese begrip van hoe Matplotlib werk, kan jy dalk 'n belangstelling in die neem van jou kennis 'n bietjie verder het. Sommige van die mees komplekse grafiese behoeftes kom in die vorm van voorraad analise en kartering, of Forex. In hierdie handleiding reeks, gaan dek waar en hoe om outomaties aan te gryp, sorteer en organiseer 'n paar gratis voorraad en buitelandse valuta pryse data. Volgende, gaan dit in kaart met behulp van 'n paar van die meer gewilde aanwysers as 'n voorbeeld. Hier, goed te doen MACD (bewegende gemiddelde Konvergensie divergensie) en die RSI (relatiewe sterkte-indeks). Om ons te help bereken hierdie, sal ons Numpy gebruik, maar anders sal ons hierdie te bereken almal op ons eie. Om die data te verkry, gaan die Yahoo Finansies API te gebruik. Dit API terugkeer historiese prys data vir die ENKELE simbool ons spesifiseer en vir die tyd lank ons ​​vra. Hoe groter die tyd, hoe laer is die besluit van data wat ons kry. Dus, as jy vra vir 'n 1-dag tydraamwerk vir AAPL, sal jy 3 minute OHLC (oop hoë lae naby) data te kry. As jy vra vir 10 jaar die moeite werd is, sal jy daagliks data te kry, of selfs 3 dag tydraamwerke. Hou dit in gedagte en kies 'n tyd wat jou doelwitte pas. Ook, as jy 'n lae genoeg tyd raam kies en kry 'n hoë genoeg korrelig, die API sal die tyd terug te keer in 'n Unix tyd stempel, in vergelyking met 'n datumstempel. Sodra ons die data, sal ons dit wil grafiek. Om mee te begin, en net stip die lyne, maar die meeste mense sal wil hê om 'n kandelaar plot in plaas. Ons sal Matplotlibs kandelaar funksie te gebruik, en maak 'n eenvoudige wysig om dit te effens verbeter. Op dieselfde grafiek, sowel ook trek 'n paar bewegende gemiddelde berekeninge. Hierna is gaan 'n intrige te skep, en die grafiek van die volume. Ons kan nie volume plot op dieselfde intrige onmiddellik, want die skaal is anders. Om mee te begin, sal ons die volume onder plot in 'n ander sub plot, maar uiteindelik ook eintlik oortrek volume op dieselfde figuur en maak dit 'n bietjie deursigtig. Dan gaan 2 sub erwe voeg en plot 'n RSI aanwyser op die top en die MACD aanwyser op die bodem. Vir al hierdie, gaan die X-as deel, sodat ons kan in en uit in 1 plot zoom en hulle sal almal ooreenstem met die dieselfde tyd raam. Gaan plot in datum formaat vir die X-as, en pas net oor al die dinge wat ons kan vir estetika. Dit sluit in die verandering van bosluis etiket kleure, rand / ruggraat kleure, lyn kleure, OHLC kandelaar kleure, leer hoe om 'n vol grafiek (vir volume) te skep, histogramme, trek spesifieke lyne (hline vir RSI), en 'n hele klomp meer. Hier is die eindresultaat (Ek het beide 'n Python 3 en 'n Python 2 weergawe vir hierdie Python 3 eerste, dan Python 2. Maak seker jy gebruik van die een wat pas by jou Python weergawe.): Dis al vir nou. Wil jy meer tutoriale kop na die Tuisblad Matplotlib Crash Course


No comments:

Post a Comment