Kuinka käyttää Pandas DataFrame -sovellusta taulukoiden nopeaan käsittelyyn Pythonissa
Pandas DataFrame on Python-tietorakenne, jota voidaan käyttää taulukoiden luomiseen ja muokkaamiseen. Selitämme tietorakenteen rakenteen sekä sen tärkeimmät menetelmät ja ominaisuudet.
Miten Pandas DataFrame toimii?
Pandas DataFrames ovat Python Pandas -kirjaston ydin ja mahdollistavat tehokkaan ja joustavan data-analyysin Pythonissa. Pandas DataFrame on kaksiulotteinen taulukkomuotoinen datarakenne, jossa on numeroidut rivit ja nimetyt sarakkeet. Tämän rakenteen ansiosta data voidaan järjestää helposti ymmärrettävään ja käsiteltävään muotoon, samanlaiseksi kuin Excel- tai LibreOffice-kaltaisissa taulukkolaskentaohjelmissa. Jokainen DataFrame-taulukon sarake voi sisältää erilaisia Python-tietotyyppejä, mikä tarkoittaa, että DataFrame-taulukkoon voidaan tallentaa heterogeenisiä tietoja – esimerkiksi numeerisia arvoja, merkkijonoja ja boolenaisia arvoja – yhteen taulukkoon.
Pandas DataFrames perustuu NumPy-taulukoihin, jotka mahdollistavat tehokkaan tietojen käsittelyn ja arvojen laskennan. Pandas DataFrames eroaa kuitenkin NumPy-tietorakenteista joissakin suhteissa, esimerkiksi heterogeenisyydessään ja ulottuvuuksien lukumäärässä. Tästä syystä NumPy-tietorakenteet soveltuvat suurten numeeristen arvojen käsittelyyn ja Pandas-tietorakenteet yleiseen tietojen käsittelyyn.
Pandas-tietokehysten rakenne
DataFrame-kehyksessä on kolme pääkomponenttia: data, rivien indeksit ja sarakkeiden nimet. Rivin indeksi (tai yksinkertaisesti indeksi) tunnistaa kunkin rivin yksilöllisesti. Oletuksena rivit indeksoidaan numeerisilla arvoilla, mutta nämä voidaan korvata merkkijonoilla. On tärkeää huomata, että Pandas DataFrames -kehykset ovat nollaindeksoituja, mikä tarkoittaa, että indeksit alkavat 0:sta.

Vaikka Pandas DataFrames ovat yksi suosituimmista ja hyödyllisimmistä Python-tietorakenteista, ne eivät kuulu kielipohjaan, vaan ne on tuotava erikseen. Tämä tehdään tiedoston alussa rivillä import pandas tai from pandas import DataFrame. Vaihtoehtoisesti voit käyttää import pandas as pd, jos haluat viitata moduuliin lyhyemmällä nimellä (tässä tapauksessa “pd”).
Pandas-tietokehysten käyttö
Pandas DataFrames tarjoaa erilaisia tekniikoita ja menetelmiä tehokkaaseen tietojen käsittelyyn, analysointiin ja visualisointiin. Alla kerrotaan Pandas DataFramesin avulla tapahtuvan tietojen käsittelyn keskeisistä käsitteistä ja menetelmistä.
Kuinka luoda Pandas DataFrame
Jos olet jo tallentanut haluamasi tiedot Python-luetteloon tai Python-sanakirjaan, voit helposti luoda niistä DataFrame-kehyksen. Siirrä vain olemassa oleva tietorakenne DataFrame-konstruktoriin käyttämällä pandas.DataFrame([data]). Pandas tulkitsee tietosi sen mukaan, millaisen rakenteen olet antanut. Voit esimerkiksi luoda Pandas DataFrames -kehyksen Python-luettelosta seuraavasti:
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 FrankpythonKuten yllä olevasta esimerkistä voit nähdä, yksinkertaisilla listoilla voit luoda vain DataFrame-taulukoita, joissa on yksi ainoa, nimetön sarake. Tästä syystä on suositeltavaa luoda DataFrame-taulukot sanakirjoista, jotka sisältävät listoja. Avaimet tulkitaan sarakkeiden nimiksi ja listat niihin liittyviksi tiedoiksi. Seuraava esimerkki havainnollistaa tätä:
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.3pythonTällä menetelmällä DataFrame saa välittömästi halutun muodon ja halutut otsikot. Jos et kuitenkaan halua luottaa sisäänrakennettuihin Python-tietorakenteisiin, voit ladata tiedot myös ulkoisesta lähteestä, kuten CSV-tiedostosta tai SQL- tietokannasta. Kutsu vain sopiva Pandas-funktio:
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)pythonYllä olevan esimerkin DataFrames csv ja sql sisältävät nyt kaikki tiedot data.csv:sta ja SQL-taulukosta table. Kun luot DataFrame-kehyksen ulkoisesta lähteestä, voit määrittää lisätietoja, esimerkiksi sen, pitäisikö numeeriset indeksit sisällyttää DataFrame-kehykseen vai ei. Lisätietoja näiden kahden toiminnon lisäargumenteista on Pandas DataFrame -dokumentaatiosivulla.
Luodaksesi Pandas DataFrame -kehyksen SQL-taulukosta, sinun on käytettävä Pandasia yhdessä Python SQL -moduulin, kuten SQLAlchemy, kanssa. Luo yhteys tietokantaan valitsemallasi SQL-moduulilla ja välitä se read_sql_query().
Kuinka näyttää tietoja Pandas DataFrames -sovelluksessa
Pandas DataFrames -sovelluksella voit näyttää paitsi koko taulukon myös yksittäisiä rivejä ja sarakkeita. Voit valita tarkasteltavat rivit ja sarakkeet. Seuraava esimerkki havainnollistaa, miten yksittäisiä tai useita rivejä ja sarakkeita voidaan näyttää:
# 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']])pythonEsimerkissä viittaus sarakkeeseen tehdään käyttämällä sen nimeä yksittäisissä hakasulkeissa, samalla tavalla kuin Python-sanakirjoissa viitataan arvoihin. Sen sijaan loc käytetään viittaamaan riveihin. loc avulla voit myös soveltaa loogisia ehtoja tietojen suodattamiseen. Seuraava koodilohko osoittaa, kuinka tulostetaan vain ne rivit, joissa arvon “age” arvo on suurempi kuin 30:
print(df.loc[df['Age'] > 30])pythonVoit kuitenkin käyttää myös iloc valitaksesi rivejä ja sarakkeita niiden sijainnin perusteella DataFrame-kehyksessä. Voit esimerkiksi näyttää solun, joka on kolmannella rivillä ja neljännessä sarakkeessa:
print(df.iloc[3, 4])
# Output:
# London
print(df.iloc[[3, 4, 6], 4])
# Output:
# 3 London
# 4 Birmingham
# 6 PrestonpythonKuinka iteroida rivejä Pandas DataFrames -kehyksillä
Kun tietoja käsitellään Pythonissa, on usein tarpeen iteroida Pandas DataFrames -taulukon rivit, jotta sama operaatio voidaan soveltaa kaikkiin tietoihin. Pandas tarjoaa tähän tarkoitukseen kaksi menetelmää: itertuples() ja iterrows(). Kummallakin menetelmällä on omat etunsa ja haittansa suorituskyvyn ja käyttäjäystävällisyyden suhteen.
iterrows() palauttaa indeksien ja sarjojen tuple-tyyppisen arvon jokaiselle DataFrame-taulukon riville. Sarja on Pandas- tai NumPy-tietorakenne, joka muistuttaa Python-listaa, mutta tarjoaa paremman suorituskyvyn. Sarjan yksittäisiin elementteihin pääsee käsiksi sarakkeen nimen avulla, mikä yksinkertaistaa tietojen käsittelyä.
Vaikka Pandas-sarjat ovat tehokkaampia kuin Python-luettelot, niillä on silti jonkin verran suorituskykyä heikentäviä tekijöitä. Siksi itertuples() menetelmää suositellaan erityisesti erittäin suurille DataFrame-taulukoille. Toisin kuin iterrows(), itertuples() palauttaa koko rivin indeksin kanssa tupleina, jotka ovat suorituskykyisempiä kuin sarjat. Tupleilla voit käyttää yksittäisiä elementtejä pistekirjoituksella, samalla tavalla kuin objektin attribuutteja.
Toinen tärkeä ero sarjojen ja tuplejen välillä on se, että tupleja ei voi muuttaa. Jos siis haluat iteroida DataFrame-kehyksen käyttämällä itertuples() ja muuttaa arvoja, sinun on viitattava DataFrame-kehykseen at ja tuple-indeksin avulla. Tämä attribuutti toimii hyvin samankaltaisesti kuin loc. Seuraava esimerkki havainnollistaa eroja iterrows() ja itertuples() välillä:
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