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. Katra DataFrame kolonna var saturēt dažādus Python datu tipus, 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ā.
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 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.

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:
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 FrankpythonKā 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:
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.3pythonIzmantojot š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 datu bāzes. Vienkārši izsauciet atbilstošo Pandas funkciju:
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)pythonIepriekš 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ā.
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:
# 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']])pythonŠ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:
print(df.loc[df['Age'] > 30])pythonTomē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ā:
print(df.iloc[3, 4])
# Output:
# London
print(df.iloc[[3, 4, 6], 4])
# Output:
# 3 London
# 4 Birmingham
# 6 PrestonpythonKā 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():
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