Re: [python] Nejvyšší číslo z databáze - řazení
Dej si pozor, ať nespojuješ nesouvisející hodnoty high/low z různých tickerů. PM po 27. 8. 2018 v 19:25 odesílatel napsal: > = FBLL (SP100.csv) === > Date TickerOpenHigh Low Close SMA > 0 2018-08-24AGN 186.71 187.44 185.62 186.86 168.10 > 1 2018-08-24 AMGN 196.88 197.50 195.60 196.64 183.86 > 2 2018-08-24 CL 66.55 67.01 66.34 66.88 65.53 > 3 2018-08-24DIS 111.63 112.70 111.44 111.93 105.80 > 4 2018-08-24FOX 44.71 44.78 44.52 44.58 41.81 > 5 2018-08-24 FOXA 45.25 45.36 45.15 45.17 42.24 > 6 2018-08-24 KO 45.65 45.80 45.58 45.63 44.13 > 7 2018-08-24LMT 320.00 321.39 318.72 321.29 320.01 > 8 2018-08-24 MO 59.25 59.37 58.55 58.78 57.88 > 9 2018-08-24WMT 95.09 95.66 94.35 94.95 86.88 > > > ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Nejvyšší číslo z databáze - řazení
Ok, díky za upřesnění. Na mě se musí všechno "po lopatě". Ještě jednou díky. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Nejvyšší číslo z databáze - řazení
To byla ukázka. Tahej si to z databáze, ze souboru, z web API, odkudkoliv. to pd.read_csv vrací DataFrame. Je na tobě, jestli a jaký si uděláš jiný způsob získání/vytvoření toho DataFrame. Ten sloupec "n" je taky jenom pro ukázku. Měj tam sloupce jaké chceš a dělej si s nimi, co chceš :) PM po 27. 8. 2018 v 19:20 odesílatel napsal: > Petr Messner: Děkuji moc, to vypadá slibně. > > Jen mám otázku k: > > csv_data = dedent('''\ > n;low;high;close > 1;100;120;110 > 2;110;130;120 > 3;115;135;125 > 4;110;140;140 > 5;100;130;120 > 6;100;120;100 > 7;150;160;160 > ''') > df = pd.read_csv(StringIO(csv_data), sep=';') > > .. za dedent musím hodnoty vypisovat ručně? Nelze je natáhnout z > databáze? Nevím který "n" bude splňovat ten den podmínku. "N" se každý den > mění. > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz > ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Nejvyšší číslo z databáze - řazení
= FBLL (SP100.csv) === Date TickerOpenHigh Low Close SMA 0 2018-08-24AGN 186.71 187.44 185.62 186.86 168.10 1 2018-08-24 AMGN 196.88 197.50 195.60 196.64 183.86 2 2018-08-24 CL 66.55 67.01 66.34 66.88 65.53 3 2018-08-24DIS 111.63 112.70 111.44 111.93 105.80 4 2018-08-24FOX 44.71 44.78 44.52 44.58 41.81 5 2018-08-24 FOXA 45.25 45.36 45.15 45.17 42.24 6 2018-08-24 KO 45.65 45.80 45.58 45.63 44.13 7 2018-08-24LMT 320.00 321.39 318.72 321.29 320.01 8 2018-08-24 MO 59.25 59.37 58.55 58.78 57.88 9 2018-08-24WMT 95.09 95.66 94.35 94.95 86.88 Tohle se mi vypíše, když se script dokončí. Ticker a hodnoty (open,high...) se každý den mění, dle pravidel scriptu. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Nejvyšší číslo z databáze - řazení
Petr Messner: Děkuji moc, to vypadá slibně. Jen mám otázku k: csv_data = dedent('''\ n;low;high;close 1;100;120;110 2;110;130;120 3;115;135;125 4;110;140;140 5;100;130;120 6;100;120;100 7;150;160;160 ''') df = pd.read_csv(StringIO(csv_data), sep=';') .. za dedent musím hodnoty vypisovat ručně? Nelze je natáhnout z databáze? Nevím který "n" bude splňovat ten den podmínku. "N" se každý den mění. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Nejvyšší číslo z databáze - řazení
Udělal bych to takhle: https://gist.github.com/messa/bf39800e3493896a6d8b36dabd78a87f Je to ono? Poznámka: náhled Jupyter notebooku v Github gistu nefunguje na mobilu, musíte si to otevřít v plnotučném prohlížeči PM čt 23. 8. 2018 v 22:45 odesílatel napsal: > Děkuji za rady a trpělivost, kterou se mnou máte, vážím si toho :) > Už jsem zase o kousek chytřejší, ale jen nevím, jak vypočítat ty hodnoty. > > Mám sloupec High, mám sloupec Low a potřeboval bych s nimi počítat. > > (# 100 * (Nejvyšší High za poslední 4 úsečky – Close)/(Nejvyšší High za > poslední 4 úsečky/Nejnižší Low za poslední 4 úsečky) ) > > Možná to vůbec nejde > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz > ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Nejvyšší číslo z databáze - řazení
Děkuji za rady a trpělivost, kterou se mnou máte, vážím si toho :) Už jsem zase o kousek chytřejší, ale jen nevím, jak vypočítat ty hodnoty. Mám sloupec High, mám sloupec Low a potřeboval bych s nimi počítat. (# 100 * (Nejvyšší High za poslední 4 úsečky – Close)/(Nejvyšší High za poslední 4 úsečky/Nejnižší Low za poslední 4 úsečky) ) Možná to vůbec nejde ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Nejvyšší číslo z databáze - řazení
Ahoj, udelej si dalsi sloupec, ve kterym budou ty hodnoty df['pscore'] = df.apply(POSScore) A pak ho vysorti pomoci sort_values, jak si delal Ta sort fce imo neni uplne funkcni, coz pri tom mezikroku zjistis ;) PS. Sry pisu popameti na telefonu s. - 'aknerats'[::-1] On Wed, Aug 22, 2018, 23:41 Petr Messner wrote: > Ten kód moc smysl právě nedává. Třeba 'High'.shift(4) je blbost, string > žádnou metodu shift nemá. > > Dokumentace pandas.DataFrame.sort_values je tady: > https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html > > Vypadá to, že když chceš v pandasu sortit, tak musíš mít v nějakém sloupci > už připravené hodnoty, podle kterých se má sortit - že to neumí vzít Python > funkci, jako to umí normální sorted nebo list.sort v Pythonu. Což dává > smysl, protože DataFrame je specializovaný na rychlost provádění > numerických operací a snaží se proto právě vyhýbat volání Python funkcí pro > každý řádek zvlášť. > > Unit test znamená, že vezmeš nějaký ukázkový vstup, pustíš na něj tvoji > funkci, a výstup té funkce porovnáš s očekávaným výstupem. Podobně tak > kdybys nám sem poslal ukázku vstupu a co si představuješ, že by mělo být > výstupem, tak by bylo jednodušší ti poradit. Nebo jestli jedeš podle > nějakého tutorialu, návodu apod. > > Je i možné, že by to v čistém Pythonu šlo snadněji než přes DataFrame, a > až bys to rozběhal, tak potom to můžeš zkusit zmigrovat do DataFrame, pokud > by to bylo z nějakého důvodu potřeba. > > PM > > st 22. 8. 2018 v 23:15 odesílatel napsal: > >> Jirka Vejrazka: Používám sqlite3 a pandas, tahám z yahoo finance. >> >> Petr Messner: Omlouvám se, nevím co nebo jak udělat unit test. Tohle je >> konkrétní případ. >> >> Každý den stáhnu data z yahoo finance, naplním databázi, z které potom >> filtruji data, které splňují podmínku (- vypíše konkrétní položky) a ty >> chci právě seřadit podle "PositionScore". >> Snad to dává aspoň trochu smysl. >> ___ >> Python mailing list >> python@py.cz >> http://www.py.cz/mailman/listinfo/python >> >> Visit: http://www.py.cz >> > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz > ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Nejvyšší číslo z databáze - řazení
Ten kód moc smysl právě nedává. Třeba 'High'.shift(4) je blbost, string žádnou metodu shift nemá. Dokumentace pandas.DataFrame.sort_values je tady: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html Vypadá to, že když chceš v pandasu sortit, tak musíš mít v nějakém sloupci už připravené hodnoty, podle kterých se má sortit - že to neumí vzít Python funkci, jako to umí normální sorted nebo list.sort v Pythonu. Což dává smysl, protože DataFrame je specializovaný na rychlost provádění numerických operací a snaží se proto právě vyhýbat volání Python funkcí pro každý řádek zvlášť. Unit test znamená, že vezmeš nějaký ukázkový vstup, pustíš na něj tvoji funkci, a výstup té funkce porovnáš s očekávaným výstupem. Podobně tak kdybys nám sem poslal ukázku vstupu a co si představuješ, že by mělo být výstupem, tak by bylo jednodušší ti poradit. Nebo jestli jedeš podle nějakého tutorialu, návodu apod. Je i možné, že by to v čistém Pythonu šlo snadněji než přes DataFrame, a až bys to rozběhal, tak potom to můžeš zkusit zmigrovat do DataFrame, pokud by to bylo z nějakého důvodu potřeba. PM st 22. 8. 2018 v 23:15 odesílatel napsal: > Jirka Vejrazka: Používám sqlite3 a pandas, tahám z yahoo finance. > > Petr Messner: Omlouvám se, nevím co nebo jak udělat unit test. Tohle je > konkrétní případ. > > Každý den stáhnu data z yahoo finance, naplním databázi, z které potom > filtruji data, které splňují podmínku (- vypíše konkrétní položky) a ty > chci právě seřadit podle "PositionScore". > Snad to dává aspoň trochu smysl. > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz > ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Nejvyšší číslo z databáze - řazení
Jirka Vejrazka: Používám sqlite3 a pandas, tahám z yahoo finance. Petr Messner: Omlouvám se, nevím co nebo jak udělat unit test. Tohle je konkrétní případ. Každý den stáhnu data z yahoo finance, naplním databázi, z které potom filtruji data, které splňují podmínku (- vypíše konkrétní položky) a ty chci právě seřadit podle "PositionScore". Snad to dává aspoň trochu smysl. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Nejvyšší číslo z databáze - řazení
Na první pohled to vypadá na nějaký Pandas. Radku, neměl bys raději nějaký příklad, s konkrétními hodnotami, na kterém by bylo vidět, co to má dělat? :) (prostě unit test) Petr Messner 22. 8. 2018 v 21:12, Jirka Vejrazka : > Promin, tohle je syntaxe, kterou jsem nikdy nevidel. Mohl bys napsat, jakou > databazi pouzivas a jakou knihovnu pro tahani dat? > > Jirka > >> On Wed, 22 Aug 2018 at 21:00, wrote: >> Dobrý den, >> mám tady další problém, který se mi nedaří rozluštit. >> >> Mám určitou databázi dat a ty data, které splňují určité podmínky se mi >> vypisují. >> >> Tyto vypsané data bych chtěl ještě seřadit dle dalšího kritéria. Jenže >> nedaří se. Viz níže kód. >> >> Co dělám špatně? >> >> >> # 100 * (Nejvyšší High za poslední 4 úsečky – Close)/(Nejvyšší High za >> poslední 4 úsečky/Nejnižší Low za poslední 4 úsečky) >> >> # výpočet PositionScore >> def POSscore (data): >> val = 100 * (max(data['High'.shift(4)]) >> - 'Close')/(max(data['High'.shift(4)]) / (min(data['High'])) >> >> return val >> >> fbll = fbll.sort_values(by=['POSscore'], ascending=False) >> >> Děkuji za případnou další pomoc. >> ___ >> Python mailing list >> python@py.cz >> http://www.py.cz/mailman/listinfo/python >> >> Visit: http://www.py.cz > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Nejvyšší číslo z databáze - řazení
Promin, tohle je syntaxe, kterou jsem nikdy nevidel. Mohl bys napsat, jakou databazi pouzivas a jakou knihovnu pro tahani dat? Jirka On Wed, 22 Aug 2018 at 21:00, wrote: > Dobrý den, > mám tady další problém, který se mi nedaří rozluštit. > > Mám určitou databázi dat a ty data, které splňují určité podmínky se mi > vypisují. > > Tyto vypsané data bych chtěl ještě seřadit dle dalšího kritéria. Jenže > nedaří se. Viz níže kód. > > Co dělám špatně? > > > # 100 * (Nejvyšší High za poslední 4 úsečky – Close)/(Nejvyšší High za > poslední 4 úsečky/Nejnižší Low za poslední 4 úsečky) > > # výpočet PositionScore > def POSscore (data): > val = 100 * (max(data['High'.shift(4)]) > - 'Close')/(max(data['High'.shift(4)]) / (min(data['High'])) > > return val > > fbll = fbll.sort_values(by=['POSscore'], ascending=False) > > Děkuji za případnou další pomoc. > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz > ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz