Python Panda-opetusohjelma: DataFrame, päivämääräväli ja käyttö

⚡ Älykäs yhteenveto

Pandas on avoimen lähdekoodin Python kirjasto taulukkomuotoisen datan käsittelyyn. Se tarjoaa Series- ja DataFrame-rakenteet, päivämääräalueet, tarkastusapuohjelmat sekä tässä ohjeessa esitellyt viipalointi-, pudotus-, ketjutus-, lajittelu- ja uudelleennimeämistoiminnot.

  • 🔘 Rakennettu NumPy:lle: Pandas vaatii NumPyn, joka toimittaa jokaisen sarjan ja DataFramen taustalla olevat taulukot.
  • ☑️ Kaksi rakennetta: Sarja tallentaa yhden nimetyn ulottuvuuden; DataFrame tallentaa sekatyyppisiä rivejä ja sarakkeita.
  • Aikavälit: pd.date_range() muodostaa indeksin aloituspäivämäärän, jaksomäärän ja frekvenssin perusteella.
  • 🧪 Tarkista ensin: head(), tail() ja describe() paljastavat muodon, leviämisen ja persentiilit ennen analyysiä.
  • 🛠️ Leikkaa tarkasti: Sulkeiden nimet valitsevat sarakkeet, loc valitsee otsikon mukaan ja iloc valitsee sijainnin mukaan.
  • ⚠️ Versiohuomautus: Taajuusalias M on vanhentunut Pandas 2.2:sta lähtien; nykyisissä julkaisuissa oletetaan ME.

Python Pandas-opetusohjelma: DataFrame, päivämääräalue ja Pandas-sovellusten käyttö

Mitä Pandat ovat Python?

Panda on avoimen lähdekoodin kirjasto, jonka avulla voit suorittaa datan käsittelyä ja analysointia Python, joka kattaa sekä numeeriset taulukot että aikasarjat. Se tarjoaa helpon tavan luoda, käsitellä ja käsitellä tietoja, ja se on rakennettu nuhjuinen, joten NumPyn on oltava läsnä, jotta Pandas toimii.

Miksi käyttää Pandaa?

Tietotieteilijät käyttävät Pandaa vuonna Python seuraavista eduista:

  • Käsittelee helposti puuttuvat tiedot
  • Se käyttää Series-muotoa yksiulotteiselle datalle ja DataFrame-muotoa moniulotteiselle datalle
  • Se tarjoaa tehokkaan tavan leikata tietoja
  • Se tarjoaa joustavan tavan yhdistää, ketjuttaa tai muokata tietoja
  • Se sisältää tehokkaan aikasarjatyökalupakin

Lyhyesti sanottuna Pandas tarjoaa tehokkaita ja helppokäyttöisiä tietorakenteita sekä keinot niiden nopeaan käsittelyyn, minkä vuoksi se ankkuroi useimmat Python tietojen analysointi työtä.

Pandojen asentaminen

Pandas toimitetaan Anacondan ja useimpien hallittujen muistikirjapalveluiden mukana, joten se on yleensä jo asennettuna. Jos tuonti epäonnistuu, jokin alla olevista komennoista lisää sen. Ympäristö on sisäänrakennettu. Kuinka asentaa TensorFlow sisältää myös pandoja.

  • pip: pip install pandas
  • Anaconda: conda install -c anaconda pandas
  • Sisällä a Jupyter muistikirja solu:
import sys
!conda install --yes --prefix {sys.prefix} pandas

Mikä on Pandas DataFrame?

Pandas DataFrame on kaksiulotteinen nimetty tietorakenne, jonka sarakkeet voivat sisältää eri tyyppejä. Se on standarditapa tallentaa tietoja taulukkomuodossa: rivit sisältävät havainnot ja sarakkeet nimeävät tiedot. Esimerkiksi hinta voi olla sarakkeen nimi ja 2, 3, 4 voivat olla hinta-arvot.

Datakehykset ovat tilastotieteilijöille ja muille data-alan ammattilaisille tuttuja. Alla oleva kuva näyttää kyseisen muodon – merkitty rivi-indeksi sivussa ja nimetyt sarakkeet yläosassa.

Pandas DataFrame -asettelu, jossa on merkitty rivi-indeksi ja nimetyt sarakkeet

Mikä on sarja?

Sarja on yksiulotteinen tietorakenne. Se voi sisältää mitä tahansa tietotyyppiä, kuten kokonaislukuja, liukulukuja tai merkkijonoja, ja siitä on hyötyä, kun haluat suorittaa laskutoimituksen tai palauttaa yksiulotteisen taulukon. Sarjassa ei määritelmän mukaan voi olla useita sarakkeita; siinä tapauksessa käytä DataFrame-rakennetta.

Pandas-sarjan konstruktori ottaa seuraavat parametrit:

  • Tiedot: voi olla lista, sanakirja tai skalaariarvo
pd.Series([1., 2., 3.])
0    1.0
1    2.0
2    3.0
dtype: float64

Voit lisätä indeksin indexSe nimeää rivit, ja sen pituuden on oltava yhtä suuri kuin sarakkeen koko.

pd.Series([1., 2., 3.], index=['a', 'b', 'c'])

Alla luot Pandas-sarjan, jonka kolmannelta riviltä puuttuu arvo. Puuttuvat arvot kohdassa Python näytetään muodossa NaNja np.nan NumPy luo sellaisen keinotekoisesti.

pd.Series([1,2,np.nan])

ulostulo

0    1.0
1    2.0
2    NaN
dtype: float64

Luo Pandas DataFrame

Voit muuntaa NumPy-taulukon DataFrameksi käyttämällä pd.DataFrame()Myös päinvastoin on mahdollista: muuntaaksesi DataFramen takaisin taulukoksi, käytä np.array()tai df.to_numpy(), jota nykyinen Pandas-dokumentaatio suosittelee.

## Numpy to pandas
import numpy as np
h = [[1,2],[3,4]] 
df_h = pd.DataFrame(h)
print('Data Frame:', df_h)

## Pandas to numpy
df_h_n = np.array(df_h)
print('Numpy array:', df_h_n)
Data Frame:    0  1
0  1  2
1  3  4
Numpy array: [[1 2]
 [3 4]]

Sanakirja toimii aivan yhtä hyvin syöttölaitteena pd.DataFrame().

dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
Ikä Nimi
0 30 Johannes
1 40 Seppä

Pandasin aluetiedot

Pandasilla on kätevä API päivämäärävälin luomiseen, josta tulee aikasarjan indeksi. Kutsu on muotoa:

pd.date_range(start, periods, freq):

  • Ensimmäinen parametri on aloituspäivämäärä
  • Toinen parametri on jaksojen lukumäärä (valinnainen, jos lopetuspäivä on määritetty)
  • Viimeinen parametri on taajuus: päivä D, kuukausi M ja vuosi Y
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)

ulostulo

Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months
dates_m = pd.date_range('20300101', periods=6, freq='M')
print('Month:', dates_m)

ulostulo

Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')

Versiohuomautus: kuukauden alias M yllä käytetty on vanhentunut Pandas 2.2:sta lähtien ja poistettu Pandas 3.0:sta. Nykyisissä julkaisuissa se on poistettu. freq='ME' kuukauden loppuun mennessä; tuloksena oleva indeksi on identtinen.

Tarkastetaan tietoja

Voit tarkistaa tietojoukon alku- tai loppupään komennolla head() or tail() kutsutaan DataFrameen, kuten alla oleva Pandas-esimerkki osoittaa.

Vaihe 1) Luo satunnainen lukujono NumPy:llä. Sekvensissä on 4 saraketta ja 6 riviä.

random = np.random.randn(6,4)

Vaihe 2) Sitten luot DataFramen Pandasilla.

Käyttää dates_m indeksinä, joten jokaiselle riville annetaan päivämäärää vastaava nimi, ja nimeä neljä saraketta columns Perustelu.

# Create data with date
df = pd.DataFrame(random,
                  index=dates_m,
                  columns=list('ABCD'))

Koska np.random.randn() jos siemenet ovat puutteellisia, luvut poikkeavat tässä tulostetuista. np.random.seed(0) ensin, jos haluat luoda kiinteän joukon.

Vaihe 3) Head-toiminnon käyttäminen

df.head(3)
A B C D
2030-01-31 1.139433 1.318510 -0.181334 1.615822
2030-02-28 -0.081995 -0.063582 0.857751 -0.527374
2030-03-31 -0.519179 0.080984 -1.454334 1.314947

Vaihe 4) Häntäfunktion käyttäminen

df.tail(3)
A B C D
2030-04-30 -0.685448 -0.011736 0.622172 0.104993
2030-05-31 -0.935888 -0.731787 -0.558729 0.768774
2030-06-30 1.096981 0.949180 -0.196901 -0.471556

Vaihe 5) Erinomainen tapa saada käsitys datasta on describe()Se raportoi tietojoukon määrän, keskiarvon, keskiarvon, minimin, maksimin ja prosenttipisteet.

df.describe()
A B C D
laskea 6.000000 6.000000 6.000000 6.000000
tarkoittaa 0.002317 0.256928 -0.151896 0.467601
std 0.908145 0.746939 0.834664 0.908910
minuuttia -0.935888 -0.731787 -1.454334 -0.527374
25% -0.643880 -0.050621 -0.468272 -0.327419
50% -0.300587 0.034624 -0.189118 0.436883
75% 0.802237 0.732131 0.421296 1.178404
max 1.139433 1.318510 0.857751 1.615822

Leikkaa tiedot

Viipalointi hakee rivien tai sarakkeiden osajoukon DataFramesta. Voit käyttää sarakkeen nimeä esimerkiksitract yksi sarake, kuten alla oleva Pandas-esimerkki osoittaa.

## Slice
### Using name
df['A']

2030-01-31   -0.168655
2030-02-28    0.689585
2030-03-31    0.767534
2030-04-30    0.557299
2030-05-31   -1.547836
2030-06-30    0.511551
Freq: M, Name: A, dtype: float64

Useiden sarakkeiden valitsemiseen tarvitset kaksinkertaisen hakasulkeen. [[..,..]]Ensimmäinen pari tarkoittaa, että haluat valita sarakkeita; toinen pari ilmaisee, mitkä sarakkeet palautetaan.

df[['A', 'B']]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Voit viipaloida rivit kaksoispisteellä. Alla oleva koodi palauttaa kolme ensimmäistä riviä.

### using a slice for row
df[0:3]
A B C D
2030-01-31 -0.168655 0.587590 0.572301 -0.031827
2030-02-28 0.689585 0.998266 1.164690 0.475975
2030-03-31 0.767534 -0.940617 0.227255 -0.341532

loc aksessori valitsee sarakkeet nimen perusteella. Kuten tavallista, pilkkua edeltävä arvo tarkoittaa rivejä ja sen jälkeinen arvo sarakkeita. Hakasulkeita tarvitaan useamman kuin yhden sarakkeen valitsemiseen.

## Multi col
df.loc[:,['A','B']]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Useiden rivien ja sarakkeiden valitsemiseen on toinenkin tapa. iloc[] käyttää kokonaislukupositioita sarakenimien sijaan, joten alla oleva koodi palauttaa saman DataFramen kuin yllä.

df.iloc[:, :2]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Pudota sarake

Voit poistaa sarakkeita käyttämällä df.drop(), välittäen nimet columns Perustelu.

df.drop(columns=['A', 'C'])
B D
2030-01-31 0.587590 -0.031827
2030-02-28 0.998266 0.475975
2030-03-31 -0.940617 -0.341532
2030-04-30 0.507350 -0.296035
2030-05-31 1.276558 0.523017
2030-06-30 1.572085 -0.594772

ketju

Voit yhdistää kaksi DataFramea käyttämällä pd.concat()Luo ensin kaksi kehystä.

import numpy as np
df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'],
                     'Age': ['25', '30', '50']},
                    index=[0, 1, 2])
df2 = pd.DataFrame({'name': ['Adam', 'Smith' ],
                     'Age': ['26', '11']},
                    index=[3, 4])  

Yhdistä ne sitten.

df_concat = pd.concat([df1,df2]) 
df_concat
Ikä nimi
0 25 Johannes
1 30 Seppä
2 50 Paavali
3 26 Aatami
4 11 Seppä

Pudota kopiot

Kun tietojoukko sisältää päällekkäisiä tietoja, drop_duplicates() on helppo tapa sulkea pois toistuvat rivit. df_concat sisältää kaksoishavainnon: Smith esiintyy kahdesti kohdassa name sarake.

df_concat.drop_duplicates('name')
Ikä nimi
0 25 Johannes
1 30 Seppä
2 50 Paavali
3 26 Aatami

Lajittele arvot

Voit lajitella kehyksen sort_values(). Ota huomioon, että Age luotiin tässä tekstinä, joten rivit lajitellaan merkkijonojärjestyksessä.

df_concat.sort_values('Age')
Ikä nimi
4 11 Seppä
0 25 Johannes
3 26 Aatami
1 30 Seppä
2 50 Paavali

Nimeä sarakkeet uudelleen

Käyttää rename() nimetä sarake uudelleen Pandasissa. Jokaisessa parissa ensimmäinen arvo on nykyinen sarakkeen nimi ja toinen on uusi.

df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Age_ppl Sukunimi
0 25 Johannes
1 30 Seppä
2 50 Paavali
3 26 Aatami
4 11 Seppä

Panda-menetelmien pikaopas

Tämä taulukko yhdistää jokaisen yleisen tehtävän sen suorittavaan Pandas-metodiin.

Tehtävä Menetelmä
tuo tietoja Lue_csv
luoda sarjoja Sarjat
Luo tietokehys Datakehys
Luo ajanjakso DATE_RANGE
palauta pää pää
paluu häntää pyrstö
Kuvata kuvata
leikkaa nimellä datanimi['sarakkeen nimi']
Leikkaa rivejä käyttäen data_name[0:5]

UKK

Puhelu pd.read_csv() polun tai URLLisää otsikkoriville nimet, käytä eri erotinmerkkiä käyttämällä sep-metodia ja säilytä vain tarvitsemasi sarakkeet käyttämällä usecols-metodia.

isnull() merkitsee ne, dropna() poistaa kyseiset rivit tai sarakkeet ja fillna() korvaa ne vakiolla tai tilastolla, kuten sarakkeen keskiarvolla. Puuttuvat merkinnät tulostuvat NaN-muodossa.

groupby() jakaa rivit ryhmiin avainsarakkeen mukaan, soveltaa kuhunkin ryhmään koostetta, kuten count, sum tai mean, ja yhdistää sitten tulokset uuteen kehykseen.

Luo totuusarvoinen maski ja anna se suluissa, esimerkiksi df[df.Ikä == 30]. Yhdistä maskit et-merkillä ja pystysuoralla operaattoreilla, rivitäping jokainen vertailu suluissa.

pd.merge() yhdistää avainsarakkeen rivejä samalla tavalla kuin SQL join tekee niin, että sen arvoksi asetetaan inner (sisäinen), left (vasen), right (oikea) tai outer (ulkoinen). concat() pinoaa kehyksiä avainten yhdistämisen sijaan.

df.to_csv('out.csv', index=False) kirjoittaa pilkkutiedoston ja df.to_excel('out.xlsx') kirjoittaa laskentataulukon. Dropping Indeksi välttää nimeämättömän ensimmäisen sarakkeen seuraavalla luennalla.

Tekoälyavustajat profiloivat uuden kehyksen, ehdottavat suoritettavaksi sopivia describe-, groupby- ja plot-kutsuja sekä merkitsevät sarakkeet, joissa on parittomia datatyyppejä tai paljon null-arvoja. Vahvistavat jokaisen ehdotuksen raakadataa vasten.

Kyllä. GitHub Copilot täydentää pelkän kommentin toimivaksi Pandas-koodiksi Jupyter solu. RevTarkista datatyypit ja rivimäärät ennen kuin luotat tulokseen.

Tiivistä tämä viesti seuraavasti: