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.

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.
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, kuukausiMja vuosiY
## 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] |

