När du försöker förstå en stor DataFrame i Pandas kan du behöva underställa den efter kolumner och rader. I den här handledningen visar vi de vanligaste användningsfallen för kolumnpartitionering av din DataFrame.
Vi börjar med att ställa in vårt exempel DataFrame, vilket vi kommer att göra genom att köra följande Python-kod i vår favoritmiljö (för enkelhets skull använder jag Anaconda och Jupyter Lab).
import pandas as pd # import the pandas library
languages = ({"language": [ "Python", "C-Sharp", "Javascript","PHP"] ,
"avg_difficulty_level": [3, 2, 2, 1],
"avg_salary": [120, 100, 120, 80],
"applications": [10,15,14,20]})
# Now let's convert our dict to a DataFrame
languages = pd.DataFrame.from_dict(languages)
Låt oss nu titta på våra första rader i Dataframe med metoden head().
languages.head()
Som du kan se är detta en ganska enkel DataFrame som vi kommer att använda som exempel i det här inlägget:
| |
språk |
avg_difficulty_level |
avg_salary |
applikationer |
| 0 |
Pytonorm |
3 |
120 |
10 |
| 1 |
C-Sharp |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Filtrera en enda kolumn
Vi börjar med det enklaste fallet, som är att underställa en kolumn ur vår datauppsättning. Genom att köra följande kommando skapas ett serieobjekt:
Efter namn/etikett
languages["language"]
Utgången är en serie:
0 Python
1 C-Sharp
2 Javascript
3 PHP
Namn: språk, dtype: objekt
type(languages["language"])
pandas.core.series.Series
Efter index
Följande kommando kommer också att returnera en serie som innehåller den första kolumnen
languages.iloc[:,0]
Välja flera kolumner
Vid namn
När Pandas skickar en lista med kolumner returnerar Pandas en DataFrame som innehåller en del av datan.
languages[["language", "applications"]]
| |
språk |
applikationer |
| 0 |
Pytonorm |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Efter etikett (med loc)
df.loc[:,["language","applications"]]
Resultatet blir liknande.
Efter index
Låt oss nu hämta flera kolumner genom att använda indexet:
languages.iloc[: ,[0,3]]
| |
språk |
applikationer |
| 0 |
Pytonorm |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Efter tillstånd
I det här fallet visar vi bara kolumnerna vilket namn matchar ett specifikt uttryck. Vi kommer att använda den ganska praktiska filtermetoden :
languages.filter(axis = 1, like="avg")
Anmärkningar:
- vi kan också filtrera efter ett specifikt reguljärt uttryck (regex).
- Vi kan tillämpa parametern axis=0 för att filtrera efter specifikt radvärde.
Filtrera specifika rader efter villkor
Här är ett ganska enkelt sätt att underställa DataFrame enligt ett radvärde:
languages[(languages["applications"] > 15)]
Vi har bara ett resultat:
languages[(languages["applications"] > 15)]
| |
språk |
avg_difficulty_level |
avg_salary |
applikationer |
| 3 |
PHP |
1 |
80 |
20 |