Python pandas DataFrame.where() funkcija ir iz­strā­dā­ta, lai palīdzētu ar no­sa­cī­ju­mu datu apstrādi Da­taF­ra­mes. Tā ļauj prog­ram­mē­tā­jiem aizstāt vai maskēt vērtības pandas DataFrame, pa­ma­to­jo­ties uz no­sa­cī­ju­mu.

Kāda ir pandas DataFrame.where() sintakse?

where() funkcija var pieņemt līdz pieciem pa­ra­met­riem un tai ir šāda sintakse:

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)
python

Pie­mē­ro­jot DataFrame, tikai tās vērtības, kas atbilst no­rā­dī­ta­jam no­sa­cī­ju­mam (cond), paliks ne­mai­nī­gas. Visas pārējās vērtības tiks aizstātas ar to, ko no­rā­dī­siet other parametrā.

Kādus pa­ra­met­rus var izmantot ar pandas DataFrame.where()?

Pandas DataFrame.where() pieņem dažādus pa­ra­met­rus, kas atvieglo elastīgu datu pār­val­dī­bu un mo­di­fi­cē­ša­nu:

Parametrs Apraksts No­klu­sē­ju­ma vērtība
cond No­sa­cī­jums, kas jāizpilda, lai DataFrame vērtības paliktu ne­mai­nī­gas
other Vērtība, kas aizstāj vērtības, kas neatbilst no­sa­cī­ju­mam
inplace Ja iestatīts uz True, operācija tieši mainīs DataFrame False
axis Norāda, uz kuru asi attiecas no­sa­cī­jums (axis=0 rindām, axis=1 kolonnām) None
level Nosaka dau­dzin­dek­sa līmeni, kurā no­sa­cī­jums ir pie­mē­ro­jams. None

Kā lietot pandas DataFrame.where()

where() funkcija var būt noderīga dažādos sce­nā­ri­jos, kuros ne­pie­cie­ša­ma no­sa­cī­ju­mu datu apstrāde. Tas var ietvert datu tīrīšanu vai jaunu kolonnu izveidi, pa­ma­to­jo­ties uz no­sa­cī­ju­miem.

Vērtību aiz­stā­ša­na, pa­ma­to­jo­ties uz no­sa­cī­ju­miem

Pieņemsim, ka jums ir DataFrame ar uzņēmuma pār­do­ša­nas re­zul­tā­tiem, un jūs vēlaties parādīt tikai pozitīvos re­zul­tā­tus. Negatīvie rezultāti, savukārt, jāaizstāj ar 0. To var izdarīt ar pandas DataFrame.where(). Vispirms iz­vei­do­sim DataFrame:

import pandas as pd
# Create a sample DataFrame
data = {
    'Region': ['North', 'South', 'East', 'West'],
    'Sales_Q1': [15000, -5000, 3000, -1000],
    'Sales_Q2': [20000, 25000, -7000, 5000]
}
df = pd.DataFrame(data)
print(df)
python

Iepriekš minētais kods rada šādu DataFrame:

Region    Sales_Q1    Sales_Q2
0    North         15000         20000
1    South         -5000         25000
2     East            3000         -7000
3     West         -1000            5000

Iz­man­to­jot where(), varat aizstāt visas negatīvās vērtības ar 0. Pār­lie­ci­nie­ties, ka ir iekļautas tikai kolonnas ar skait­lis­kām vērtībām, citādi tas ne­dar­bo­sies.

# Replacing values using conditions
df_positive = df.copy()
df_positive[['Sales_Q1', 'Sales_Q2']] = df[['Sales_Q1', 'Sales_Q2']].where(df[['Sales_Q1', 'Sales_Q2']] > 0, 0)
print(df_positive)
python

Rezultātā iegūtais DataFrame, df_positive, parāda tikai pozitīvus pār­do­ša­nas re­zul­tā­tus un aizstāj negatīvās vērtības ar 0:

Region    Sales_Q1    Sales_Q2
0    North         15000         20000
1    South                 0         25000
2     East            3000                 0
3     West                 0            5000

Vērtību maskēšana, iz­man­to­jot no­sa­cī­ju­mus

Pandas DataFrame.where() var izmantot arī, lai maskētu vērtības. Tas nozīmē, ka tiks parādītas tikai noteiktas DataFrame daļas. Turp­mā­ka­jā piemērā mēs vēlamies parādīt tikai vērtības, kas pārsniedz noteiktu slieksni (šajā gadījumā 10000). At­ce­rie­ties, ka jums ir jā­pār­lie­ci­nās, ka jūs no­vēr­tē­jat tikai kolonnu ar skait­lis­ka­jiem datiem:

# Only display values over 10000
df_masked = df.copy()
df_masked[['Sales_Q1', 'Sales_Q2']] = df[['Sales_Q1', 'Sales_Q2']].where(df[['Sales_Q1', 'Sales_Q2']] > 10000)
print(df_masked)
python

Rezultātā iegūtais DataFrame, df_masked, parāda tikai vērtības, kas ir lielākas par 10000. NaN tiek izmantots visu pārējo vērtību vietā:

Region    Sales_Q1    Sales_Q2
0    North     15000.0     20000.0
1    South             NaN     25000.0
2     East             NaN             NaN
3     West             NaN             NaN
Go to Main Menu