Toon posts:

Programmeren database analyses

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers,

Ik wil een systeem maken dat er informatie van internet gehaald wordt. Als ik het goed begrijp heet dit webscraping. Deze informatie (die elke keer hetzelfde zal zijn, maar een ander subject) wil ik geautomatiseerd in een database opslaan die geautomatiseerd structureert. Vervolgens wil ik dat hier analyses op toegepast worden. De uitkomst van een analyse moet vergeleken worden met de uitkomst van een ander gegevens (van het internet). Als deze lager is dan dat gegeven, dan moet de naam van dit subject op een aparte lijst komen te staan.

Oftewel, ik moet:

1) Data van internet in een database krijgen
2) Geautomatiseerd analyseren
3) Rangschikken

Aangezien ik geloof dat hier aardig wat slimme koppen zitten, wil ik graag weten op welke manier jullie dit zullen doen. Is hiervoor bepaalde programmeerkennis nodig, of is er al bestaande software op de markt die dit kan?

Ik hoor het graag van jullie!

Edit: de pagina's (1000en) waarvan ik de informatie wil inladen zijn bekend en kennen een vaste structuur.

[ Voor 5% gewijzigd door Verwijderd op 10-02-2018 10:21 ]


Acties:
  • 0 Henk 'm!

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 27-09 22:07

MAX3400

XBL: OctagonQontrol

Volgens mij wil je dus (gedeeltelijk) de Google algoritmes maken?

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MAX3400 schreef op zaterdag 10 februari 2018 @ 09:55:
Volgens mij wil je dus (gedeeltelijk) de Google algoritmes maken?
Ik ben wat dat betreft dus een leek. Ik denk eerlijk gezegd niet dat ik een google algoritme nodig heb. De pagina links die ik nodig heb die zijn bekend. Elk van die pagina's (en dat zijn er 1000en) hebben allemaal een vaste structuur waarvan ik wil dat die structuur in een database wordt ingeladen die ik telkens volgens dezelfde methode kan analyseren. Een algoritme heb ik dus denk ik wel nodig. Ik vraag me alleen af wat ik daarvoor nodig heb. Zover ik zelf onderzocht heb, heb ik een SQL database nodig en een programmeertaal zoals python met een algoritme. Maar dat is eigenlijk waar ik achter wil komen.

Edit:

Om het iets concreter te maken heb ik een voorbeeld. zie: https://finance.yahoo.com/quote/ING/balance-sheet?p=ING

De balans van ING kent een bepaalde indeling. Deze indeling moet van de Yahoo pagina ingeladen worden in een database die dezelfde structuur kent. Als het mogelijk is dat dit ook direct via het internet kan zonder hiervoor een aparte database te maken, dan kan in principe deze stap overgeslagen worden.

[ Voor 23% gewijzigd door Verwijderd op 10-02-2018 10:29 ]


Acties:
  • 0 Henk 'm!

  • Joep
  • Registratie: December 2005
  • Laatst online: 11:42
Ga je het zelf programmeren, heb je al iemand die het gaat programmeren of is dit topic bedoeld om uit te zoeken hoe je deze opdracht moet formuleren zodat je 'm op een freelancewebsite kunt zetten? Want wat je wil kan met allerlei methodes, programma's en programmeertalen en elke combinatie hiervan heeft z'n eigen voor en nadelen.

Edit:
En als je vraagstuk over het binnenhalen en analyseren van gegevens van yahoo finance gaat, zie https://www.google.nl/search?q=yahoo+finance+api

Edit 2:
Je gebruikt liever een api als die er is, dan dat je de data d.m.v. scraping binnenhaalt, tenzij de api beperkingen heeft. En misschien is yahoo finance niet de beste plaats om de data binnen te halen die je nodig hebt. Yahoo is niet bepaald een stabiel bedrijf en het is zuur om mee te moeten maken dat je programma dat je hebt geschreven opeens niet meer werkt omdat ze de api weer veranderd hebben. Misschien kun je de benodigde data van bijvoorbeeld nasdaq.com of aex.nl binnenhalen?

[ Voor 51% gewijzigd door Joep op 10-02-2018 11:19 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Joep,

Ik denk dat ik het zelf wil programmeren. Maar aangezien ik hier geen enkele kennis over heb, probeer ik uit te vogelen of het niet beter is om dit uit te besteden of het meer praktisch te benaderen door middel van andere software. Maar in principe sta ik ervoor open om mijzelf de vaardigheden van het programmeren aan te leren. Een tijdsinvestering van 1 a 2 jaar heb ik ervoor over. Hoe redelijk acht je dat?

Reactie op je edit:

Je noemt precies een probleem waar ik tegenaan loop. Op dit moment zie ik het meeste potentieel in yahoo (en was ook zover om uit te zoeken of zij api ondersteunen. Ik heb moeite met herkennen omdat ik (nog) niet de taal spreek, maar volgens mij ondersteunen zij geen api meer). Andere websites laten geen jaarrekeningen zien, maar uitsluitend de koers. De koers is voor mij niet relevant.

Edit: Nadaq is ook prima, hoewel toch iets beperkt.

[ Voor 36% gewijzigd door Verwijderd op 10-02-2018 11:25 ]


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Als je geen enkele basis in programmeren hebt moet je daar beginnen. Niet meteen in het diepe duiken voor je kunt zwemmen. Als je "geen idee" hebt waar je moet beginnen, is dat over het algemeen een goeie indicatie dat het te hoog gegrepen is.

https://niels.nu


Acties:
  • +1 Henk 'm!

  • Joep
  • Registratie: December 2005
  • Laatst online: 11:42
Geen idee om eerlijk te zijn. Ik ken je niet en je vraagstuk is onduidelijk. De meest makkelijk te leren manier lijkt me eerst uit te zoeken wat je als eindresultaat wilt hebben. Vervolgens moet je uitzoeken welke data je daarvoor moet binnenhalen, wat de beste plek (of plekken) is om die data binnen te halen en vervolgens uit te zoeken hoe je die data kunt binnenhalen. Dan moet je nog uitzoeken hoe je de data moet verwerken tijdens het binnenhalen en hoe je de data moet analyseren en dan hoe je de data zo presenteert dat je je beoogde resultaat bereikt. Het zou met Microsoft Excel/Access kunnen. Dat is vrij makkelijk te leren. Misschien heb je nog een scraper nodig. Daar zijn programma's voor.

[ Voor 8% gewijzigd door Joep op 10-02-2018 11:42 ]


Acties:
  • +2 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 15:05
Dit is een klusje dat voor een beetje data scientist zo te piepen is, maar als je nog nooit zelf geprogrammeerd heb zou ik er niet aan beginnen. Of je moet echt flink tijd willen investeren om jezelf dit eigen te maken, dat is natuurlijk aan te moedigen.

Web scrapen is inderdaad wat je nodig hebt om de data van de website te halen. Let wel op twee dingen:

1) Als de website van layout verandert, gaat je scraper zeer waarschijnlijk over z'n nek en moet je het script gaan aanpassen. Dit kan veel werk opleveren, daarom is een API altijd te prefereren (al veranderen die ook nog wel eens qua specificaties).

2) Web scrapen voor analytics doeleinden is juridisch een grijs gebied (zie o.a. wat rechtszaken rond Funda). Websites nemen in sommige gevallen maatregelen om zich tegen scrapen te beschermen, waardoor je scripts kapot gaan. Wees sowieso beleefd als je scraped in termen van belasting van de servers etc.

Als je gaat scrapen kun je naar scrapy kijken; dit is een package voor Python wat je veel werk uit handen neemt. Als alternatief is er requests i.c.m. BeautifulSoup. Je zal echter nog steeds Python moeten leren programmeren en de structuur van een HTML pagina moeten kunnen doorgronden.

De gegevens die je scraped kun je opslaan in CSV bestanden als het om weing data gaat. Dit is verreweg het eenvoudigste. Alternatief is opslaan in een relationele database zoals PostgreSQL. Je kunt in Python makkelijk verbinding maken met dit soort databases via pyodbc. Uiteraard moet je dan wel SQL leren om de database te kunnen bevragen.

Tot slot kun je statistische analyses in Python ook prima doen. De packages numpy en pandas zijn handig als je met data wilt gaan werken. Daarnaast kun je statsmodels en scikit-learn gebruiken voor het maken van statistische modellen, zoals lineaire regressie etc.

Zoals je ziet komt er best wel wat kennis om de hoek bij zo'n project. Vraag is of je zin en tijd hebt om die kennis zelf op te gaan doen. Nog een ander ding: een simpele regressie door wat jaarrekeningen gaat waarschijnlijk een *zeer belabberd* model opleveren om prestaties van een bedrijf in de toekomst mee te voorspellen. De werkelijkheid is namelijk veel complexer en je zult tenminste ook andere economische indicatoren in het model moeten opnemen, evenals vergelijkingen met directe concurrenten etc. Denk dus niet te makkelijk over het maken van een goed voorspelmodel!

Python (Anaconda):
https://www.anaconda.com/download/#linux

Python online leren:
https://www.codecademy.com/learn/learn-python

Relevante Python packages:
scrapy: https://scrapy.org/
requests: http://docs.python-requests.org/en/master/
beautifulsoup: https://www.crummy.com/software/BeautifulSoup/bs4/doc/
pyodbc: https://github.com/mkleehammer/pyodbc/wiki
pandas: http://pandas.pydata.org/pandas-docs/stable/
scikit-learn: http://scikit-learn.org/stable/

PostgreSQL:
https://www.postgresql.org/

[ Voor 35% gewijzigd door Morrar op 10-02-2018 12:01 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Morrar schreef op zaterdag 10 februari 2018 @ 11:42:
Dit is een klusje dat voor een beetje data scientist zo te piepen is, maar als je nog nooit zelf geprogrammeerd heb zou ik er niet aan beginnen. Of je moet echt flink tijd willen investeren om jezelf dit eigen te maken, dat is natuurlijk aan te moedigen.

Web scrapen is inderdaad wat je nodig hebt om de data van de website te halen. Let wel op twee dingen:

1) Als de website van layout verandert, gaat je scraper zeer waarschijnlijk over z'n nek en moet je het script gaan aanpassen. Dit kan veel werk opleveren, daarom is een API altijd te prefereren (al veranderen die ook nog wel eens qua specificaties).

2) Web scrapen voor analytics doeleinden is juridisch een grijs gebied (zie o.a. wat rechtszaken rond Funda). Websites nemen in sommige gevallen maatregelen om zich tegen scrapen te beschermen, waardoor je scripts kapot gaan. Wees sowieso beleefd als je scraped in termen van belasting van de servers etc.

Als je gaat scrapen kun je naar scrapy kijken; dit is een package voor Python wat je veel werk uit handen neemt. Als alternatief is er requests i.c.m. BeautifulSoup. Je zal echter nog steeds Python moeten leren programmeren en de structuur van een HTML pagina moeten kunnen doorgronden.

De gegevens die je scraped kun je opslaan in CSV bestanden als het om weing data gaat. Dit is verreweg het eenvoudigste. Alternatief is opslaan in een relationele database zoals PostgreSQL. Je kunt in Python makkelijk verbinding maken met dit soort databases via pyodbc. Uiteraard moet je dan wel SQL leren om de database te kunnen bevragen.

Tot slot kun je statistische analyses in Python ook prima doen. De packages numpy en pandas zijn handig als je met data wilt gaan werken. Daarnaast kun je statsmodels en scikit-learn gebruiken voor het maken van statistische modellen, zoals lineaire regressie etc.

Zoals je ziet komt er best wel wat kennis om de hoek bij zo'n project. Vraag is of je zin en tijd hebt om die kennis zelf op te gaan doen. Nog een ander ding: een simpele regressie door wat jaarrekeningen gaat waarschijnlijk een *zeer belabberd* model opleveren om prestaties van een bedrijf in de toekomst mee te voorspellen. De werkelijkheid is namelijk veel complexer en je zult tenminste ook andere economische indicatoren in het model moeten opnemen, evenals vergelijkingen met directe concurrenten etc. Denk dus niet te makkelijk over het maken van een goed voorspelmodel!

Python (Anaconda):
https://www.anaconda.com/download/#linux

Python online leren:
https://www.codecademy.com/learn/learn-python

Relevante Python packages:
scrapy: https://scrapy.org/
requests: http://docs.python-requests.org/en/master/
beautifulsoup: https://www.crummy.com/software/BeautifulSoup/bs4/doc/
pyodbc: https://github.com/mkleehammer/pyodbc/wiki
pandas: http://pandas.pydata.org/pandas-docs/stable/
scikit-learn: http://scikit-learn.org/stable/

PostgreSQL:
https://www.postgresql.org/
Dank voor je reactie.

Het economische vraagstuk is het probleem niet. Ik weet precies wat ik wil. Ik wil een ranking-systeem ontwikkelen die mijn onderzoeksobjecten aanzienlijk weet in te perken. Ik heb daar in ieder geval mijn eigen model voor waarbij ik qua codering geen moeilijkheden verwacht.

Ik denk dat je een belangrijke vraag beantwoord hebt wat betreft het opslaan van de data in een .csv bestand. Zo bezien zal ik mij moeten verdiepen in Python (tenzij er betere alternatieven zijn voor dit project). Kunnen jullie ook een indicatie geven tot welk niveau ik hierin moet gaan? Is dit de basis of verder?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik denk dat ik in deze de volgende tactiek voor de korte termijn ga hanteren:

1) basis python leren (indicatie 200-300 uur. Deze investering wordt goedgemaakt met de tijd die ik bespaar met handmatig invoeren)
2) beautifulsoup toepassen (.csv files maken met vaste structuur)
3) excel template maken volgens vaste structuur (met oa formules)
4) csv files inladen in excel per werkblad.
5) ranking systeem op het eerste werkblad in excel maken

Acties:
  • 0 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 00:12

The Eagle

I wear my sunglasses at night

Doe jezelf een lol en ga niet die weg in. Excel is handig voor sommige dingen, maar voor jouw anaylsedoeleinden gaat het uiteindelijk ver tekort schieten.
Bovendien kun je de basis python in een dag of twee doen, niet in 5 a 6 weken.

Schot voor de boeg: installeer Hadoop, Hive en Flume. Met Flume haal je, al dan niet icm de bestande api's of python, de data binnen en dump je die in Hive. Vervolgens installeer je R of een ander statistisch pakket en doe je al je analyses, voorspellingen en wat diens meer zij. Dat is er voor gemakt.
Plus het schaalt als een dolle :)
Als je echt snel wikt zou je ook nog met apache spark aan de slag kunnen, dat draait helemaal in memory. Maar is een steile leercurve.

Protip: haal bij Cloudera een VM op die je in virtualbox draait. Kun je zo mee aan de slag, kwestie van de flume agent(s) configureren en gaan. Moet je alleen R nog ff koppelen.

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 15:05
Die codecademy cursus moet je vrij snel kunnen doen. Dat lijkt me een goed begin en evt kun je nog ergens een basiscursus data science in Python volgen (zoek op Coursera, vb https://www.coursera.org/learn/python-data-analysis#).

Als je met BeautifulSoup aan de slag wilt heb ik hier een basic tutorial staan: https://gitlab.com/lfkoning/source_webscraper. Dit is een zeer basic scriptje en niet heel erg production level, maar hopelijk helpt het je op weg.

Excel ben ik verder ook echt geen fan van... Maar Hadoop en Spark ecosysteem vind ik echt overkill voor deze use-case. R + Rstudio kan prima, maar dan moet je nog een taal leren. Daarnaast biedt het voor jouw plan denk ik niet veel meerwaarde tov Python.

Als je Python via Anaconda installeert kun je veel sneller aan de slag met Jupyter notebooks. Dit wordt dan namelijk standaard meegeleverd. Je installeert Anaconda en start daarna een notebook van de commandline met commando "jupyter notebook". Dit opent een browser, klik rechtsboven om een nieuw notebook te openen. In het notebook zie je tekstvelden waar je code in kunt typen. De output verschijnt er direct onder als je ctrl / shift + enter intypt. Die interactiviteit maakt dat je eenvoudig data kunt exploreren.

CSV inlezen met pandas is ook makkie:
Python:
1
2
3
import pandas as pd

df = pd.read_csv("csv_filename")


Daarna kun je ermee aan de slag.

[ Voor 20% gewijzigd door Morrar op 11-02-2018 10:27 ]


Acties:
  • 0 Henk 'm!

  • DHH
  • Registratie: Augustus 2014
  • Laatst online: 07-09-2024

DHH

Volgens mij is dit hele traject precies hetgeen wat je zoekt:
https://academy.microsoft.com/en-us/tracks/data-science

Dit omvat de basis van SQL en voldoende basis van Python of R om een dergelijk traject mee te kunnen starten.

Je kan instappen op het door jou gewenste niveau en je kan de modules gratis volgen (certificaten kosten wel geld). Persoonlijk vond ik het een prettig traject.
Pagina: 1