# 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](https://www.libreoffice.org/ "LibreOffice website") taulukkolaskentaohjelmissa. Jokainen DataFrame-taulukon sarake voi sisältää erilaisia [Python-tietotyyppejä](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-tietotyypit/), mikä tarkoittaa, että DataFrame-taulukkoon voidaan tallentaa **heterogeenisiä tietoja** – esimerkiksi numeerisia arvoja, merkkijonoja ja boolenaisia arvoja – yhteen taulukkoon.

Vinkki Pandas DataFrames perustuu NumPy-taulukoihin, jotka mahdollistavat tehokkaan tietojen käsittelyn ja arvojen laskennan. Pandas DataFrames eroaa kuitenkin [NumPy-tietorakenteista](https://numpy.org/ "NumPy website") 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.

[![Kuva: The structure of a Pandas DataFrame](https://www.ionos.com/fi-fi/digitalguide/fileadmin/_processed_/e/9/csm_pandas-dataframe-structure_0ab3bff2f5.webp "The structure of a Pandas DataFrame")](https://www.ionos.com/fi-fi/digitalguide/fileadmin/DigitalGuide/Schaubilder/pandas-dataframe-structure.png) Pandas DataFrames have a tabular structure and are therefore very similar to Excel or SQL tables.  Huomio 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:

```python
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  		Frank
```

Kuten 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ä:

```python
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.3
```

Tä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-](https://www.ionos.com/fi-fi/digitalguide/palvelin/osaaminen/mikae-on-sql/) tietokannasta. Kutsu vain sopiva Pandas-funktio:

```python
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)
```

Yllä 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.](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html "Official Pandas DataFrame documentation page")

Vinkki 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ää:

```python
# 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']])
```

Esimerkissä 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:

```python
print(df.loc[df['Age'] > 30])
```

Voit 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:

```python
print(df.iloc[3, 4]) 
# Output: 
# London
 
print(df.iloc[[3, 4, 6], 4]) 
# Output: 
# 3 London
# 4 Birmingham
# 6 Preston
```

### Kuinka 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ä:

```python
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 output
```


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe/) for AI/LLM consumption.