Kā piemērot nosacījumus pandas DataFrames ar where()
Python pandas DataFrame.where() funkcija ir izstrādāta, lai palīdzētu ar nosacījumu datu apstrādi DataFrames. Tā ļauj programmētājiem aizstāt vai maskēt vērtības pandas DataFrame, pamatojoties uz nosacījumu.
Kāda ir pandas DataFrame.where() sintakse?
where() funkcija var pieņemt līdz pieciem parametriem un tai ir šāda sintakse:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)pythonPiemērojot DataFrame, tikai tās vērtības, kas atbilst norādītajam nosacījumam (cond), paliks nemainīgas. Visas pārējās vērtības tiks aizstātas ar to, ko norādīsiet other parametrā.
Kādus parametrus var izmantot ar pandas DataFrame.where()?
Pandas DataFrame.where() pieņem dažādus parametrus, kas atvieglo elastīgu datu pārvaldību un modificēšanu:
| Parametrs | Apraksts | Noklusējuma vērtība |
|---|---|---|
cond
|
Nosacījums, kas jāizpilda, lai DataFrame vērtības paliktu nemainīgas | |
other
|
Vērtība, kas aizstāj vērtības, kas neatbilst nosacījumam | |
inplace
|
Ja iestatīts uz True, operācija tieši mainīs DataFrame
|
False
|
axis
|
Norāda, uz kuru asi attiecas nosacījums (axis=0 rindām, axis=1 kolonnām)
|
None
|
level
|
Nosaka daudzindeksa līmeni, kurā nosacījums ir piemērojams. | None
|
Kā lietot pandas DataFrame.where()
where() funkcija var būt noderīga dažādos scenārijos, kuros nepieciešama nosacījumu datu apstrāde. Tas var ietvert datu tīrīšanu vai jaunu kolonnu izveidi, pamatojoties uz nosacījumiem.
Vērtību aizstāšana, pamatojoties uz nosacījumiem
Pieņemsim, ka jums ir DataFrame ar uzņēmuma pārdošanas rezultātiem, un jūs vēlaties parādīt tikai pozitīvos rezultātus. Negatīvie rezultāti, savukārt, jāaizstāj ar 0. To var izdarīt ar pandas DataFrame.where(). Vispirms izveidosim 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)pythonIepriekš 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 5000Izmantojot where(), varat aizstāt visas negatīvās vērtības ar 0. Pārliecinieties, ka ir iekļautas tikai kolonnas ar skaitliskām vērtībām, citādi tas nedarbosies.
# 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)pythonRezultātā iegūtais DataFrame, df_positive, parāda tikai pozitīvus pārdošanas rezultā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 5000Vērtību maskēšana, izmantojot nosacījumus
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. Turpmākajā piemērā mēs vēlamies parādīt tikai vērtības, kas pārsniedz noteiktu slieksni (šajā gadījumā 10000). Atcerieties, ka jums ir jāpārliecinās, ka jūs novērtējat tikai kolonnu ar skaitliskajiem 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)pythonRezultā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