Kaip naudoti Pandas DataFrame, kad greitai tvarkytumėte lenteles Python kalba
Pandas DataFrame yra Python duomenų struktūra, kuri gali būti naudojama lentelių kūrimui ir tvarkymui. Paaiškiname duomenų struktūros sandarą ir svarbiausius jos metodus bei savybes.
Kaip veikia „Pandas DataFrame“?
Pandas DataFrames yra Python Pandas bibliotekos pagrindas, leidžiantis efektyviai ir lanksčiai analizuoti duomenis Python kalba. Pandas DataFrame yra dvimatė lentelinė duomenų struktūra su sunumeruotomis eilutėmis ir paženklintomis stulpeliais. Ši struktūra leidžia duomenis organizuoti lengvai suprantama ir lengvai tvarkoma forma, panašiai kaip skaičiuoklės programose, pvz., Excel ar LibreOffice. Kiekviena DataFrame stulpelyje gali būti įvairių Python duomenų tipų, o tai reiškia, kad DataFrame gali saugoti nevienalytinius duomenis, pavyzdžiui, skaitmenines vertes, eilutes ir boolinius duomenis vienoje lentelėje.
Pandas DataFrames yra pagrįsti NumPy masyvais, kurie leidžia efektyviai tvarkyti duomenis ir apskaičiuoti vertes. Tačiau Panda DataFrames kai kuriais aspektais skiriasi nuo NumPy duomenų struktūrų, pavyzdžiui, savo heterogeniškumu ir matmenų skaičiumi. Dėl šios priežasties NumPy duomenų struktūros yra tinkamos dideliems kiekiams skaitmeninių verčių tvarkyti, o Panda duomenų struktūros yra labiau tinkamos bendram duomenų tvarkymui.
Pandas duomenų rėmelių struktūra
DataFrame turi tris pagrindines sudedamąsias dalis: duomenis, eilučių indeksus ir stulpelių pavadinimus. Eilučių indeksas (arba tiesiog indeksas) unikaliai identifikuoja kiekvieną eilutę. Pagal numatytuosius nustatymus eilutės indeksuojamos skaitmeninėmis reikšmėmis, tačiau jas galima pakeisti eilutėmis. Svarbu atkreipti dėmesį, kad Pandas DataFrames indeksuojami nuo nulio, tai reiškia, kad indeksai prasideda nuo 0.

Nors Pandas DataFrames yra vienos iš populiariausių ir naudingiausių Python duomenų struktūrų, jos nėra bazinės kalbos dalis ir turi būti importuojamos atskirai. Tai daroma naudojant import pandas arba from pandas import DataFrame eilutę failo pradžioje. Taip pat galite naudoti import pandas as pd, jei norite nurodyti modulį trumpesniu pavadinimu (šiuo atveju „pd“).
Pandas DataFrames naudojimas
Pandas DataFrames teikia įvairias technikas ir metodus, skirtus efektyviam duomenų apdorojimui, analizei ir vizualizavimui. Toliau pateikiama informacija apie pagrindines sąvokas ir metodus, skirtus duomenų tvarkymui naudojant Pandas DataFrames.
Kaip sukurti Pandas duomenų rėmelį
Jei jau išsaugojote norimus duomenis Python sąraše arba Python žodyne, galite lengvai sukurti DataFrame iš jų. Tiesiog perduokite esamą duomenų struktūrą DataFrame konstruktoriui naudodami pandas.DataFrame([data]). Kaip Pandas interpretuos jūsų duomenis, priklausys nuo jūsų pateiktos struktūros. Pavyzdžiui, Pandas DataFrames galite sukurti iš Python sąrašo taip:
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 FrankpythonKaip matyti iš pateikto pavyzdžio, naudojant paprastus sąrašus galima kurti tik vienos, nepažymėtos stulpelio DataFrames. Dėl šios priežasties rekomenduojama kurti DataFrames iš žodynų, kuriuose yra sąrašai. Raktai interpretuojami kaip stulpelių pavadinimai, o sąrašai – kaip susiję duomenys. Tai iliustruoja šis pavyzdys:
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.3pythonNaudojant šį metodą, DataFrame iš karto gauna norimą formatą ir norimas antraštes. Tačiau, jei nenorite pasikliauti įdiegtomis Python duomenų struktūromis, taip pat galite įkelti duomenis iš išorinio šaltinio, pvz., CSV failo ar SQL duomenų bazės. Tiesiog iškvieskite atitinkamą Pandas funkciją:
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)pythonPateiktame pavyzdyje duomenų rėmeliai csv ir sql dabar yra visi duomenys iš data.csv ir SQL lentelės table. Kurdami duomenų rėmelį iš išorinio šaltinio, galite nurodyti papildomus duomenis, pavyzdžiui, ar skaitmeniniai indeksai turi būti įtraukti į duomenų rėmelį, ar ne. Daugiau informacijos apie papildomus dviejų funkcijų argumentus rasite oficialioje „Pandas DataFrame“ dokumentacijos puslapyje.
Norėdami sukurti Pandas DataFrame iš SQL lentelės, turite naudoti Pandas kartu su Python SQL moduliu, pvz., SQLAlchemy. Nustatykite ryšį su duomenų baze naudodami pasirinktą SQL modulį ir perduokite jį į read_sql_query().
Kaip rodyti duomenis Pandas DataFrames
Naudodami „Pandas DataFrames“, galite rodyti ne tik visą lentelę, bet ir atskiras eilutes bei stulpelius. Galite pasirinkti konkrečias eilutes ir stulpelius, kuriuos norite peržiūrėti. Toliau pateiktame pavyzdyje parodyta, kaip rodyti atskiras arba kelias eilutes ir stulpelius:
# 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']])pythonPavyzdyje nuoroda į stulpelį daroma naudojant jo pavadinimą viengubose skliaustuose, panašiai kaip Python žodynuose prieinama prie verčių. Tuo tarpu loc atributas naudojamas nuorodai į eilutes. Naudodami loc taip pat galite taikyti logines sąlygas duomenų filtravimui. Toliau pateiktas kodas parodo, kaip išvesti tik tas eilutes, kuriose „amžiaus“ vertė yra didesnė nei 30:
print(df.loc[df['Age'] > 30])pythonTačiau taip pat galite naudoti iloc atributą, kad atrinktumėte eilutes ir stulpelius pagal jų padėtį duomenų rėmelio (DataFrame) struktūroje. Pavyzdžiui, galite parodyti langelį, esantį trečioje eilutėje ir ketvirtame stulpelyje:
print(df.iloc[3, 4])
# Output:
# London
print(df.iloc[[3, 4, 6], 4])
# Output:
# 3 London
# 4 Birmingham
# 6 PrestonpythonKaip kartoti eilutes naudojant Pandas DataFrames
Apdorojant duomenis Python kalba, dažnai reikia kartoti Pandas DataFrames eilučių ciklą, kad ta pati operacija būtų taikoma visiems duomenims. Pandas šiam tikslui siūlo du metodus: itertuples() ir iterrows(). Kiekvienas metodas turi savo privalumų ir trūkumų, susijusių su našumu ir patogumu naudoti.
iterrows() metodas grąžina indeksų ir serijų rinkinį už kiekvieną eilutę duomenų rėmelio. Serija yra Pandas arba NumPy duomenų struktūra, panaši į Python sąrašą, tačiau ji užtikrina geresnį našumą. Galite pasiekti atskirus serijos elementus naudodami stulpelio pavadinimą, o tai supaprastina duomenų tvarkymą.
Nors „Pandas“ serijos yra efektyvesnės nei „Python“ sąrašai, jos vis tiek turi tam tikrą našumo praradimą. Todėl itertuples() metodas ypač rekomenduojamas labai dideliems „DataFrames“. Skirtingai nei iterrows(), itertuples() grąžina visą eilutę, įskaitant indeksą, kaip tuples, kurie yra našesni nei serijos. Naudodami tuples, galite pasiekti atskirus elementus naudodami taško notaciją, panašiai kaip pasiekiate objekto atributus.
Kitas svarbus skirtumas tarp serijų ir tuplų yra tai, kad tuplai nėra keičiami. Taigi, jei norite kartoti DataFrame naudodami itertuples() ir keisti vertes, turite nurodyti DataFrame su at atributu ir tuplo indeksu. Šis atributas veikia labai panašiai kaip loc. Toliau pateiktas pavyzdys iliustruoja skirtumus tarp iterrows() ir 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