@sophus-aarnaes det er heldigvis ganske lave skuldre på dette forumet, så tror ikke er så farlig at innlegg ikke treffer 100% på tråd-temaet Men da jeg skrev min post tipset @livar-bergheim om at det kanskje var bedre å legge det rett på datasettet det gjelder. I dette tilfellet ER, og her er lenken jeg ble vist til: https://data.norge.no/datasets/68d08f28-a16d-4fab-a953-ed4ab08ce2e2
oivind.langeland
Innlegg
-
Analyse av Enhetsregisteret med Python og Pandas -
Datasett Enhetsregisteret, REGISTERENHETEN I BRØNNØYSUNDDette var gode nyheter! Tusen takk for svaret og oppdateringen bjo! Det er for øvrig utrolig verdifullt med slike arenaer som dette, hvor man så enkelt kan komme i kontakt med de rette folkene hos de som eier APIer og datasett. God sommer!
-
Analyse av Enhetsregisteret med Python og Pandas@sophus-aarnaes jeg driver med samme øvelsen, og deler noe av min innsikt, kanskje det kan hjelpe. Satser på at @steinar-skagemo eller de andre fra BR korrigerer meg om jeg er helt ute.. Det endepunktet du bruker tror jeg bare gir deg en json-fil, som i tillegg er zippet. For at du skal kunne gjøre noe med den må du først zippe den opp og lese hele eller deler av den inn i maskinens arbeidsminne. Min erfaring er at den er utrolig tung å jobbe med og egentlig mest nyttig om du har tenkt til å gjøre analyse eller andre store oppgaver på hele ER (ikke underenhetene) lokalt. Om du er på jakt etter å lære litt mer praktisk bruk av API ville jeg brukt et av andre endepunktene, dette som nevnes i eksempel 2 er et bra utgangspunkt (jf. din lenke):
Jeg har skrevet en liten python-snutt som bruker det APIet. Den ligger her: https://github.com/xivind/learning-code/blob/main/br_enhetsregisteret/er_api_test.py
Med slik bruk av APIet får du json-svaret fra APIet rett inn i arbeidsminnet og kan skrive det ut (print-metoden) eller gjøre andre operasjoner på det, f. eks. sammenstille og skrive til en json-fil. Eller lese inn i en Panda-frame for litt analyse, jf. Steinars instruks. Håper dette er til hjelp, og så har sikkert folkene fra BR eller Digdir @livar-bergheim mer å legge til PS Kodesnutten jeg viser til over er fortsatt under arbeid..
-
Datasett Enhetsregisteret, REGISTERENHETEN I BRØNNØYSUNDPå oppfordring fra Livar Bergheim lenker jeg her til en utveksling vi hadde om bruk av ER ved å laste ned xlsx-fil fra BRs eget API. Kortversjonen er at xlsx-filen har to faner, og dersom man kun behandler filen maskinelt, uten å åpne den i f. eks. Excel, er det fort gjort å overse den andre fanen. Da mister man data, så husk begge fanene, f. eks. ved konvertering til CSV. Alt om saken her: https://datalandsbyen.norge.no/topic/34/analyse-av-enhetsregisteret-med-python-og-pandas PS Ønskeliste til BR: kan man få enten en CSV eller Parquet gjort tilgjengelig for nedlastning via API, så slipper man å gjøre konverteringen fra Xlsx? Tusen takk, og takk for hjelpen Steinar S med å finne ut av problemet her.
-
Analyse av Enhetsregisteret med Python og Pandas@livar-bergheim Tusen takk for oppfølgingen! Jeg er glad jeg var ydmyk i min første post og antydet at feilen nok kunne ligge på min side. Ved nærmere testing, og etter noen tips fra @steinar-skagemo , viser det seg nemlig at feilen nettopp ligger på min side. Det viser seg altså at xlsx-filen man får ned fra APIet til Brreg inneholder to faner. Dersom Xlsx2csv-modulen kjøres uten parametere, tar den bare første fanen, og da mister man data. Jeg løste det ved å kjøre Xlsx2csv-modulen to ganger, en gang for hvert sheet, og deretter slå sammen resultatene fra disse to kjøringene, og droppe duplikatene. Da stemmer tallene overens fra xlsx og direktesøk i APIet til Brreg. Det er nok mangt man kan si om koden under, men den viser hvert fall hvordan det kan gjøres. Igjen tusen takk for at både du og Steinar fulgte opp, saken er løst
def lag_utvalg(): Xlsx2csv(ER_FULL_FIL, outputencoding="utf-8").convert("er1.csv", sheetid=1) Xlsx2csv(ER_FULL_FIL, outputencoding="utf-8").convert("er2.csv", sheetid=2) df_fane1 = pd.read_csv('er1.csv') df_fane2 = pd.read_csv('er2.csv') df_kombinert = pd.concat([df_fane1, df_fane2], ignore_index=True, sort=False) df_kombinert_trimmet = df_kombinert[["Organisasjonsnummer", "Navn", 'Organisasjonsform.kode', "Organisasjonsform.beskrivelse", "Næringskode 1", "Næringskode 1.beskrivelse", "Næringskode 2", "Næringskode 2.beskrivelse", "Næringskode 3", "Næringskode 3.beskrivelse", "Postadresse.adresse", "Postadresse.kommune", "Registreringsdato i Enhetsregisteret", "Antall ansatte"]] df_utvalg = df_kombinert_trimmet.astype(str) sok_etter = list(NACE_UTVALG.split(",")) nace_utvalg_1 = df_utvalg[df_utvalg['Næringskode 1'].str.contains('|'.join(sok_etter))] nace_utvalg_2 = df_utvalg[df_utvalg['Næringskode 2'].str.contains('|'.join(sok_etter))] nace_utvalg_3 = df_utvalg[df_utvalg['Næringskode 3'].str.contains('|'.join(sok_etter))] utvalg = pd.concat([nace_utvalg_1, nace_utvalg_2, nace_utvalg_3], ignore_index=True, sort=False).drop_duplicates(subset=['Organisasjonsnummer']) skriv_csv(utvalg, ER_UTVALG_FIL)
-
Analyse av Enhetsregisteret med Python og PandasTusen takk for disse oppskriftene @steinar-skagemo Veldig nyttig for å komme i gang! Jeg eksperimenterer litt med ulike spørringer på datasettet og har kommet borti en merkelig sak. Når jeg søker etter næringskode 86.101 i brukergrensesnittet til Brreg får jeg 43 treff. Det får jeg også når jeg søker i APIet og i ER som en json-fil. Så langt alt bra! Problemet er svaret jeg får når jeg søker i xlsx-filen Det vil si, jeg søker jo ikke i xlsx-filen, men i csv-versjonen som jeg konverterer den til. Da får jeg kun 25 treff. Jeg har et tilsvarende problem med næringskode 86.104 og tipper det kan gjelde andre næringskoder også.
Jeg har Googlet høyt og lavt, men klarer ikke å forstå hvorfor dette avviket oppstår. Det virker ikke sannsynlig at det er et avvik i xlsx-filen Brreg tilgjengeliggjør, så i så fall må feilen oppstå under konverteringen jeg gjør fra xlsx til csv. Men jeg kan ikke forstå det heller. Som deg så bruker jeg Xlsx2csv-modulen. Har også prøvd å gjøre konverteringen med pandas metoder (.read_excel og .to_csv og openpyxl). Det tar vanvittig mye lenger tid enn xlsx2csv-modulen og resultatet blir akkurat det samme. Jeg vurderer å bruke json-filen i stedet, men med sine 1,1 gb er den er veldig mye tyngre å jobbe med, så jeg vil helst unngå det. Har du eller noen av dere andre i datalandsbyen noen ideer her?
PS I fare for å avsløre min manglende kompetanse på denne type ting: hva er grunnen til at Brreg ikke tilgjengeliggjør ER som en csv, bortsett fra at den er 70 mb større enn xlsx-versjonen?
På forhånd tusen takk for svar!