Kā filtrēt rindas Pandas DataFrame, pamatojoties uz kolonnu vērtībām

Temp mail SuperHeros
Kā filtrēt rindas Pandas DataFrame, pamatojoties uz kolonnu vērtībām
Kā filtrēt rindas Pandas DataFrame, pamatojoties uz kolonnu vērtībām

Rindu filtrēšana programmā Pandas DataFrames

Pandas ir jaudīga Python bibliotēka datu manipulēšanai un analīzei. Izplatīts uzdevums ir rindu atlase no DataFrame, pamatojoties uz kolonnu vērtībām, līdzīgi kā SQL tabulā SELECT * FROM WHERE kolonnas_nosaukums = some_value.

Šajā rokasgrāmatā ir aprakstītas dažādas metodes, kā to sasniegt Pandas, padarot to viegli efektīvu datu filtrēšanu. Neatkarīgi no tā, vai esat iesācējs vai pieredzējis lietotājs, šie padomi uzlabos jūsu datu apstrādes prasmes.

Pavēli Apraksts
pd.DataFrame(data) Izveido DataFrame no datu vārdnīcas.
df[column_name] Piekļūst kolonnai DataFrame pēc nosaukuma.
df[condition] Filtrē DataFrame, pamatojoties uz kolonnai piemēroto nosacījumu.
print(selected_rows) Konsolē izdrukā DataFrame vai tā apakškopu.
df[df['Age'] >df[df['Age'] > 25] Atlasa rindas, kurās slejas “Vecums” vērtības ir lielākas par 25.
df[df['City'] == 'Chicago'] Atlasa rindas, kurās kolonnas "Pilsēta" vērtības ir vienādas ar "Čikāga".

Izpratne par DataFrame rindu atlasi programmā Pandas

Piedāvātie skripti parāda, kā atlasīt rindas no DataFrame, pamatojoties uz kolonnu vērtībām, izmantojot Python bibliotēku Pandas. Pirmais skripts sākas, importējot Pandas bibliotēku ar import pandas as pd komandu. Pēc tam, izmantojot datu vārdnīcu, tiek izveidots DataFrame paraugs, kas tiek pārveidots par DataFrame ar pd.DataFrame(data) komandu. Pēc tam skripts ilustrē divas rindu atlases metodes: rindu atlase, kurās slejas "Vecums" vērtība ir lielāka par 25, izmantojot df[df['Age'] > 25], un atlasot rindas, kurās slejas "Pilsēta" vērtība ir "Čikāga", izmantojot df[df['City'] == 'Chicago']. Šie filtrētie datu rāmji tiek drukāti, izmantojot print() funkciju, lai parādītu atlasītās rindas.

Otrajam skriptam ir līdzīga struktūra, taču tiek izmantoti dažādi dati un atlases kritēriji. Tas izveido DataFrame ar informāciju par produktu, tostarp slejām “Produkts”, “Cena” un “Krājums”. Tiek atlasītas rindas, kurās cena ir mazāka vai vienāda ar 200 ar df[df['Price'] <= 200], un kur “Krājumi” ir vairāk nekā 40, izmantojot df[df['Stock'] > 40]. Šo skriptu mērķis ir parādīt, kā filtrēt DataFrame rindas, pamatojoties uz konkrētiem nosacījumiem, līdzīgi kā jūs izmantotu SQL vaicājumu, lai atlasītu rindas no tabulas, pamatojoties uz kolonnas vērtību. Izprotot un lietojot šīs komandas, varat efektīvi manipulēt un analizēt datus savos DataFrames.

Rindu atlase DataFrame, izmantojot kolonnu vērtības programmā Pandas

Python ar Pandas bibliotēku

# Importing the necessary library
import pandas as pd

# Creating a sample DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [24, 27, 22, 32, 29],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}
df = pd.DataFrame(data)

# Selecting rows where Age is greater than 25
selected_rows = df[df['Age'] > 25]
print(selected_rows)

# Selecting rows where City is 'Chicago'
chicago_rows = df[df['City'] == 'Chicago']
print(chicago_rows)

Datu filtrēšana DataFrame, pamatojoties uz kolonnu kritērijiem

Python ar Pandas bibliotēku

# Importing pandas library
import pandas as pd

# Creating a sample DataFrame
data = {'Product': ['A', 'B', 'C', 'D', 'E'],
        'Price': [100, 150, 200, 250, 300],
        'Stock': [30, 60, 90, 20, 50]}
df = pd.DataFrame(data)

# Selecting rows where Price is less than or equal to 200
affordable_products = df[df['Price'] <= 200]
print(affordable_products)

# Selecting rows where Stock is more than 40
in_stock = df[df['Stock'] > 40]
print(in_stock)

Uzlabotas metodes DataFrame rindu atlasei programmā Pandas

Papildus pamata filtrēšanai, izmantojot Būla indeksēšanu, Pandas piedāvā uzlabotas metodes rindu atlasei, pamatojoties uz kolonnu vērtībām. Viena spēcīga metode ir izmantot query() funkcija, kas ļauj filtrēt rindas ar vaicājuma izteiksmi, padarot sintaksi tīrāku un bieži vien intuitīvāku. Piemēram, tā vietā, lai izmantotu df[df['Age'] > 25], jūs varat rakstīt df.query('Age > 25'). Šī metode ir īpaši noderīga, strādājot ar sarežģītākiem nosacījumiem vai ja kolonnu nosaukumos ir atstarpes. Turklāt, isin() funkcija ir noderīga, ja vēlaties filtrēt rindas, pamatojoties uz vērtību sarakstu. Piemēram, lai atlasītu rindas, kurās kolonnas “Pilsēta” vērtība ir “Čikāga” vai “Ņujorka”, varat izmantot df[df['City'].isin(['Chicago', 'New York'])].

Vēl viena tehnika ietver loc un iloc indeksētāji. The loc indeksētājs ir balstīts uz etiķetēm, ļaujot atlasīt rindas, pamatojoties uz rindu etiķetēm un kolonnu nosaukumiem iloc ir balstīta uz veselu skaitļu atrašanās vietu, ļaujot atlasīt pēc rindu un kolonnu numuriem. Šī elastība ir īpaši noderīga, lai atlasītu rindas, pamatojoties uz nosacījumu, kas piemērots citai kolonnai. Piemēram, df.loc[df['Age'] > 25, 'Name'] atgriezīs to personu vārdus, kuras ir vecākas par 25 gadiem. Šīs metodes paplašina jūsu rīku komplektu efektīvai datu apstrādei un analīzei programmā Pandas, piedāvājot lasāmāku un apkopējamāku kodu.

Bieži uzdotie jautājumi un atbildes par DataFrame rindu atlasi

  1. Kā es varu atlasīt rindas, pamatojoties uz vairākiem nosacījumiem?
  2. Jūs varat izmantot query() funkciju vai kombinēt nosacījumus ar tādiem loģiskiem operatoriem kā & un |. Piemēram, df[(df['Age'] > 25) & (df['City'] == 'Chicago')].
  3. Vai es varu filtrēt rindas, pamatojoties uz vērtību sarakstu?
  4. Jā, izmantojiet isin() funkciju. Piemēram, df[df['City'].isin(['Chicago', 'New York'])].
  5. Kāda ir atšķirība starp loc un iloc?
  6. loc ir uz etiķetes balstīta, bet iloc ir balstīta uz veselu skaitļu atrašanās vietu. Izmantot loc ar rindu/kolonnu etiķetēm un iloc ar rindu/kolonnu indeksiem.
  7. Kā rindu filtrēšanas laikā var atlasīt noteiktas kolonnas?
  8. Tu vari izmantot loc. Piemēram, df.loc[df['Age'] > 25, ['Name', 'City']].
  9. Kā rīkoties ar trūkstošajām vērtībām, atlasot rindas?
  10. Izmantojiet dropna() funkciju, lai noņemtu rindas ar trūkstošām vērtībām, vai fillna() lai tos aizstātu ar noteiktu vērtību.
  11. Vai varu izmantot regulārās izteiksmes, lai filtrētu rindas?
  12. Jā, str.contains() funkcija ar regex=True parametrs ļauj filtrēt rindas, pamatojoties uz regulārās izteiksmes modeļiem. Piemēram, df[df['Name'].str.contains('^A', regex=True)].
  13. Kā filtrēt rindas, pamatojoties uz indeksu?
  14. Tu vari izmantot loc ar indeksa nosaukumu. Piemēram, df.loc[df.index == 'some_index'].
  15. Ko darīt, ja kolonnu nosaukumos ir atstarpes vai speciālās rakstzīmes?
  16. Izmantojiet query() funkcija, kas var apstrādāt šādus kolonnu nosaukumus ar atzīmes. Piemēram, df.query('`column name` == value').

Pēdējās domas par DataFrame rindu atlases metodēm

Rindu atlase no DataFrame, pamatojoties uz Pandas kolonnu vērtībām, ir būtiska datu manipulācijas prasme. Dažādās apspriestās metodes, tostarp Būla indeksēšana, query(), isin(), un uz etiķetēm balstīta un uz veseliem skaitļiem balstīta indeksācija ar loc un iloc, nodrošina jaudīgus rīkus datu efektīvai filtrēšanai. Šo metožu pārzināšana nodrošina labāku datu analīzi un tīrāku, labāk uzturējamu kodu.