# 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://fi.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.