Hogyan lehet feltételeket alkalmazni a pandas DataFrames-ben a where() segítségével?
A Python pandas DataFrame.where() függvény célja, hogy segítsen a DataFrames feltételes adatkezelésében. Lehetővé teszi a programozók számára, hogy egy feltétel alapján kicseréljék vagy elfedjék az értékeket egy pandas DataFrame-ben.
Mi a pandas DataFrame.where() szintaxisa?
A where() függvény legfeljebb öt paramétert fogadhat el, és a következő szintaxissal rendelkezik:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)pythonAdatkeretre alkalmazva csak azok az értékek maradnak változatlanok, amelyek megfelelnek a megadott feltételnek (cond). Minden más érték helyébe a other paraméterben megadott érték lép.
Milyen paraméterek használhatók a pandas DataFrame.where()-vel?
A Pandas DataFrame.where() különböző paramétereket fogad el, amelyek megkönnyítik a rugalmas adatkezelést és -módosítást:
| Paraméter | Leírás | Alapértelmezett érték |
|---|---|---|
cond
|
A DataFrame értékek változatlanságának feltétele | |
other
|
Az a érték, amely helyettesíti a feltételnek nem megfelelő értékeket | |
inplace
|
Ha True van állítva, a művelet közvetlenül módosítja a DataFrame-et.
|
False
|
axis
|
Meghatározza, hogy a feltétel melyik tengelyre vonatkozik (axis=0 a sorokhoz, axis=1 az oszlopokhoz)
|
None
|
level
|
Meghatározza a többindex szintjét, amelyre a feltétel vonatkozik. | None
|
A pandák használata DataFrame.where()
A where() funkció számos olyan esetben hasznos lehet, amikor feltételes adatkezelésre van szükség. Ide tartozhat például az adatok tisztítása vagy új oszlopok létrehozása feltételek alapján.
Értékek feltételek alapján történő cseréje
Tegyük fel, hogy van egy DataFrame, amely egy vállalat értékesítési eredményeit tartalmazza, és csak a pozitív eredményeket szeretné megjeleníteni. A negatív eredményeket viszont 0 kell cserélni. Ezt a pandas DataFrame.where() segítségével teheti meg. Először hozzunk létre egy DataFrame-et:
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)pythonA fenti kód a következő DataFrame-et eredményezi:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South -5000 25000
2 East 3000 -7000
3 West -1000 5000where() segítségével az összes negatív értéket 0ra cserélheti. Győződjön meg arról, hogy csak a numerikus értékeket tartalmazó oszlopok szerepelnek, ellenkező esetben nem fog működni.
# 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)pythonAz így kapott DataFrame, df_positive, csak a pozitív értékesítési eredményeket jeleníti meg, és a negatív értékeket 0vel helyettesíti:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South 0 25000
2 East 3000 0
3 West 0 5000Értékek maszkolása feltételek segítségével
A Pandas DataFrame.where() értékek maszkolására is használható. Ez azt jelenti, hogy a DataFrame csak bizonyos részei kerülnek megjelenítésre. A következő példában csak azokat az értékeket szeretnénk megjeleníteni, amelyek egy bizonyos küszöbérték (ebben az esetben 10000) felett vannak. Ne feledje, hogy csak a numerikus adatokat tartalmazó oszlopokat értékelheti:
# 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)pythonAz így kapott DataFrame, df_masked, csak 10000 nagyobb értékeket jeleníti meg. NaN minden más érték helyett használatos:
Region Sales_Q1 Sales_Q2
0 North 15000.0 20000.0
1 South NaN 25000.0
2 East NaN NaN
3 West NaN NaN