Data cleaning and transformation

ખરેખરો data ગંદો આવે છે: duplicated() પુનરાવર્તિત હરોળ પકડે છે, trimws/tolower લખાણ પ્રમાણભૂત કરે છે, હદની તપાસ અશક્ય મૂલ્યો ઉજાગર કરે છે, અને રૂપાંતરણ વિશ્લેષણ થઈ શકે એવાં ખાનાં કાઢે છે: પહેલાં સફાઈ, પછી ગણતરી.

10 min read · 9 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

એ સરેરાશ જે આત્મવિશ્વાસથી ખોટી હતી

કાચા survey પરનો પહેલો ફેરો: સરેરાશ screen time 171 મિનિટ. ડીન માટે તૈયાર?

નજીકથી જુઓ. Roll 117 બે વાર આવે છે (એક form બે વાર scan થયું). એક શહેર " Surat" તરીકે લખાયું છે આગળ જગ્યા સાથે, બીજું "surat": R ત્રણ સુરતને ત્રણ શહેર ગણે છે. અને એક screen-time ની નોંધ કહે છે 1620 મિનિટ: દિવસના સત્તાવીસ કલાક.

તમે શીખેલો દરેક આંકડો કચરાની ખુશીથી સરેરાશ કાઢી આપશે. સફાઈ એ ચમક વગરનું પગલું છે જે ચમકતાં પગલાંને સાચાં બનાવે છે.

Theory

રાંધતાં પહેલાં ધોવું

કોઈ રસોઇયો "વાનગી જ કુશળતાનો ભાગ છે" કહીને ધોયા વગરનાં શાક તપેલીમાં નાખતો નથી.

Data ની સફાઈ એ ધોવાનું છે: બેવડાં કાઢો (કાંકરા), લેબલ પ્રમાણભૂત કરો (છોલો), અશક્ય પર સવાલ કરો (સડેલું). વાનગી (સરેરાશ, SD, charts) ત્યારે જ ભરોસાને લાયક છે જ્યારે ધોવાનું થયું હોય: અને વ્યાવસાયિકો રાંધવા કરતાં ધોવામાં વધુ સમય ગાળે છે. Checklist માં ચાર મથક છે.

Practical

ચાર મથકની સફાઈની હરોળ

survey <- read.csv("survey.csv")

# STATION 1: duplicates
sum(duplicated(survey))            # how many repeat rows? e.g. [1] 1
survey <- survey[!duplicated(survey), ]   # keep first copies only

# STATION 2: inconsistent text
table(survey$city)                 # reveals " Surat", "surat", "Surat"...
survey$city <- trimws(survey$city)  # strip stray spaces
survey$city <- tolower(survey$city) # one consistent case
table(survey$city)                 # confirm: one spelling per city

# STATION 3: impossible values (range check)
survey[survey$screen < 0 | survey$screen > 1440, ]
# roll 121: screen = 1620 (more minutes than a day has!)
survey$screen[survey$screen > 1440] <- NA   # unknown, not zero

# STATION 4: transformation (derived columns, last lesson)
survey$hours <- survey$screen / 60

# save as a NEW versioned file: never overwrite the raw original
write.csv(survey, "survey_clean.csv", row.names = FALSE)

Theory

શોધનાં બે ઓજાર

તમે જે જોયું નથી એ સુધારી શકતા નથી. બે commands નેવું ટકા ગંદકી ઉઘાડી પાડે છે:

  • table(df$city): દરેક જુદું મૂલ્ય એની ગણતરી સાથે: ખોટી જોડણી, ભટકેલી જગ્યાઓ અને case ની અંધાધૂંધી તપાસ માટે હરોળમાં ઊભાં રહે છે. સુધારતાં પહેલાં અને પછી ચલાવો: પછીનું કોષ્ટક તમારો પુરાવો છે.
  • summary(df): દરેક numeric ખાના દીઠ લઘુતમ અને મહત્તમ: -20 નું લઘુતમ કે 1620 નું મહત્તમ data નોંધવાની ભૂલની ચીસ પાડે છે.

ટેવ: દરેક શ્રેણીગત ખાના પર table(), દરેક numeric પર summary(), કોઈ પણ આંકડો તમારા મેજ પરથી નીકળે એ પહેલાં.

Quiz

duplicated(survey) ચાર હરોળ માટે FALSE FALSE TRUE FALSE આપે છે. TRUE નો અર્થ શું, અને survey[!duplicated(survey), ] શું રાખે છે?

  1. હરોળ 3 અગાઉની હરોળનું પુનરાવર્તન છે; ! એ હરોળ 1, 2 અને 4 રાખે છે: પહેલી હાજરી બચે છે, પુનરાવર્તન કપાય છે
  2. હરોળ 3 મૂળ છે અને એને કાઢી નાખવી પડે
  3. હરોળ 1, 2 અને 4 એ હરોળ 3 નાં પુનરાવર્તન છે
  4. Command સલામતી ખાતર ચારેય હરોળ કાઢી નાખે છે
Show the answer

હરોળ 3 અગાઉની હરોળનું પુનરાવર્તન છે; ! એ હરોળ 1, 2 અને 4 રાખે છે: પહેલી હાજરી બચે છે, પુનરાવર્તન કપાય છે

duplicated() બીજી હાજરીથી આગળ TRUE મૂકે છે: પહેલી નકલ FALSE રહે છે, એટલે ! થી ઊલટાવવાથી દરેકની બરાબર એક નકલ બચે છે. વિકલ્પ B સંમેલન ઊલટાવે છે (મૂળ પર ક્યારેય નિશાન લાગતું નથી): આ ભેદ મહત્ત્વનો છે કારણ કે પહેલી રાખવી એ જ ક્રિયાને સલામત બનાવે છે. પહેલાં sum(duplicated(...)) થી ગણવાથી સુધારતાં પહેલાં સમસ્યાનું કદ ખબર પડે છે.

Think first

બે outliers નો ચુકાદો આપો

હદની તપાસની ચર્ચામાંથી બે શંકાસ્પદ screen times બચે છે: roll 121 એ 1620 મિનિટ સાથે, અને roll 108 એ 600 મિનિટ સાથે. Tap કરતાં પહેલાં: કયું સુધારાય/NA થાય, કયું રહે, અને સિદ્ધાંત શું છે?

Show the answer

1620 અશક્ય છે: દિવસમાં 1440 મિનિટ હોય છે: આ data નોંધવાની ભૂલ છે (કદાચ 162 કે 620): મૂળ form હોય તો સુધારો, નહીં તો NA કરો.

600 રહે છે: દસ કલાક અતિશય છે પણ શક્ય છે (કેન્દ્રીય પ્રવૃત્તિના પાઠનો સળંગ જોનારો ખરેખરો હતો).

સિદ્ધાંત: ભૂલો સાફ કરો, outliers રાખો. અશક્ય = કાઢો/સમારો; અસંભવ પણ સાચું = રાખો અને મજબૂત આંકડા (મધ્યસ્થ!) ને એ સંભાળવા દો. અગવડભર્યાં ખરેખરાં મૂલ્યો કાઢી નાખવાં એ સફાઈ નથી: એ બનાવટ છે.

Watch out

સફાઈ કરનારની આચારસંહિતા

કાચી file પર ક્યારેય ન લખો: memory ની નકલ સાફ કરો, survey_clean.csv તરીકે સાચવો: કોઈ પણ તમારી સફાઈ મૂળ પરથી ફરી ચલાવી શકે એવું હોવું જોઈએ (પુનરાવર્તનક્ષમતા).

ખરેખરા outliers ક્યારેય ન કાઢો કારણ કે એ સરેરાશ બગાડે છે: એ મધ્યસ્થનું કામ છે.

તમારા સુધારા સાબિત કરો: પહેલાં/પછીની table() ની જોડી એ પુરાવો છે જે પરીક્ષક (કે ઓડિટર) માંગે છે.

Theory

ખરેખરી નોકરીઓમાં કલાકો ક્યાં જાય છે

કોઈ પણ data analyst ને પૂછો: project ના 60-80% સમય સફાઈમાં જાય છે, અને દરેક કલંકિત "અભ્યાસ પાછો ખેંચાયો" ની કથા પાછળ ગંદો dataset છુપાયેલો હોય છે. તમારી પાસે હવે આખી હરોળ છે: શોધો (table, summary), પુનરાવર્તન કાઢો, પ્રમાણભૂત કરો, હદ તપાસો, રૂપાંતર કરો, આવૃત્તિ સાચવો. આગલો પાઠ આજે survey$screen[...] <- NA થી બનાવેલા મૂલ્યનો સામનો કરે છે: NA ખરેખર શું છે, અને આંકડાશાસ્ત્ર કાણાંની આસપાસ કેવી રીતે ગણે છે.

Summary

Key takeaways

  • ગંદા data પરનું આંકડાશાસ્ત્ર આત્મવિશ્વાસથી ખોટું હોય છે: પહેલાં સફાઈ, પછી ગણતરી.
  • duplicated() પુનરાવર્તન ઉજાગર કરે છે (બીજી નકલથી); df[!duplicated(df), ] પહેલી રાખે છે.
  • trimws વત્તા tolower લખાણ પ્રમાણભૂત કરે છે; પહેલાં/પછીનું table() શોધ અને પુરાવો બંને છે.
  • હદની તપાસ અશક્ય મૂલ્યો પકડે છે (screen > 1440): સુધારો કે NA કરો, ચૂપચાપ ક્યારેય ન રાખો.
  • ભૂલો સાફ કરો, ખરેખરા outliers રાખો: સાચી ચરમસીમા કાઢી નાખવી એ બનાવટ છે.
  • Memory ની નકલ સાફ કરો; નવી આવૃત્તિની file તરીકે સાચવો: કાચું મૂળ પવિત્ર છે.
  • Memory hook: રાંધતાં પહેલાં શાક ધુઓ.

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Data Filtering and cleaning

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Data cleaning and transformation · Statistical Methods and Data Analysis (MDC-03) · Gri-Learn