Acest articol a fost publicat ca parte a Blogathon Data Science
Introducere
Ei bine, există o bună posibilitate să poți!
Pentru oamenii de știință de date care folosesc Python ca limbaj de programare principal, pachetul Pandas este un instrument de analiză a datelor obligatoriu. Pachetul Pandas are tot ce are nevoie un cercetător de date și fiecare curs ne-a învățat cum să-l folosim la început. Este atât de mare, puternic și efectuează aproape orice manipulare tabulară pe care ți-o poți imagina. Cu toate acestea, această lățime poate fi uneori un dezavantaj.
Are multe caracteristici frumoase care rezolvă cazuri rare, scenarii diferite.
Unul dintre dezavantajele cheie ale panda este că se luptă cu seturi de date mari, deoarece panda își stochează structurile de date în RAM, care poate deveni insuficientă pe măsură ce dimensiunea datelor crește. Utilizați PySpark sau Dask pentru aceasta.
Chiar dacă pachetul Pandas este utilizat pe scară largă, există încă multe funcții pe care oamenii le pot trece cu vederea, fie pentru că este folosit mai puțin, fie pentru că nu sunt conștienți de existența lui. Această postare intenționează să vă reintroducă aceste caracteristici și să demonstreze că Pandas este mult mai competent decât știai anterior.
Pipe
Pentru a efectua curățarea datelor într-o manieră concisă și compactă la panda, puteți utiliza funcțiile Pipe, care vă permit să combinați mai multe funcții într-o singură operațiune.
De exemplu, dacă doriți să aplicați funcții precum drop_duplicates, encode_categoricals, remove_outliers care acceptă argumentele acestuia.
df_cleaned = (diamonds.pipe(drop_duplicates). pipe(remove_outliers, ['price', 'carat', 'depth']). pipe(encode_categoricals, ['cut', 'color', 'clarity']) )
Factorizează
Această funcție este o alternativă la Sklearns Label Encoder.
# Mind the [0] at the end diamonds["cut_enc"] = pd.factorize(diamonds["cut"])[0] >>> diamonds["cut_enc"].sample(5) 52103 2 39813 0 31843 0 10675 0 6634 0 Nume: cut_enc, dtype: int64
Factorizarea rezultă un tuplu de valori: valoarea codificată și o listă de categorii unice.
valori, unice = pd.factorize(diamonds["cut"], sort=True) >>> values[:10] array([0, 1, 3, 1, 3, 2, 2, 2, 4, 2] , dtype=int64) >>> unic ['Ideal', 'Premium', 'Foarte bine', 'Bine', 'Corect']
exploda
Fotografie de Edewaa Foster on Unsplash
Explode este o funcție cu un nume interesant. Să începem cu un exemplu și apoi cu o explicație:
df = pd.Series([1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]).to_frame("murdar") >>> df
Coloana caracteristică are două rânduri notate cu liste. Acest tip de date este disponibil în sondaje în care câteva întrebări acceptă opțiuni multiple.
>>> df.explode(„murdar”, ignore_index=True)
Această funcție preia o celulă cu o matrice de valori și explodează în mai multe rânduri. Pentru a menține ordinea unui index numeric, utilizați ignore_index ca True.
Între
Pentru caracteristicile numerice de indexare booleană dintr-un interval, iată o funcție utilă:
# Obțineți diamante cu prețuri între 3500 și 3700 de dolari diamante[diamonds["price"].between(3500, 3700, inclusive="nither")].sample(5)
T
DataFrame are un atribut T simplu, cunoscut sub numele de transpunere. Este posibil să nu o folosim des, metoda descrie este utilă în timpul vizualizării cadrelor de date.
>>> boston.describe().T.head(10)
Opțiuni panda
Se pot folosi setările globale ale panda, care ajută la modificarea și modificarea comportamentelor implicite.
>>> dir(pd.options) ['calculare', 'afişare', 'io', 'mode', 'trasare']
Este format din 5 module. Să vedem opțiunile disponibile sub afișaj. Există multe opțiuni disponibile, dar folosesc mai ales max_columns.
>>> dir(pd.options.display) ['chop_threshold', 'max_columns', 'max_colwidth', 'max_info_columns', 'max_info_rows', 'max_rows', ... 'precizie', 'show_dimensions', 'unicode' , „lățime”]
Majoritatea oamenilor folosesc max_columns și precizie
# Eliminați limita pentru afișarea numărului de coloane pd.options.display.max_columns = None # Afișați numai 5 numere după zecimală pd.options.display.precision = 5 # scapă de notația științifică
Convert_dtypes
Cu toții știm că panda au un obicei enervant de a marca unele coloane ca tipuri de date obiect. În loc să le definiți direct tipurile, puteți utiliza metoda convert dtypes, care încearcă să deducă cel mai bun tip de date:
sample = pd.read_csv("data/station_day.csv",usecols=["StationId", "CO", "O3", "AQI_Bucket"]) >>> sample.dtypes StationId obiect CO float64 O3 float64 AQI_Bucket object dtype: obiect >>> sample.convert_dtypes().dtypes StationId șir CO float64 O3 float64 AQI_Bucket șir dtype: obiect
Select_dtypes
Din nume, cred că este clar ce face funcția. Puteți utiliza opțiunile de includere și excludere pentru a specifica coloane care includ sau omit anumite tipuri de date.
Alegeți numai coloane numerice cu np.number, de exemplu:
# Alegeți numai coloane numerice diamonds.select_dtypes(include=np.number).head()
Masca
Această funcție ajută la înlocuirea valorilor în care condiția personalizată nu este îndeplinită.
# Creați eșantion de date de vârstă = pd.Series([55, 52, 50, 66, 57, 59, 49, 60]).to_frame("vârstele") vârste
După efectuarea operației de mai sus.
Min și Max
Deși min și max sunt bine cunoscute, are unele proprietăți mai bune pentru unele cazuri de margine.
index = ["Diamonds", "Titanic", "Iris", "Heart Disease", "Loan Default"] biblioteci = ["XGBoost", "CatBoost", "LightGBM", "Sklearn GB"] df = pd.DataFrame ( {lib: np.random.uniform(90, 100, 5) pentru lib în biblioteci}, index=index ) >>> df
DataFrame fictiv de mai sus arată rezultatele a patru biblioteci diferite de creștere a gradientului pe cinci seturi de date. Căutăm pachetul care s-a descurcat cel mai bine pentru fiecare set de date. Iată cum să o realizați cu max într-un mod elegant:
>>> df.max(axis=1) Diamante 99.52684 Titanic 99.63650 Iris 99.10989 Boli cardiace 99.31627 Împrumut implicit 97.96728 dtype: float64
Cel mai mare și cel mai mic
Cel mai mare și cel mai mic este util pentru a vizualiza valorile N de sus sau ~(N de sus) ale unei variabile.
diamonds.nlargest(5, „preț”)
diamonds.nsmallest(5, „preț”)
Idxmax și Idxmin
Panda returnează cel mai mare/cel mai mic număr atunci când apelați max sau min pe o coloană. Există însă situații în care aveți nevoie de poziția min/max, pe care aceste funcții nu o oferă.
În schimb, puteți utiliza idxmax/idxmin:
>>> diamonds.price.idxmax() 27749 >>> diamonds.carat.idxmin() 14
Value_Counts
O modalitate obișnuită de a găsi procentul valorilor lipsă este de a combina isnull și sum și de a împărți la dimensiunea matricei.
Dar, value_counts cu argumente relevante face același lucru:
housing = pd.read_csv("train.csv") >>> housing["FireplaceQu"].value_counts(dropna=False, normalize=True) NaN 0.47260 Gd 0.26027 TA 0.21438 Fa 0.02260 Ex 0.01644 Semineu:d0.01370 Po 64 Tip: d. floatXNUMX
Tăia
Funcția de clipare ajută la găsirea valorii aberante din afara unui interval și la înlocuirea lor cu limite stricte.
>>> age.clip(50, 60)
At_time și Betweeen_time
Aceste funcții sunt utile în timp ce lucrați cu serii cronologice de granularitate ridicată.
at_time ajută la obținerea de valori la o anumită dată sau oră.
index = pd.date_range("2021-08-01", periods=100, freq="H") df = pd.DataFrame({"col": list(range(100))}, index=index) >> > df.head()
>>> df.at_time(„15:00”)
between_time folosit pentru a prelua rânduri dintr-un interval personalizat.
de la datetime import datetime >>> df.between_time("09:45", "12:00")
Bdate_range
Această funcție ajută la crearea indicilor serii temporale cu frecvența zilelor lucrătoare. Lumea financiară are acest tip de frecvență. Deci, această funcție ar putea fi utilă în momentul reindexării seriilor temporale cu funcția de reindexare.
serie = pd.bdate_range("2021-01-01", "2021-01-31") # O perioadă de o lună >>> len(serie) 21
La şi Iat
Aceste două accesorii sunt substanțial mai rapide decât loc și iloc. Cu toate acestea, au un dezavantaj. Acestea vă permit doar să alegeți sau să înlocuiți o singură valoare la un moment dat:
# [index, label] >>> diamonds.at[234, „cut”] „Ideal” # [index, index] >>> diamonds.iat[1564, 4] 61.2 # Înlocuiește rândul 16541 al coloanei preț >> > diamonds.at[16541, „preț”] = 10000
Argsort
Această funcție ajută la extragerea indicilor care ar sorta o serie de caracteristici.
tips.reset_index(inplace=True, drop=True) sort_idx = tips["total_bill"].argsort(kind="mergesort") # Acum, sortați `tips` pe baza total_bill tips.iloc[sort_idx].head()
Accesor pentru pisici
Panda permite funcții încorporate ale lui Python pe date și șiruri folosind accesorii precum str sau dt.
>>> diamonds.dtypes carat float64 categorie de tăiere categorie de culoare categoria de claritate adâncime float64 tabel float64 preț int64 x float64 y float64 z float64 cut_enc int64 dtype: obiect
Se pot folosi multe funcții speciale folosind accesoriul cat pe coloane categorice. Are funcții precum categorii pentru a găsi unic, rename_categories pentru a redenumi caracteristicile.
diamonds["new_cuts"] = diamonds["cut"].cat.rename_categories(list("ABCDE")) >>> diamonds["new_cuts"].cat.categories Index(['A', 'B', ' C', 'D', 'E'], dtype='obiect')
Verificați acest lucru pentru o listă mai mare de funcții de mai jos accesoriu de pisică.
Stoarce
Strângerea este o funcție utilizată în circumstanțe rare, dar agravante.
Când o singură valoare este returnată dintr-o condiție utilizată pentru a subseta un DataFrame, acesta este unul dintre aceste cazuri. Luați în considerare următorul scenariu:
subset = diamonds.loc[diamonds.index >> subset
Chiar dacă există o singură celulă, returnați DataFrame. Este incomod, deoarece acum trebuie să utilizați.loc atât cu numele coloanei, cât și cu indexul pentru a obține prețul.
Nu trebuie să faci asta dacă știi să strângi. O axă poate fi îndepărtată dintr-un DataFrame sau dintr-o serie cu o singură celulă folosind această funcție. Luați în considerare următorul scenariu:
>>> subset.squeeze() 326
Este posibil să specificați axa de eliminat. Revenise doar scalar acum.
>>> subset.squeeze("coloane") # sau "rânduri" 0 326 Nume: preț, dtype: int64
Rețineți că această funcție funcționează numai pentru Series sau DataFrame cu valori unice.
Excel_writer
Este o clasă generică pentru crearea fișierelor Excel și scrierea DataFrame în ea. Luați în considerare, avem aceste două seturi de date.
# Încărcați două seturi de date diamonds = sns.load_dataset("diamonds") tips = sns.load_dataset("tips") # Scrieți în același fișier Excel cu pd.ExcelWriter("data/data.xlsx") ca scriitor: diamonds.to_excel (writer, sheet_name="diamonds") tips.to_excel(writer, sheet_name="sfaturi")
Are proprietăți pentru a specifica formatul DateTime de utilizat, dacă aveți nevoie de un fișier nou sau modificați unul existent, ce se întâmplă dacă există o foaie. Verifica acest lucru documentaţie pentru mai multe detalii.
Concluzie
Nu este o privire de ansamblu exhaustivă a panda și documentaţie conține mai multe informații despre cod și caracteristici. Vă recomand să experimentați cu diferite variante ale fragmentelor de cod furnizate aici, precum și diferiți parametri. Se poate înțelege pe deplin puterea panda făcând acest lucru.
Biblioteci precum Dask și datatable îi înlocuiesc treptat pe Pandas cu noile lor caracteristici strălucitoare pentru gestionarea seturilor mari de date, Pandas rămâne cel mai utilizat instrument de manipulare a datelor în comunitatea Python științifică a datelor. Datorită cât de bine se potrivește în stiva actuală SciPy, biblioteca servește drept paradigmă pentru alte pachete de urmat și construit.
Sper că ați găsit această postare perspicace și vă mulțumesc pentru lectura.
Mediile prezentate în acest articol nu sunt deținute de Analytics Vidhya și sunt utilizate la discreția autorului.
Legate de
- "
- 100
- 7
- TOATE
- analiză
- Google Analytics
- argumente
- articol
- CEL MAI BUN
- stimularea
- boston
- construi
- apel
- cazuri
- Schimbare
- Curățenie
- cod
- Coloană
- Comun
- comunitate
- Calcula
- Crearea
- de date
- analiza datelor
- știința datelor
- om de știință de date
- Date
- FĂCUT
- Boală
- de dolari
- Margine
- Excel
- experiment
- echitabil
- Caracteristică
- DESCRIERE
- financiar
- First
- urma
- format
- funcţie
- Caritate
- bine
- Crește
- Manipularea
- la indemana
- aici
- Înalt
- Cum
- Cum Pentru a
- HTTPS
- index
- informații
- IT
- Cheie
- limbă
- mare
- învăţare
- Bibliotecă
- Listă
- liste
- încărca
- împrumut
- masina de învățare
- Manipulare
- masca
- Mass-media
- Funcții noi
- numere
- Opţiuni
- Altele
- paradigmă
- oameni
- ţeavă
- putere
- Precizie
- Premium
- prezenta
- preţ
- Programare
- Piton
- RAM
- gamă
- Citind
- REZULTATE
- Ştiinţă
- oamenii de stiinta
- serie
- simplu
- Mărimea
- So
- REZOLVAREA
- Începe
- magazine
- timp
- Sfaturi
- top
- unicode
- us
- valoare
- Vizualizare
- OMS
- în
- fabrică
- lume
- scriitor
- scris
- X