Kuidas kasutada Pandas DataFrame'i tabelite kiireks töötlemiseks Pythonis
Pandas DataFrame on Python-andmestruktuur, mida saab kasutada tabelite loomiseks ja muutmiseks. Selgitame andmestruktuuri ülesehitust ning selle olulisemaid meetodeid ja omadusi.
Kuidas Pandas DataFrame töötab?
Pandas DataFrames on Python Pandas raamatukogu tuum ja võimaldab tõhusat ja paindlikku andmete analüüsi Pythonis. Pandas DataFrame on kahemõõtmeline tabeliline andmestruktuur, millel on nummerdatud read ja märgistatud veerud. See struktuur võimaldab andmeid organiseerida kergesti mõistetavas ja manipuleeritavas vormis, sarnaselt tabelarvutusprogrammide Excel või LibreOffice-ga. Iga DataFrame’i veerg võib sisaldada erinevaid Python andmetüüpe, mis tähendab, et DataFrame võib salvestada heterogeenseid andmeid – näiteks numbrilisi väärtusi, stringe ja boolesid ühes tabelis.
Pandas DataFrames põhinevad NumPy massiividel, mis võimaldavad andmete tõhusat töötlemist ja väärtuste arvutamist. Pandas DataFrames erinevad NumPy andmestruktuuridest mõnes mõttes, näiteks oma heterogeensuse ja dimensioonide arvu poolest. Seetõttu sobivad NumPy andmestruktuurid suure hulga numbriliste väärtuste töötlemiseks ja Pandas andmestruktuurid sobivad paremini üldiseks andmete töötlemiseks.
Pandas DataFrames’i struktuur
DataFrame koosneb kolmest põhikomponendist: andmed, ridade indeksid ja veergude nimed. Ridade indeks (või lihtsalt indeks) identifitseerib iga rea üheselt. Vaikimisi on read indekseeritud numbriliste väärtustega, kuid need võib asendada stringidega. Oluline on märkida, et Pandas DataFrames on nullindekseeritud, mis tähendab, et indeksid algavad 0-st.

Kuigi Pandas DataFrames on ühed populaarsemad ja kasulikumad Python-andmestruktuurid, ei kuulu need baaskeele juurde ja need tuleb eraldi importida. Seda tehakse faili alguses oleva rea import pandas või from pandas import DataFrame abil. Alternatiivina võite kasutada import pandas as pd, kui soovite viidata moodulile lühema nimega (sel juhul „pd”).
Pandas DataFrames’i kasutamine
Pandas DataFrames pakub mitmesuguseid tehnikaid ja meetodeid andmete tõhusaks töötlemiseks, analüüsimiseks ja visualiseerimiseks. Allpool tutvustatakse Pandas DataFrames’i abil andmete töötlemise põhimõtteid ja meetodeid.
Kuidas luua Pandas DataFrame
Kui olete soovitud andmed juba Python-nimekirja või Python-sõnastikku salvestanud, saate neist hõlpsasti luua DataFrame’i. Lihtsalt edastage olemasolev andmestruktuur DataFrame’i konstruktorile, kasutades pandas.DataFrame([data]). Kuidas Pandas teie andmeid tõlgendab, sõltub teie esitatud struktuurist. Näiteks saate Python-nimekirjast luua Pandas DataFrames järgmiselt:
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 FrankpythonNagu näete eespool toodud näites, saate lihtsate loenditega luua ainult üheainsa, märgistamata veeruga andmeraamistikke. Seetõttu on soovitatav luua andmeraamistikud sõnastikest, mis sisaldavad loendeid. Võtmed tõlgendatakse veerunimedena ja loendid seotud andmetena. Seda illustreerib järgmine näide:
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.3pythonSelle meetodi abil saab DataFrame kohe soovitud formaadi ja pealkirjad. Kui aga ei soovi tugineda Pythoni sisseehitatud andmestruktuuridele, võib andmed laadida ka välisest allikast, näiteks CSV-failist või SQL-andmebaasist. Selleks tuleb lihtsalt kutsuda välja sobiv Pandas-funktsioon:
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)pythonEespool toodud näite andmestikud csv ja sql sisaldavad nüüd kõiki andmeid andmestikust data.csv ja SQL-tabelist table. Välisallikast andmestiku loomisel saate määrata täiendavaid üksikasju, näiteks kas numbrilised indeksid tuleks andmestikku lisada või mitte. Lisateavet kahe funktsiooni täiendavate argumentide kohta leiate Pandas DataFrame’i ametlikult dokumenteerimise lehelt.
SQL-tabelist Pandas DataFrame’i loomiseks peate kasutama Pandast koos Python SQL-mooduliga, näiteks SQLAlchemy. Looge valitud SQL-mooduli abil ühendus andmebaasiga ja edastage see read_sql_query().
Kuidas kuvada andmeid Pandas DataFrames’is
Pandas DataFrames’iga saate kuvada mitte ainult kogu tabeli, vaid ka üksikuid ridu ja veerge. Saate valida vaatamiseks konkreetsed read ja veerud. Järgmine näide illustreerib, kuidas kuvada üksikuid või mitut rida ja veergu:
# 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']])pythonNäites viidatakse veerule, kasutades selle nime ühekordsete sulgudes, sarnaselt sellega, kuidas pääsete ligi väärtustele Python-sõnastikutes. Seevastu atribuuti loc kasutatakse viitamiseks ridadele. loc abil saate rakendada ka loogilisi tingimusi andmete filtreerimiseks. Järgmine koodiblokk näitab, kuidas väljastada ainult need read, kus väärtus „age” on suurem kui 30:
print(df.loc[df['Age'] > 30])pythonKuid saate kasutada ka atribuuti iloc, et valida ridu ja veerge nende asukoha järgi DataFrame’is. Näiteks saate kuvada kolmanda rea ja neljanda veeru lahtri:
print(df.iloc[3, 4])
# Output:
# London
print(df.iloc[[3, 4, 6], 4])
# Output:
# 3 London
# 4 Birmingham
# 6 PrestonpythonKuidas korrata ridu Pandas DataFrames’iga
Pythonis andmeid töödeldes on sageli vaja läbi käia Pandas DataFrames’i read, et rakendada sama operatsiooni kõikidele andmetele. Pandas pakub selleks kahte meetodit: itertuples() ja iterrows(). Mõlemal meetodil on oma eelised ja puudused seoses jõudluse ja kasutajasõbralikkusega.
Meetod iterrows() tagastab DataFrame’i iga rea indeksite ja seeriate tuplid. Seeria on Pandas või NumPy andmestruktuur, mis sarnaneb Python’i loendiga, kuid pakub paremat jõudlust. Seeria üksikutele elementidele pääseb ligi veeru nime abil, mis lihtsustab andmete käitlemist.
Kuigi Pandas Series on tõhusamad kui Python-nimekirjad, kaasneb nendega siiski mõningane jõudluse lisakulu. Seetõttu on meetod itertuples() eriti soovitatav väga suurte andmeraamistikute puhul. Erinevalt meetodist iterrows() tagastab itertuples() kogu rea, sealhulgas indeksid, tuplite kujul, mis on jõudluselt paremad kui Series. Tuplite puhul saate üksikutele elementidele juurde pääseda punktnotatsiooni abil, sarnaselt objekti atribuutidele juurde pääsemisega.
Teine oluline erinevus seeria ja tuplite vahel on see, et tuplid ei ole muutuvad. Seega, kui soovite iteratsiooni läbi viia DataFrame’i kasutades itertuples() ja muuta väärtusi, peate viitama DataFrame’ile atribuudiga at ja tupli indeksiga. See atribuut toimib väga sarnaselt loc. Järgmine näide illustreerib erinevusi iterrows() ja itertuples() vahel:
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