Kako uporabljati Pandas DataFrame za hitro manipulacijo tabel v Pythonu
Pandas DataFrame je podatkovna struktura v jeziku Python, ki se lahko uporablja za ustvarjanje in urejanje tabel. Razložimo strukturo podatkovne strukture ter njene najpomembnejše metode in lastnosti.
Kako deluje Pandas DataFrame?
Pandas DataFrames so jedro knjižnice Python Pandas in omogočajo učinkovito in prilagodljivo analizo podatkov v Pythonu. Pandas DataFrame je dvodimenzionalna tabelarna podatkovna struktura z oštevilčenimi vrsticami in označenimi stolpci. Ta struktura omogoča organizacijo podatkov v lahko razumljivi in obdelovalni obliki, podobno kot v programih za delo s preglednicami, kot sta Excel ali LibreOffice. Vsak stolpec v DataFrame lahko vsebuje različne tipe podatkov Python, kar pomeni, da lahko DataFrame shranjuje heterogene podatke – na primer številčne vrednosti, nize in logične vrednosti v eni tabeli.
Pandas DataFrames temeljijo na NumPy nizih, ki omogočajo učinkovito obdelavo podatkov in izračun vrednosti. Vendar se Panda DataFrames v nekaterih pogledih razlikujejo od NumPy podatkovnih struktur, na primer v svoji heterogenosti in številu dimenzij. Zaradi tega so NumPy podatkovne strukture primerne za obdelavo velikih količin numeričnih vrednosti, Panda podatkovne strukture pa so primernejše za splošno obdelavo podatkov.
Struktura podatkovnih okvirjev Pandas
DataFrame ima tri glavne komponente: podatke, indekse vrstic in imena stolpcev. Indeks vrstice (ali preprosto indeks) edinstveno identificira vsako vrstico. Privzeto so vrstice indeksirane s številčnimi vrednostmi, vendar jih je mogoče nadomestiti z nizi. Pomembno je omeniti, da so Pandas DataFrames indeksirani z ničlo, kar pomeni, da se indeksi začnejo pri 0.

Čeprav so Pandas DataFrames med najbolj priljubljenimi in uporabnimi podatkovnimi strukturami v Pythonu, niso del osnovnega jezika in jih je treba uvoziti ločeno. To storite z vrstico import pandas ali from pandas import DataFrame na začetku datoteke. Alternativno lahko uporabite import pandas as pd, če želite sklicevati na modul s krajšim imenom (v tem primeru „pd“).
Uporaba Pandas DataFrames
Pandas DataFrames ponuja različne tehnike in metode za učinkovito obdelavo, analizo in vizualizacijo podatkov. V nadaljevanju boste spoznali ključne koncepte in metode za manipulacijo podatkov z uporabo Pandas DataFrames.
Kako ustvariti Pandas DataFrame
Če ste želene podatke že shranili v seznamu Python ali slovarju Python, lahko iz njih enostavno ustvarite DataFrame. Preprosto prenesite obstoječo strukturo podatkov v konstruktor DataFrame z uporabo pandas.DataFrame([data]). Kako Pandas interpretira vaše podatke, je odvisno od strukture, ki jo zagotovite. Na primer, Pandas DataFrames lahko ustvarite iz seznama Python na naslednji način:
import pandas
lists = ["Ahmed", "Beatrice", "Candice", "Donovan", "Elisabeth", "Frank"]
df = pandas.DataFrame(list)
print(df)
# Output:
# 0
# 0 Ahmed
# 1 Beatrice
# 2 Candice
# 3 Donovan
# 4 Elisabeth
# 5 FrankpythonKot je razvidno iz zgornjega primera, lahko s preprostimi seznami ustvarite le podatkovne okvire z enim samim, neoznačenim stolpcem. Zato je priporočljivo, da podatkovne okvire ustvarite iz slovarjev, ki vsebujejo sezname. Ključi se razlagajo kot imena stolpcev, seznami pa kot povezani podatki. To ponazarja naslednji primer:
import pandas
datA = {
'Name': ['Arthur', 'Bruno', 'Christoph'],
'Age': [34, 30, 55],
'Income': [75000.0, 60000.5, 90000.3],
}
df = pandas.DataFrame(data)
print(df)
# Output:
# Name Age Income
# 0 Arthur 34 75000.0
# 1 Bruno 30 60000.5
# 2 Christoph 55 90000.3pythonS to metodo ima DataFrame takoj želeno obliko in željene naslove. Če pa se ne želite zanašati na vgrajene podatkovne strukture Python, lahko podatke naložite tudi iz zunanjega vira, na primer iz datoteke CSV ali podatkovne zbirke SQL. Preprosto pokličite ustrezno funkcijo Pandas:
import pandas
import sqlalchemy
# DataFrame of CSV:
csv = pandas.read_csv("csv-data/files.csv")
# DataFrame of SQL:
engine = create_engine('postgresql://username:password@localhost:5432/mydatabase')
sql = pandas.read_sql_query('SELECT * FROM table', engine)pythonDataFrames csv in sql v zgornjem primeru zdaj vsebujeta vse podatke iz data.csv in SQL tabele table. Pri ustvarjanju DataFrame iz zunanjega vira lahko določite dodatne podrobnosti, na primer, ali naj se številčni indeksi vključijo v DataFrame ali ne. Več o dodatnih argumentih obeh funkcij lahko izveste na uradni strani dokumentacije Pandas DataFrame.
Da bi ustvarili Pandas DataFrame iz SQL tabele, morate uporabiti Pandas v povezavi z Python SQL modulom, kot je SQLAlchemy. Vzpostavite povezavo z bazo podatkov z izbranim SQL modulom in jo prenesite na read_sql_query().
Kako prikazati podatke v Pandas DataFrames
S Pandas DataFrames lahko prikažete ne le celotno tabelo, ampak tudi posamezne vrstice in stolpce. Izberete lahko določene vrstice in stolpce, ki jih želite prikazati. Naslednji primer prikazuje, kako prikazati posamezne ali več vrstic in stolpcev:
# Output 0-th line
print(df.loc[0])
# Output lines 3 to 6
print(df.loc[3:6])
# Output lines 3 and 6
print(df.loc[[3, 6]])
# Output "Occupation" column
print(df["Occupation"])
# Output "Occupation" and "Age" columns
print(df[["Occupation", "Age"]])
# Selection of multiple rows and columns
print(df.loc[[3, 6], ['Occupation', 'Age']])pythonV primeru se sklic na stolpec izvede z uporabo njegovega imena v enojnih oklepajih, podobno kot pri dostopu do vrednosti v slovarjih Python. Nasprotno pa se atribut loc uporablja za sklic na vrstice. Z loc lahko uporabite tudi logične pogoje za filtriranje podatkov. Naslednji kodni blok prikazuje, kako izpisati samo vrstice, v katerih je vrednost za »starost« večja od 30:
print(df.loc[df['Age'] > 30])pythonVendar lahko uporabite tudi atribut iloc za izbiro vrstic in stolpcev na podlagi njihovega položaja v DataFrame. Na primer, lahko prikažete celico, ki je v tretji vrstici in četrtem stolpcu:
print(df.iloc[3, 4])
# Output:
# London
print(df.iloc[[3, 4, 6], 4])
# Output:
# 3 London
# 4 Birmingham
# 6 PrestonpythonKako ponavljati vrstice s Pandas DataFrames
Pri obdelavi podatkov v Pythonu je pogosto potrebno ponavljati vrstice Pandas DataFrames, da se enaka operacija uporabi za vse podatke. Pandas za ta namen ponuja dve metodi: itertuples() in iterrows(). Vsaka metoda ima svoje prednosti in slabosti glede zmogljivosti in uporabniške prijaznosti.
Metoda iterrows() vrne niz indeksov in serij za vsako vrstico v DataFrame. Serija je podatkovna struktura Pandas ali NumPy, podobna seznamu Python, vendar ponuja boljšo zmogljivost. Do posameznih elementov v seriji lahko dostopate z imenom stolpca, kar poenostavi ravnanje s podatki.
Čeprav so Pandas Series učinkovitejši od Pythonovih seznamov, še vedno prinašajo nekaj dodatnih stroškov glede zmogljivosti. Zato je metoda itertuples() še posebej priporočljiva za zelo velike DataFrames. V nasprotju z iterrows(), itertuples() vrne celotno vrstico, vključno z indeksom, kot tuples, ki so zmogljivejši od Series. S tuples lahko dostopate do posameznih elementov z uporabo pikaste notacije, podobno kot pri dostopu do atributov objekta.
Druga pomembna razlika med serijami in nizi je, da nizi niso spremenljivi. Če torej želite ponoviti DataFrame z uporabo itertuples() in spremeniti vrednosti, morate DataFrame referencirati z atributom at in indeksom niza. Ta atribut deluje zelo podobno kot loc. Naslednji primer ponazarja razlike med iterrows() in itertuples():
import pandas
df = pandas.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Income ': [70000.0, 80000.5, 90000.3]
})
for index, row in df.iterrows():
row['Income'] += 1000
print(f"Index: {index}, Age: {row['Age']}, Income: {row['Income']}")
for tup in df.itertuples():
df.at[tup.Index, 'Income'] += 1000 # Change value directly in the DataFrame using at[]
print(f “Index: {tup.Index}, Age: {tup.Age}, Income: {df.loc[tup.Index, 'Income']}”)
# Both loops have the same outputpython