Subsetting and filtering data

df[rows, columns] data frame ને એકસાથે બંને રીતે કાપે છે: df$screen > 180 જેવી શરતો હરોળ પસંદ કરે છે, નામોનાં vectors ખાનાં પસંદ કરે છે, અને subset() એ જ વાત વાંચી શકાય એવી અંગ્રેજીમાં લખે છે.

9 min read · 9 cards · 2 checks

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


Theory

ડીનને ટૂંકી યાદી જોઈએ છે

ડીન CampusPulse નો સારાંશ વાંચે છે અને સાંકડું કરે છે: "મને ફક્ત 180 મિનિટથી ઉપરના screen time વાળા છાત્રાલયના students દેખાડો: roll numbers અને એમની મિનિટો, બીજું કશું નહીં."

એક હરોળની શરત અને ખાનાંની પસંદગી, એક જ માંગણીમાં. તમે આ આકારનો જવાબ બે વાર આપી ચૂક્યા છો: SQL ના WHERE + SELECT, pandas ના masks + બેવડા કૌંસ.

R નું લખાણ છે વચ્ચે અલ્પવિરામવાળા ચોરસ કૌંસની એક જોડી, અને એ અલ્પવિરામ આખું વ્યાકરણ વહન કરે છે.

Theory

બે ભાગની ઓર્ડરની ચિઠ્ઠી

df[ ___ , ___ ] ને બે ખાલી જગ્યાવાળી ઓર્ડરની ચિઠ્ઠી જેવું વિચારો:

  • અલ્પવિરામની ડાબે: કઈ હરોળ (કયા students).
  • અલ્પવિરામની જમણે: કયાં ખાનાં (એમના વિશે કઈ હકીકતો).
  • કોઈ જગ્યા ખાલી છોડો તો એનો અર્થ એ પરિમાણનું બધું.

df[rows, ]: પસંદ કરેલા students, દરેક હકીકત. df[, cols]: દરેક student, પસંદ કરેલી હકીકતો. અલ્પવિરામ એ ચિઠ્ઠીની ભાગલા રેખા છે: એ ભૂલો અને રસોડું ઓર્ડર ખોટો વાંચે.

Practical

કૌંસનું વ્યાકરણ, પછી subset()

survey <- read.csv("survey.csv")   # roll, city, stay, screen

# rows by NUMBER, all columns (empty after comma)
survey[1:5, ]

# rows by CONDITION: the workhorse
survey[survey$screen > 180, ]

# columns by NAME, all rows (empty before comma)
survey[, c("roll", "screen")]

# both at once: the dean's request
survey[survey$stay == "hostel" & survey$screen > 180,
       c("roll", "screen")]

# membership test with %in%
survey[survey$city %in% c("Surat", "Navsari"), ]

# subset(): same result, reads like English (no survey$ prefixes)
subset(survey, stay == "hostel" & screen > 180,
       select = c(roll, screen))

# keep a result by assigning it
heavy <- subset(survey, screen > 180)
nrow(heavy)

Theory

શરતો: એ જ તર્ક, R ની જોડણીમાં

હરોળની શરતો એ logical vectors છે (syntax ના પાઠનું survey$screen > 180) જે હરોળ પસંદ કરનાર તરીકે વપરાય છે:

  • == સમાનતા ચકાસે છે (એકલો = assign કરે છે: જાણીતી લપસણ).
  • & અને, | કે, ! નહીં: ઘટકે ઘટક, દરેક બાજુ પોતાની પૂરી સરખામણીમાં: survey$screen > 180 & survey$stay == "hostel".
  • %in% સમૂહમાં સભ્યપદ ચકાસે છે: R નું IN.

અનુવાદનું કોષ્ટક: હરોળની શરત = SQL નું WHERE = pandas નું mask; ખાનાંની ખાલી જગ્યા / select = SQL ની SELECT ની યાદી. ત્રીજી ભાષા, એ જ બે ચાલ.

Quiz

એક student survey[survey$screen > 180] (અલ્પવિરામ વગર) ટાઈપ કરે છે, ભારે screen time વાળી હરોળની અપેક્ષાએ. R એ શું સમજ્યું?

  1. અલ્પવિરામ વગર, R એને હરોળના ગાળણને બદલે ખાનાંની પસંદગી ગણે છે: બે ખાલી જગ્યાવાળી ચિઠ્ઠીને એનો અલ્પવિરામ જોઈએ: survey[survey$screen > 180, ]
  2. એ એકસરખું જ ચાલે છે: અલ્પવિરામ મરજિયાત શૈલી છે
  3. એ મળતી હરોળ કાઢી નાખે છે
  4. R data frame ને screen time પ્રમાણે ક્રમમાં ગોઠવે છે
Show the answer

અલ્પવિરામ વગર, R એને હરોળના ગાળણને બદલે ખાનાંની પસંદગી ગણે છે: બે ખાલી જગ્યાવાળી ચિઠ્ઠીને એનો અલ્પવિરામ જોઈએ: survey[survey$screen > 180, ]

Data frame પર એક જ argument વાળા કૌંસ ખાનાં પસંદ કરે છે, એટલે R logical vector ને ખાનું પસંદ કરનાર તરીકે વાપરવાનો પ્રયાસ કરે છે: ખોટાં ખાનાં કે ભૂલ, ધારેલી હરોળ ક્યારેય નહીં. હરોળ/ખાનાનું વ્યાકરણ સંપૂર્ણપણે એ અલ્પવિરામમાં વસે છે: ડાબે = હરોળ, જમણે = ખાનાં, ખાલી = બધું. df[condition, ] છેલ્લે અલ્પવિરામ અને જગ્યા સાથે લખવાની ટેવ આ bug ને અશક્ય બનાવે છે.

Think first

ડીનની માંગણી, ત્રણ રીતે

ડીનની માંગણી (screen > 180 વાળા છાત્રાલયના students; ફક્ત roll અને screen) આમાં લખો: (1) R ના કૌંસ, (2) R નું subset(), (3) BCA303માં તમે શીખેલું SQL. Tap કરતાં પહેલાં ત્રણેય લખો.

Show the answer

1. survey[survey$stay == "hostel" & survey$screen > 180, c("roll", "screen")]

2. subset(survey, stay == "hostel" & screen > 180, select = c(roll, screen))

3. SELECT roll, screen FROM survey WHERE stay = 'hostel' AND screen > 180;

ત્રણ જોડણી, એક વિચાર: હરોળ ગાળો, ખાનાં પસંદ કરો. જો ત્રણેય જુદા લહેકામાં એક જ વાક્ય જેવાં લાગે, તો ખ્યાલ ઊતરી ગયો છે: એ જ ઓળખ interviews ચકાસે છે.

Watch out

ગાળણની ચાર લપસણ

ખૂટતો અલ્પવિરામ: df[condition, ]: ડાબે ખાલી એટલે હરોળ, જમણે ખાલી એટલે ખાનાં, હંમેશા.

= સામે ==: શરતો == થી સરખાવે છે; કૌંસની અંદર એકલો = ભૂલ છે કે અકસ્માત.

'and' અસ્તિત્વમાં નથી: R ને & અને | જોઈએ, એક જ ampersand (&& એકલાં મૂલ્યો માટે છે, vectors માટે નહીં).

Assign ન કરેલાં પરિણામ અદૃશ્ય થાય છે: ગાળણ છાપીને ભૂલી જાય છે: heavy <- subset(...) થી સાચવો.

Theory

ગાળણ આગળના બધાને ખવડાવે છે

હવેથી તમે જે પણ આંકડો ગણો છો એ ખરેખર "કોઈ ઉપસમૂહનો આંકડો" છે: છાત્રાલયવાળાનો સરેરાશ screen time, વર્ષ 3નું SD, દરેક શહેરનો boxplot. કાપવું એ આંકડાશાસ્ત્રનો સંબંધવાચક શબ્દ છે. આગલા પાઠ: ખાનાં ઉમેરવાં અને નામ બદલવાં (survey ને વ્યુત્પન્ન variables મળે છે), પછી સફાઈ: જ્યાં તમારી શરતોએ ચૂપચાપ છોડી દીધેલાં NA મૂલ્યો આખરે ન્યાયનો સામનો કરે છે.

Summary

Key takeaways

  • df[rows, cols]: અલ્પવિરામની ડાબે હરોળ પસંદ થાય, જમણે ખાનાં, ખાલી એટલે બધું.
  • હરોળ નંબરથી (1:5), શરતથી (df$screen > 180), ખાનાં નામોના vector થી.
  • શરતો & | ! થી જોડો, == થી સરખાવો, %in% થી સભ્યપદ ચકાસો.
  • subset(df, શરત, select = cols) એ જ વાત df$ ના prefix વગર કહે છે.
  • ભાત = SQL WHERE + SELECT = pandas mask + ખાનાંની યાદી: ત્રીજી ભાષા, એ જ વિચાર.
  • ગાળેલાં પરિણામ assign કરો નહીં તો એ છપાઈને અદૃશ્ય થાય છે.
  • 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

Subsetting and filtering data · Statistical Methods and Data Analysis (MDC-03) · Gri-Learn