# Kā izmantot Pandas DataFrame, lai ātri apstrādātu tabulas Python

Pandas DataFrame ir Python datu struktūra, ko var izmantot, lai izveidotu un apstrādātu tabulas. Mēs izskaidrojam datu struktūras uzbūvi un tās svarīgākās metodes un īpašības.

## Kā darbojas Pandas DataFrame?

Pandas DataFrames ir Python Pandas bibliotēkas pamatā un nodrošina efektīvu un elastīgu datu analīzi Python. Pandas DataFrame ir **divdimensionāla tabulu datu struktūra** ar **numurētām rindām un marķētām kolonnām**. Šī struktūra ļauj organizēt datus viegli saprotamā un apstrādājamā formā, līdzīgi kā izklājlapu programmās, piemēram, Excel vai [LibreOffice](https://www.libreoffice.org/ "LibreOffice website"). Katra DataFrame kolonna var saturēt dažādus [Python datu tipus](https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/python-datu-tipi/), kas nozīmē, ka DataFrame var uzglabāt **heterogēnus datus**, piemēram, skaitliskas vērtības, virknes un booleanu vērtības vienā tabulā.

Tip Pandas DataFrames balstās uz NumPy masīviem, kas ļauj efektīvi apstrādāt datus un aprēķināt vērtības. Tomēr Panda DataFrames dažos aspektos atšķiras no [NumPy](https://numpy.org/ "NumPy website") datu struktūrām, piemēram, to heterogenitātes un dimensiju skaita ziņā. Tāpēc NumPy datu struktūras ir piemērotas lielu skaitlisko vērtību apstrādei, bet Panda datu struktūras ir piemērotākas vispārējai datu apstrādei.

### Pandas DataFrames struktūra

DataFrame sastāv no trim galvenajām sastāvdaļām: datiem, rindu indeksiem un kolonnu nosaukumiem. Rindu indekss (vai vienkārši indekss) unikāli identificē katru rindu. Pēc noklusējuma rindas tiek indeksētas ar skaitliskām vērtībām, bet tās var aizstāt ar virknēm. Ir svarīgi atzīmēt, ka Pandas DataFrames ir **indeksēti ar nulli**, kas nozīmē, ka indeksi sākas no 0.

[![Image: The structure of a Pandas DataFrame](https://www.ionos.com/lv-lv/digitalguide/fileadmin/_processed_/e/9/csm_pandas-dataframe-structure_0ab3bff2f5.webp "The structure of a Pandas DataFrame")](https://www.ionos.com/lv-lv/digitalguide/fileadmin/DigitalGuide/Schaubilder/pandas-dataframe-structure.png) Pandas DataFrames have a tabular structure and are therefore very similar to Excel or SQL tables.  Note Lai gan Pandas DataFrames ir viena no populārākajām un noderīgākajām Python datu struktūrām, tā nav daļa no pamata valodas un ir **jāimportē atsevišķi**. To var izdarīt, izmantojot `import pandas` vai `from pandas import DataFrame` rindu faila sākumā. Alternatīvi var izmantot `import pandas as pd`, ja vēlaties atsaukties uz moduli ar īsāku nosaukumu (šajā gadījumā “pd”).

## Pandas DataFrames izmantošana

Pandas DataFrames piedāvā dažādas metodes un paņēmienus efektīvai datu apstrādei, analīzei un vizualizācijai. Turpinājumā iepazīsieties ar galvenajiem jēdzieniem un metodēm datu apstrādei, izmantojot Pandas DataFrames.

### Kā izveidot Pandas DataFrame

Ja jau esat saglabājis vēlamos datus Python sarakstā vai Python vārdnīcā, no tiem var viegli izveidot DataFrame. Vienkārši nododiet esošo datu struktūru DataFrame konstruktoram, izmantojot `pandas.DataFrame([data])`. Tas, kā Pandas interpretē jūsu datus, būs atkarīgs no jūsu sniegtās struktūras. Piemēram, varat izveidot Pandas DataFrames no Python saraksta šādi:

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

Kā redzams iepriekšējā piemērā, izmantojot vienkāršus sarakstus, var izveidot tikai DataFrames ar **vienu, nemarķētu kolonnu**. Tāpēc ieteicams izveidot DataFrames no **vārdnīcām, kas satur sarakstus**. Atslēgas tiek interpretētas kā kolonnu nosaukumi, bet saraksti kā saistītie dati. To ilustrē šāds piemērs:

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

Izmantojot šo metodi, DataFrame uzreiz iegūst vēlamo formātu un vēlamās virsrakstus. Tomēr, ja nevēlaties paļauties uz iebūvētajām Python datu struktūrām, varat arī ielādēt datus **no ārēja avota**, piemēram, CSV faila vai [SQL](https://www.ionos.com/lv-lv/digitalguide/serveris/prasmes-un-zinasanas/kas-ir-sql/) datu bāzes. Vienkārši izsauciet atbilstošo Pandas funkciju:

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

Iepriekš minētajā piemērā DataFrames `csv` un `sql` tagad satur visus datus no `data.csv` un SQL tabulas `table`. Izveidojot DataFrame no ārēja avota, varat norādīt papildu informāciju, piemēram, vai skaitliskie indeksi ir jāiekļauj DataFrame vai nē. Uzziniet vairāk par abu funkciju papildu argumentiem [oficiālajā Pandas DataFrame dokumentācijas lapā](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html "Official Pandas DataFrame documentation page").

Tip Lai izveidotu Pandas DataFrame no SQL tabulas, jums ir jāizmanto Pandas kopā ar Python SQL moduli, piemēram, *SQLAlchemy*. Izveidojiet savienojumu ar datu bāzi, izmantojot izvēlēto SQL moduli, un nododiet to `read_sql_query()`.

### Kā attēlot datus Pandas DataFrames

Izmantojot Pandas DataFrames, varat parādīt ne tikai visu tabulu, bet arī atsevišķas rindas un kolonnas. Var izvēlēties konkrētas rindas un kolonnas, kuras vēlaties apskatīt. Šajā piemērā ir parādīts, kā parādīt atsevišķas vai vairākas rindas un kolonnas:

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

Šajā piemērā atsauce uz kolonu tiek veikta, izmantojot tās nosaukumu vienkāršās iekavās, līdzīgi kā Python vārdnīcās piekļūst vērtībām. Savukārt atribūts `loc` tiek izmantots, lai atsauktos uz rindām. Ar `loc` varat arī piemērot loģiskos nosacījumus, lai filtrētu datus. Šis koda bloks parāda, kā izvadīt tikai tās rindas, kurās vērtība „age” ir lielāka par 30:

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

Tomēr varat arī izmantot atribūtu `iloc`, lai atlasītu rindas un kolonnas **atkarībā no to pozīcijas DataFrame**. Piemēram, varat parādīt šūnu, kas atrodas trešajā rindā un ceturtajā kolonnā:

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

### Kā atkārtot rindas ar Pandas DataFrames

Apstrādājot datus Python, bieži ir nepieciešams atkārtot Pandas DataFrames rindas, lai piemērotu vienu un to pašu darbību visiem datiem. Pandas šim nolūkam piedāvā divas metodes: `itertuples()` un `iterrows()`. Katrai metodei ir savas priekšrocības un trūkumi attiecībā uz **veiktspēju un lietotājam draudzīgumu**.

`iterrows()` metode atgriež **indeksa un sērijas kopu** katrai rindai DataFrame. Sērija ir Pandas vai NumPy datu struktūra, kas līdzinās Python sarakstam, bet nodrošina labāku veiktspēju. Jūs varat piekļūt atsevišķiem elementiem sērijā, izmantojot **kolonnas nosaukumu**, kas vienkāršo datu apstrādi.

Lai gan Pandas Series ir efektīvākas nekā Python saraksti, tām joprojām ir zināma veiktspējas slodze. Tāpēc metode `itertuples()` ir īpaši ieteicama **ļoti lieliem DataFrames**. Atšķirībā no `iterrows()`, `itertuples()` atgriež **visu rindu, ieskaitot indeksu**, kā tuples, kas ir efektīvākas nekā Series. Ar tuples var piekļūt atsevišķiem elementiem, izmantojot punktu notāciju, līdzīgi kā piekļūstot objekta atribūtiem.

Vēl viena svarīga atšķirība starp sērijām un tupliem ir tā, ka **tupli nav maināmi**. Tātad, ja vēlaties iterēt DataFrame, izmantojot `itertuples()`, un mainīt vērtības, jums ir jāatsaucas uz DataFrame ar `at` atribūtu un tupla indeksu. Šis atribūts darbojas ļoti līdzīgi `loc`. Šis piemērs ilustrē atšķirības starp `iterrows()` un `itertuples()`:

```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/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/python-pandas-dataframe/](https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/python-pandas-dataframe/) for AI/LLM consumption.