Theory
કંટાળાજનક ભાગ આપોઆપ કરાવવો
Placement dataset ની 500 rows પર હાથે EDA કરવું, એટલે કે ખૂટતી કિંમતો ગણવી અને દરેક column ની સરેરાશ કાઢવી, હાથે તો અશક્ય છે અને શરૂઆતથી script લખવી કંટાળાજનક છે. Python ની data libraries એ કામ આપોઆપ કરી આપે છે, અને પાનાં ભરીને થતું કામ બે ચાર લીટીમાં સમેટી લે છે.
આ કામ બે libraries કરે છે: pandas, જે તમને DataFrame નામનું હોશિયાર table આપે છે, અને numpy, જે એની નીચે રહીને ઝડપી સંખ્યાત્મક ગણિત ચલાવે છે. Pandas નો થોડો પરિચય તમને પહેલાં થયો હતો; અહીં તમે એને exploratory વિશ્લેષણ આપોઆપ કરાવવા વાપરો છો. આ પાઠ એવા બે commands બતાવે છે જે આખા dataset નો સારાંશ તરત જ આપી દે છે.
Theory
pandas અને numpy
pandas એ Python માં data વિશ્લેષણનો મુખ્ય કામગરો છે. એનો કેન્દ્રવર્તી પદાર્થ એટલે DataFrame: નામવાળું દ્વિપરિમાણી table, એટલે કે rows અને નામ ધરાવતાં columns, બરાબર code ની અંદરના spreadsheet જેવું. pd.read_csv() વડે તમે CSV file ને સીધી એમાં load કરી શકો છો.
numpy નીચે બેસે છે અને ઝડપી સંખ્યાત્મક arrays તથા ગાણિતિક ક્રિયાઓ પૂરી પાડે છે, જેના પર pandas આધાર રાખે છે. ગણતરીઓ માટે તમે ઘણી વાર numpy સીધું વાપરશો, પણ મોટા ભાગે pandas એને ચૂપચાપ તમારા વતી વાપરી લે છે. બંને મળીને તમને બહુ ઓછા code માં data load કરવા, સાફ કરવા, સારાંશ કાઢવા અને વિશ્લેષણ કરવા દે છે, અને એટલે જ Python માં data નું લગભગ બધું કામ એમના પર ચાલે છે.
Practical
Placement data load કરવો અને એનો સારાંશ કાઢવો
import pandas as pd
import numpy as np
# CSV ને સીધી DataFrame માં load કરો (code ની અંદરનું table)
df = pd.read_csv("placement.csv")
df.info() # columns, એમના data types, અને non-null (ખૂટતી નહીં એવી) ગણતરી
df.describe() # સંખ્યાત્મક columns માટે count, mean, std, min, quartiles, max
# describe() નું પરિણામ (સંખ્યાત્મક columns) આવું દેખાય છે:
# marks projects
# mean 71.0 2.2
# min 55.0 1.0
# max 90.0 4.0This example runs in Gri-Learn on the web, where you can edit it and see the output.
Formula
info() અને describe(): તરત જ EDA
તમારા પહેલા તબક્કાનું મોટા ભાગનું EDA આ બે methods જ કરી આપે છે. df.info() દરેક column, એનો data type અને એની પાસે કેટલી non-null કિંમતો છે એ જણાવે છે, એટલે ખૂટતો data તરત જ નજરે ચડે છે (જે column માં rows કરતાં ઓછી non-null કિંમતો હોય એમાં ખાડા છે).
df.describe() સારાંશ આંકડા ગણે છે, એટલે કે count, સરેરાશ, પ્રમાણિત વિચલન, min, quartiles અને max, અને તે પણ દરેક સંખ્યાત્મક column માટે એકસાથે. એટલે કે એક જ call માં આખા dataset નું univariate વિશ્લેષણ. બંને મળીને, info() તમને રચના અને ખાડા બતાવે છે, અને describe() સંખ્યાત્મક આકાર બતાવે છે, એ પણ થોડી જ ક્ષણોમાં.
Quiz
તમારે તમારા DataFrame ના દરેક સંખ્યાત્મક column ની સરેરાશ, min, max અને quartiles નો એક લીટીનો સારાંશ જોઈએ છે. pandas ની કઈ method એ આપે છે?
- df.info(), કારણ કે એ બધું જ છાપી દે છે
- df.describe(), જે સંખ્યાત્મક columns માટે સારાંશ આંકડા ગણે છે
- pd.read_csv(), કારણ કે એ data load કરે છે
- numpy, કારણ કે એ ગણિત કરે છે
Show the answer
df.describe(), જે સંખ્યાત્મક columns માટે સારાંશ આંકડા ગણે છે
df.describe() દરેક સંખ્યાત્મક column માટે એક જ call માં સારાંશ આંકડા પાછા આપે છે, એટલે કે count, સરેરાશ, પ્રમાણિત વિચલન, min, quartiles અને max, અને એ જ તો માગેલો સારાંશ છે. વિકલ્પ A, એટલે કે df.info(), એના બદલે રચના બતાવે છે: columns, એમના data types અને non-null ગણતરી (ખૂટતો data પકડવા માટે ઉત્તમ), પણ સરેરાશ, min, max કે quartile જેવા આંકડા નહીં. વિકલ્પ C, એટલે કે pd.read_csv(), CSV ને DataFrame માં load કરે છે; એ સારાંશ કાઢતું નથી. વિકલ્પ D, એટલે કે numpy, નીચલા સ્તરની સંખ્યાત્મક arrays અને ગણિત આપે છે, પણ એ DataFrame માટેની એક લીટીની સારાંશ method નથી. વ્યવહારમાં બંનેને જોડીને વાપરો: રચના અને ખાડા માટે info(), અને સંખ્યાત્મક સારાંશ માટે describe().
Think first
સાદા Python loops ને બદલે pandas અને numpy કેમ વાપરવાં?
તમે સામાન્ય Python થી rows પર loop પણ ચલાવી શકો. તો data ના કામ માટે pandas અને numpy આટલાં સારાં કેમ છે? વિચારીને પછી tap કરો.
Show the answer
કારણ કે એ ઝડપી છે, ટૂંકાં છે અને ખાસ data માટે જ બનેલાં છે, જ્યારે સાદા Python loops મોટા datasets માટે ધીમા અને લાંબા પડે છે. અંદરથી numpy સંખ્યાઓને સઘન arrays માં સંઘરે છે અને આખા array પર એકસાથે ક્રિયા કરે છે (એટલે કે નીચલા સ્તરના સુધારેલા code માં લખાયેલી vectorised ક્રિયાઓ), એટલે દસ લાખ સંખ્યાવાળા column ને ઉમેરવું કે એની સરેરાશ કાઢવી એ દસ લાખ વાર ફરતા ધીમા Python loop ને બદલે એક ઝડપી પગલામાં થઈ જાય છે. Pandas એના પર DataFrame બાંધે છે, જ્યાં આખું વિશ્લેષણ, એટલે કે rows ગાળવી, જૂથ પાડવાં, સારાંશ કાઢવો, tables જોડવાં, એ બધું એક બે લીટીના સ્પષ્ટ code માં લખાય છે અને ઝડપથી ચાલે પણ છે. એ જ કામ હાથે લખેલા Python loops થી કરવું હોય તો ઘણી વધારે લીટીઓ થાય, ઘણું ધીમું ચાલે અને ભૂલો થવાની શક્યતા પણ ઘણી વધારે રહે. ઉપરાંત આખું સમૃદ્ધ પર્યાવરણ પણ છે: CSV અને Excel વાંચવાં, ખૂટતી કિંમતો સંભાળવી, આલેખ દોરવા, અને machine learning ની libraries માં data મોકલવો, એ બધું pandas સાથે સહેલાઈથી ભળે છે. એટલે Python નો લગભગ દરેક data વિશ્લેષક pandas અને numpy તરફ કેમ વળે છે એનું કારણ એ છે કે એ ધીમા, ઝીણવટભર્યા અને નીચલા સ્તરના કામને ઝડપી, વાંચી શકાય એવા અને ઊંચા સ્તરની ક્રિયાઓમાં ફેરવી નાખે છે, જેથી તમે નળ-જોડાણ જેવા કામને બદલે વિશ્લેષણ પર ધ્યાન આપી શકો. Data માટે યોગ્ય સાધનો: અભિવ્યક્તિમાં સમૃદ્ધ અને ચાલવામાં ઝડપી.
Summary
Key takeaways
- pandas અને numpy એ Python માં data વિશ્લેષણની પાયાની libraries છે, જે EDA આપોઆપ કરી આપે છે.
- pandas DataFrame આપે છે: નામવાળું દ્વિપરિમાણી table (code ની અંદરના spreadsheet જેવું); CSV ને pd.read_csv() થી load કરો.
- numpy ઝડપી સંખ્યાત્મક arrays અને ગણિત આપે છે, જેના પર pandas બંધાયેલું છે.
- df.info() દરેક column નો data type અને non-null ગણતરી બતાવે છે, જેથી ખૂટતો data નજરે ચડે.
- df.describe() એક જ call માં બધા સંખ્યાત્મક columns માટે count, સરેરાશ, std, min, quartiles અને max આપે છે, અને એ રીતે univariate EDA આપોઆપ કરી આપે છે.
- એ ઝડપી અને ટૂંકાં છે કારણ કે numpy આખા arrays પર એકસાથે ક્રિયા કરે છે (vectorised), જ્યારે Python loops ધીમા પડે છે.
- યાદ રાખવાની કડી: pandas નું DataFrame એટલે table; રચના અને ખાડા માટે info(), સંખ્યાત્મક સારાંશ માટે describe().