# Steg i dataförbehandling: så rensar du affärsdata

> Lär dig stegen i dataförbehandling som gör röriga affärsregister till tillförlitliga insikter, med exempel för små och medelstora företag. Se hur ELECTE automatiserar dem.

Source: https://www.electe.net/sv/post/data-preprocessing-steps

Site guide: https://www.electe.net/sv/llms.txt

Du har hämtat en säljexport som ser färdig ut. Ordrar, kostnader och datum fyller arket. Sedan landar en prognos på ekonomichefens bord och det genomsnittliga ordervärdet har skjutit i höjden, trots att inget i sortimentet har ändrats.

Det hoppet beror ofta på ett förbehandlingsfel, inte på ändrat köpbeteende. Om du fyller tomma priser medan dubbletter av fakturor fortfarande finns kvar i filen, eller skalar hela utdraget innan du har satt undan några rader, lär modellen sig fakta som den inte borde se ännu. De flesta artiklar listar **stegen i dataförbehandling** som separata tekniker som kan tillämpas i valfri ordning. Det är just ordningen som blåser upp resultaten.

Det här är den ordning jag rekommenderar när en analytiker ansvarar för en levande affärsfil. Du får en körordning, de tröskelvärden jag ser som utgångspunkter snarare än lagar, och ett sätt att låsa varje anpassad inställning så att nästa datainläsning följer samma väg.

## Sju steg i dataförbehandling i rätt ordning

En säljexport kan se komplett ut och ändå dölja dubbla fakturarader, tomma enhetskostnader och datum som lagrats i två format. Rensar du de problemen i fel ordning ärver varje senare medelvärde dem.

**Varje steg som lär sig ett tal från datan måste köras efter uppdelningen.** Ett medelvärde, en median eller ett skalningsintervall som beräknas på hela filen låter valideringsrader påverka träningen. Resultatet ser då starkare ut än modellen kommer att vara på nästa månads ordrar.

StegVad du görKlart när1. Profilera och rensaKontrollera antal rader, datatyper och andel nullvärden; ta bort exakta dubbletter; standardisera datum och etiketterRen bastabell med en etikett per kategori2. Dela upp datanBlanda raderna och dela sedan upp dem i tränings- och valideringssetTvå set finns och inga inlärda inställningar har beräknats ännu3. Hantera saknade värdenTa bort rader, ta bort variabeln eller imputera med enbart träningsdataAlla fält är kompletta eller har sina luckor flaggade4. Koda och skapa variablerKonvertera kategorier till tal; bygg kvoter, tidsdelar och glidande medelvärdenEn modellklar variabeltabell med dokumenterade kolumner5. Hantera extremvärdenVerifiera extremvärden och begränsa, transformera eller flagga demExtremvärden är förklarade, inte gissade6. Skala numeriska variablerAnpassa en skalare på träningsdata och tillämpa den på valideringsdataNumeriska kolumner ligger på jämförbara intervall7. Lås pipelinenSpara varje anpassad transformation så att ny data följer samma vägEn repeterbar körning som fungerar för varje ny datainläsning

Säg att en återförsäljare har 12 000 orderrader, varav 900 är dubblerade fakturarader. Om du imputerar saknade priser innan du tar bort dubbletterna räknas samma faktura två gånger och genomsnittet dras bort från prislistan.

> **Praktisk regel:** Gör klart raden du arbetar med innan du beräknar något som nästa rad behöver.

Lägg filen du har öppen mot de sju raderna. Den första raden du inte har slutfört är den enda som är värd att röra i dag.

## Profilera och rensa rå affärsdata

Profilering är ett pass på en timme som en chef hinner klara innan någon öppnar en modell. Rör inte originalfilen och skriv varje ändring i en rensningslogg, så att en ekonomichef kan se varför en summa ändrades.

1. **Räkna rader och kolumner och bekräfta sedan varje typ.** En kostnad som lagras som text går inte att summera, och det ger inget tydligt felmeddelande. Konvertera den innan du litar på en summa.
2. **Beräkna andelen tomma värden i varje kolumn.** En kolumn med mer än 30 % tomma värden går till reglerna för saknade värden i stället för en snabb ifyllnad. Jag skulle ta bort en kolumn helt först när de tomma värdena överstiger 50 % och fältet inte behövs för beslutet.
3. **Ta bort exakta dubbletter, inte liknande rader.** Matcha på fakturanummer, datum och belopp tillsammans. En andra order med ett annat rad-ID är en verklig försäljning. Att radera den för att kund och dag stämmer överens är misstaget som gör att intäkterna understiger de verkliga.
4. **Normalisera format i ett enda svep.** Ett datumformat, en valuta per kolumn och inga överflödiga blanksteg i koder. Blandade format delar en produkt i två serier och förstör alla senare sammanfogningar.
5. **Standardisera kategoribeteckningar.** `UK`, `U.K.` och `United Kingdom` är en och samma marknad. Fyra stavningar av en produktlinje i en treårig e-handelsexport gör lika stor skada. Välj en beteckning och mappa resten till den.

Anta att exporten också lagrar orderdatum som `2024-03-01` ett år och `01/03/2024` ett annat. Tills båda har samma format dubbelräknar ett månadsdiagram mars eller utelämnar den.

### Vad loggen och integritetsrensningen skyddar

Rensningsloggen är en kort tabell: kolumn, regel, antal ändrade rader, person, datum. När ekonomi frågar varför förra marsmånad krympte pekar du på dubblettregeln i stället för att återskapa filen ur minnet.

Innan filen når någon analysplattform tar du bort kundnamn, e-postadresser och betaluppgifter. Du behöver dem inte för att prognostisera efterfrågan, och om de finns kvar i utdraget skapar du ett integritetsproblem som ingen modell kan åtgärda.

Vill du ha en andra åsikt om hur "bra" ser ut för kommersiella utdrag är [Pipecorns insikter om datakvalitet i försäljningsdata](https://pipecorn.com/blog/data-quality-standards) en användbar checklista för identifierare, fullständighet och konsekvens. Använd dem för att avgöra vilka kolumner som är värda att behålla, och gå sedan tillbaka till gränsen för andel tomma värden ovan.

## Dela upp data innan något lärande sker

Uppdelningen är ett staket. Inget som skattar en statistisk storhet hör hemma på hela filen.

För övervakad textklassificering rekommenderar [Googles guide för textklassificering](https://developers.google.com/machine-learning/guides/text-classification/step-3) att man blandar om data före uppdelningen, eftersom den ursprungliga ordningen kan ge skevhet i båda uppsättningarna. Efter omblandningen läggs vanligtvis **80 %** av exemplen i träning och **20 %** i validering. Samma transformationer tillämpas sedan på båda uppsättningarna, men först efter att de har lärts in på träningsraderna.

### Varför en sorterad försäljningsfil ljuger

Exporter kommer ofta sorterade efter datum, region eller kund. Delar du den filen uppifrån och ned tränar du på 2023 medan du validerar på senare delen av 2024. Resultatet följer då kalendern, en kampanjkalender eller en enskild regions mix. Det säger inget om huruvida modellen förstod ordrarna.

Blanda om när varje rad är ett oberoende fall: en avslutad order, ett förlorat konto, ett klassificerat ärende. Blanda inte om när frågan gäller en prognos.

> Behåll tidsordningen vid prognoser. Träna på tidigare månader och testa på senare månader. En omblandning låter modellen se framtiden och kalla det skicklighet.

### Textfält behöver en frekvensgräns

Supportärenden och produktbeskrivningar exploderar till tusentals tokens. I samma arbetsflöde från Google slänger du tokens som förekommer färre än **två** gånger, behåller de **20 000** främsta tokenfunktionerna och rangordnar resten med ett viktighetsmått baserat på F-test. En token som förekommer en enda gång är oftast ett stavfel eller ett engångs-SKU, inte ett mönster som förtjänar en kolumn.

Efter uppdelningen anpassar du varje mappning enbart på träningsdata och tillämpar sedan den frusna mappningen på valideringsdata. Att räkna om ett ordförråd eller en kategorilista på de undanhållna raderna är ännu ett sätt att läcka svaret in i förberedelsen.

## Fyll i saknade värden utan att snedvrida resultaten

Hur ofta ett fält är tomt, och om beslutet behöver det fältet, avgör vad du gör. Intervallen nedan är en praktisk tumregel, inte en lag. En reglerad riskmodell kan förbjuda att rader tas bort som en prognos i detaljhandeln klarar sig utan.

Andel saknade värdenVariabelns betydelseÅtgärdUnder 5 %ValfriTa bort raderna om tillräckligt med data återstår5 % till 30 %LågTa bort variabeln5 % till 30 %HögImputera endast utifrån träningsraderÖver 30 %HögImputera, lägg till en flaggkolumn för saknade värden och undersök varför fältet är tomtÖver 30 %LågTa bort variabeln

Ett fåtal tomma kostnadsfält i en i övrigt komplett orderfil motsvarar första raden. Det skadar mindre att radera de raderna än att hitta på ett pris. Ett sällan använt enkätfält i mellanintervallet är inte värt en påhittad gissning, så kolumnen tas bort. Anställningstid, som du använder för churn, behålls och du uppskattar den.

[Googles riktlinjer för klustring om att förbereda data](https://developers.google.com/machine-learning/clustering/prepare-data) nämner tre praktiska alternativ: ta bort exempel som innehåller saknade värden, ta bort variabeln eller förutsäga de saknade värdena utifrån andra data. Sällsynta luckor kan motivera att man tar bort rader. Frekventa luckor innebär oftast att man tar bort variabeln eller imputerar den.

### Förutsäg luckan i stället för att klistra in en konstant

För ett numeriskt fält tränar du en regression på rader där värdet finns och uppskattar sedan de tomma. Saknad kundålder kan till exempel uppskattas utifrån inkomst och anställningstid i stället för att ersättas med ett enda genomsnitt för hela företaget. Då använder du samband som du redan litar på.

Ordervärden är skevt fördelade. Några få stora grossistorder drar upp **medelvärdet**, så en fyllning med medelvärde får vanliga varukorgar att se rikare ut än de är. **Medianen** ligger nära den typiska ordern och rör sig mindre när en enstaka bulkfaktura dyker upp. Jämför sammanfattande statistik före och efter fyllningen. En stor förskjutning betyder att metoden skriver om verksamheten i stället för att täppa till ett hål.

För kategorier märker du det tomma värdet `Unknown`. Luckan är ofta själva signalen: en kassa som aldrig fångade region, eller en produkt utan leverantörskod. Genom att göra det till en egen nivå behåller du raden och visar modellen att fältet var tomt med avsikt.

Frekventa tomma värden är inte ovanliga i verksamheten. En studie från 2025 om ofullständiga data om vattenförbrukning beskriver en byggnadsdatamängd med **33 888** timposter från februari 2019 till december 2023, med saknade värden för **20 %** av timmarna. Det ligger i det intervall där en generell radborttagning skulle kasta bort för mycket historik ([studien](https://arxiv.org/html/2506.08882v1)).

Anpassa imputeraren endast på träningsrader. [Electes guide till saknade data](https://www.electe.net/post/missing-data-imputation) går igenom valen vid imputering mer i detalj om du vill ha en andra genomgång av metod, inte av ordning.

## Koda kategorier och skapa användbara variabler

Här finns två uppgifter. Gör om etiketter till tal som modellen kan använda, och bygg kolumner som svarar på en affärsfråga som råfälten inte gör.

### Kodning utan falsk rangordning

**One-hot-kodning** passar kategorier med få värden, till exempel fem försäljningsregioner. Varje region blir en egen ja/nej-kolumn, och ingen region är "större" än en annan.

**Ordinal kodning** passar när det finns en verklig ordning, till exempel storlekarna S, M och L. Talen motsvarar en rangordning som verksamheten redan använder.

Tilldela inte 1, 2, 3 till oordnade namn som kanal eller stad. Modellen kommer att tolka en högre kod som mer av något. Den falska rangordningen dyker senare upp som en säker men felaktig koefficient. När ett fält har hundratals nivåer ger one-hot en mycket bred tabell. Gruppera sällsynta nivåer till `Other` innan du kodar, och lär in grupperingen endast på träningsrader.

### Kolumner som svarar på en affärsfråga

Bygg en kort lista kopplad till ett beslut, inte en hög med alla kvoter du kan komma på.

- **Marginalprocent:** `(price − cost) / price` visar om en kampanj fortfarande täcker kostnaden, något som intäkter ensamma inte kan visa.
- **Dagar sedan senaste köp:** en churn-analys behöver aktualitet (recency), inte ännu en kopia av kund-ID:t.
- **Veckodag och månad:** efterfrågeplanering bryr sig om fredagstoppar och säsongsmånader som döljer sig i en fullständig tidsstämpel.
- **Rullande 7-dagarsmedelvärde:** dagliga volymer hoppar fram och tillbaka. Ett veckomedelvärde visar om efterfrågan ökar.
- **Lager-till-försäljning-kvot:** en lagerchef ser en brist växa fram tidigare än vad ett rått lagersaldo tillåter.

Jag skulle börja med tio till femton features som är kopplade till just det beslutet. Ta bort en av två kolumner när de korrelerar över 0,95, eftersom den andra kolumnen upprepar den första. Skriv den affärsmässiga innebörden bredvid kolumnnamnet i dataordlistan. En kodningstabell eller ett rullande medelvärde som lärts in på hela filen, inklusive rader du tänkte hålla utanför, upprepar den läcka du redan stängde ute vid uppdelningen.

## Skala tal och hantera extremvärden

Ett extremt värde är inte automatiskt ett fel. En order på 40 enheter från ett B2B-konto är en riktig försäljning. Flagga den så att den inte dominerar ett medelvärde, och låt den ligga kvar i historiken. Ett enhetspris på 100 000 som skrevs in i stället för 1 000 är ett inmatningsfel. Rätta siffran, behandla det inte som efterfrågan.

### Kontrollera extremvärdet innan du tar bort det

Två kontroller fungerar bra tillsammans. Regeln **1,5 × interkvartilavstånd** markerar punkter långt från kolumnens mitt. En domänkontroll frågar om värdet alls kan existera: negativt lagersaldo, ett datum inom nästa decennium, en rabatt som överstiger försäljningspriset. Verifiera först. Kapa sedan vid den 1:a och 99:e percentilen, använd en logaritmisk transformering på skev intäktsdata, eller lägg till en flagga och behåll det råa talet för rapportering.

> En stororder du tar bort är intäkter du aldrig mer kommer att prognostisera. Ett skrivfel du behåller blir ett pris som modellen tror att kunderna betalar.

Kör sammanfattningen igen efter kapningen. Kolumnens centrum bör knappt flytta sig. Om medianen hoppar gör kapningen för stor skillnad, och då bör du titta på källraderna igen.

### Vilken skalare passar profilen

Skalning hindrar en kolumn med stora enheter, som årsintäkt, från att dränka en kolumn med små enheter, som enheter per order. [Scikit-learns dokumentation om förbehandling](https://scikit-learn.org/stable/modules/preprocessing.html) anger att **StandardScaler** centrerar varje feature kring medelvärdet i träningsmängden och skalar efter varians, och att detta kan fungera dåligt när det finns många extremvärden. **RobustScaler** är ersättaren som använder mer motståndskraftiga skattningar av centrum och spridning.

DataprofilSkalareDärför passar denUngefär symmetrisk, få extremvärdenStandardScalerCentrerar kring medelvärdet och skalar efter variansKraftiga extremvärden, till exempel enstaka storordrarRobustScalerAnvänder median och interkvartilavstånd, som tål extremvärdenVärden behöver ett fast intervall, till exempel betyg från 1 till 5MinMaxScalerMappar värden till 0–1 utan att ändra deras form

Anpassa skalaren (fit) enbart på träningsdata och tillämpa sedan samma anpassning på valideringsdata. Om du anpassar om den på det undanhållna datasetet får extrema valideringsrader avgöra skalan. Vill du veta mer om hur du upptäcker extremvärden innan du väljer åtgärd, läs [ELECTE:s guide om extremvärden](https://www.electe.net/post/outlier-statistica).

## Automatisera pipelinen och kontrollera dess resultat

En rensad fil som ligger i en enda notebook kan driva mellan körningar. En ny fil kan få ett annat imputeringsvärde, en annan kategorikodning eller en annan skala, vilket får en dashboard att ändras även när verksamheten i grunden är densamma.

En pipeline håller den anpassade imputern, kodaren och skalaren samlade och tillämpar samma transformeringar på nya filer. Anpassa dessa steg endast med träningspartitionen. Tillämpa de anpassade inställningarna på validerings- och testdata utan att räkna om dem. [IBM:s text om dataläckage](https://www.ibm.com/think/topics/data-leakage-machine-learning) förklarar varför anpassning av förbehandlingssteg över både tränings- och testdata kan läcka information in i utvärderingen.

### Kontroller efter varje körning

Ett lyckat jobb bekräftar bara att processen kördes. Kontrollera om resultatet fortfarande stämmer med källan och de regler du satte upp:

- **Antal rader:** stäm av den inlästa filen mot exporten och ta hänsyn till loggade dubbletter.
- **Andel nullvärden per kolumn:** undersök en plötslig ökning, som kan betyda att ett källfält har slutat komma in.
- **Värdeintervall:** kontrollera att priser, kvantiteter och datum fortfarande ligger inom godkända gränser.
- **Nya kategorier:** dirigera en tidigare okänd region eller SKU till en definierad grupp i stället för att tyst ta bort den.

För [praktiska exempel på datavalidering](https://www.electe.net/post/data-validation-techniques) kan du se hur kontrollerna tillämpas på affärsfiler. Behandla automatiska resultat som uppskattningar och granska de första omgångarna manuellt innan du använder dem för att utlösa larm.

**ELECTE**, en AI-driven dataanalysplattform för växande företag, kopplas till bokföringsprogram eller en uppladdad fil och utför dataanalys och prognoser utan att du behöver en analytiker. Kunder sparar över 10 timmar i veckan genom att automatisera finansiell analys. Den hjälpen förutsätter att du använder anpassade steg som du kan försvara vid en granskning, i stället för att räkna om dem vid varje uppladdning.

Ta en dataset genom tabellen med sju rader den här veckan och markera vilka steg som fortfarande är manuella. Automatisera ett steg som upprepas, men låt bedömningar, som dubblett kontra äkta återbeställning eller felskrivning kontra storbeställning, ligga kvar under granskning tills reglerna är stabila.

---

ELECTE kopplas till din bokföringsdata eller en filuppladdning, förbereder den och omvandlar den till prognoser och rapporter som du kan gå igenom med ditt team. Om du vill att dessa steg för förbehandling av data tillämpas på samma sätt vid varje inläsning, besök [ELECTE](https://www.electe.net) och se hur plattformen kör hela flödet på dina egna siffror.
