Python Panda's-tutorial: DataFrame, datumbereik, gebruik van panda's

Wat is Panda's Python?

Pandas is een open-sourcebibliotheek waarmee u gegevensmanipulatie en -analyse kunt uitvoeren in Python. Panda's Python-bibliotheek biedt gegevensmanipulatie en gegevensbewerkingen voor numerieke tabellen en tijdreeksen. Panda's bieden een gemakkelijke manier om gegevens te creëren, te manipuleren en te bewerken. Het is bovenop NumPy gebouwd, wat betekent dat het NumPy nodig heeft om te kunnen werken.

Waarom Panda's gebruiken?

Datawetenschappers maken voor hun onderzoek gebruik van Panda's in Pythonwing voordelen:

  • Kan gemakkelijk ontbrekende gegevens verwerken
  • Het gebruikt Serie voor eendimensionale datastructuur en DataFrame voor multidimensionale datastructuur
  • Het biedt een efficiënte manier om de gegevens te segmenteren
  • Het biedt een flexibele manier om de gegevens samen te voegen, samen te voegen of opnieuw vorm te geven
  • Het bevat een krachtige tijdreekstool om mee te werken

Kortom, Pandas is een nuttige bibliotheek gegevensanalyse. Het kan worden gebruikt voor het manipuleren en analyseren van gegevens. Panda's bieden krachtige en gebruiksvriendelijke datastructuren, evenals de middelen om snel bewerkingen op deze structuren uit te voeren.

Hoe Panda's installeren?

In deze Python Pandas-tutorial leren we nu hoe we Pandas in Python kunnen installeren.

Raadpleeg onze tutorial om de Pandas-bibliotheek te installeren Hoe TensorFlow te installeren. Pandas wordt standaard geïnstalleerd. In afgelegen gevallen zijn panda's niet geïnstalleerd-

Je kunt Pandas installeren met:

  • Anaconda: conda install -c anaconda panda's
  • In Jupyter Notitieboekje :
import sys
!conda install --yes --prefix {sys.prefix} pandas

Wat is een Pandas-dataframe?

Panda's DataFrame is een tweedimensionale array met een gelabelde gegevensstructuur met verschillende kolomtypen. Een DataFrame is een standaardmanier om gegevens in tabelvorm op te slaan, met rijen om de informatie op te slaan en kolommen om de informatie een naam te geven. De prijs kan bijvoorbeeld de naam van een kolom zijn en 2,3,4 kunnen de prijswaarden zijn.

Data Frame is goed bekend bij statistici en andere databeoefenaars.

Hieronder een foto van een Pandas dataframe:

Panda's DataFrame

Wat is een serie?

Een reeks is een eendimensionale gegevensstructuur. Het kan elke datastructuur hebben, zoals geheel getal, float en string. Dit is handig als u berekeningen wilt uitvoeren of een eendimensionale array wilt retourneren. Een reeks kan per definitie niet meerdere kolommen hebben. Gebruik voor het laatste geval de dataframestructuur.

Python Pandas Series heeft vervolgwing parameters:

  • Gegevens: kan een lijst, woordenboek of scalaire waarde zijn
pd.Series([1., 2., 3.])
0    1.0
1    2.0
2    3.0
dtype: float64

U kunt de index toevoegen met index. Het helpt om de rijen een naam te geven. De lengte moet gelijk zijn aan de grootte van de kolom

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

Hieronder maak je een Panda-serie met een ontbrekende waarde voor de derde rij. Let op, ontbrekende waarden in Python worden genoteerd als “NaN.” Je kunt numpy gebruiken om ontbrekende waarde kunstmatig te creëren: np.nan

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

uitgang

0    1.0
1    2.0
2    NaN
dtype: float64

Maak Panda's DataFrame

In deze Pandas DataFrame-tutorial leren we nu hoe u een Python Pandas-dataframe kunt maken:

U kunt een numpy-array converteren naar een panda-dataframe met pd.Data frame(). Het tegenovergestelde is ook mogelijk. Om een ​​Panda Data Frame naar een array te converteren, kunt u np.array() gebruiken

## 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]]

U kunt ook een woordenboek gebruiken om een ​​Pandas-dataframe te maken.

dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
Leeftijd Naam
0 30 John
1 40 smid

Gegevens over het bereik van panda's

Panda's hebben een handige API om een ​​datumbereik te creëren. Laten we leren met Python Pandas-voorbeelden:

pd.data_range(datum,periode,frequentie):

  • De eerste parameter is de startdatum
  • De tweede parameter is het aantal perioden (optioneel als de einddatum is opgegeven)
  • De laatste parameter is de frequentie: dag: 'D', maand: 'M' en jaar: 'Y.'
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)

uitgang

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)

uitgang

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

Gegevens inspecteren

U kunt de kop of staart van de gegevensset controleren met head() of tail() voorafgegaan door de naam van het dataframe van de panda, zoals weergegeven in het onderstaande Pandas-voorbeeld:

Stap 1) Maak een willekeurige reeks met numpy. De reeks heeft 4 kolommen en 6 rijen

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

Stap 2) Vervolgens maakt u een dataframe met behulp van panda's.

Gebruik dates_m als index voor het dataframe. Het betekent dat elke rij een “naam” of een index krijgt, die overeenkomt met een datum.

Tenslotte geef je een naam aan de 4 kolommen met de argumentkolommen

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

Stap 3) Hoofdfunctie gebruiken

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

Stap 4) Gebruik van de staartfunctie

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

Stap 5) Een uitstekende oefening om een ​​idee te krijgen van de gegevens is het gebruik van write(). Het biedt de aantallen, gemiddelde, std, min, max en percentiel van de dataset.

df.describe()
A B C D
tellen 6.000000 6.000000 6.000000 6.000000
gemiddelde 0.002317 0.256928 -0.151896 0.467601
soa 0.908145 0.746939 0.834664 0.908910
Min -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

Segmentgegevens

Het laatste punt van deze Python Pandas-tutorial gaat over het segmenteren van een panda-dataframe.

U kunt de kolomnaam gebruiken om gegevens in een bepaalde kolom te extraheren, zoals weergegeven in het onderstaande Pandas-voorbeeld:

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

Om meerdere kolommen te selecteren, moet u twee keer het haakje gebruiken, [[..,..]]

Het eerste paar haakjes betekent dat u kolommen wilt selecteren, het tweede paar haakjes geeft aan welke kolommen u wilt retourneren.

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

Je kunt de rijen opsplitsen met:

De onderstaande code retourneert de eerste drie rijen

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

De loc-functie wordt gebruikt om kolommen op naam te selecteren. Zoals gebruikelijk staan ​​de waarden vóór de coma voor de rijen en daarna voor de kolom. U moet de haakjes gebruiken om meer dan één kolom te selecteren.

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

Er is een andere methode om meerdere rijen en kolommen in Pandas te selecteren. Je kunt iloc[] gebruiken. Deze methode gebruikt de index in plaats van de kolomnaam. De onderstaande code retourneert hetzelfde dataframe als hierboven

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

Zet een kolom neer

Je kunt kolommen neerzetten met pd.drop()

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

Aaneenschakeling

U kunt twee DataFrame in Pandas aaneenschakelen. U kunt pd.concat() gebruiken

Allereerst moet u twee DataFrames maken. Tot nu toe gaat het goed, u bent al bekend met het maken van dataframes

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

Ten slotte voegt u de twee DataFrame samen

df_concat = pd.concat([df1,df2]) 
df_concat
Leeftijd naam
0 25 John
1 30 smid
2 50 Paul
3 26 Adam
4 11 smid

Drop_duplicaten

Als een dataset dubbel informatiegebruik kan bevatten, is `drop_duplicates` een eenvoudig uit te sluiten dubbele rij. Je kunt zien dat `df_concat` een dubbele waarneming heeft, `Smith` komt twee keer voor in de kolom `naam.`

df_concat.drop_duplicates('name')
Leeftijd naam
0 25 John
1 30 smid
2 50 Paul
3 26 Adam

Sorteer waarden

U kunt waarde sorteren met sort_values

df_concat.sort_values('Age')
Leeftijd naam
4 11 smid
0 25 John
3 26 Adam
1 30 smid
2 50 Paul

Hernoemen: wijziging van index

U kunt hernoemen gebruiken om de naam van een kolom in Pandas te wijzigen. De eerste waarde is de huidige kolomnaam en de tweede waarde is de nieuwe kolomnaam.

df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Leeftijd_ppl Achternaam
0 25 John
1 30 smid
2 50 Paul
3 26 Adam
4 11 smid

Samengevat

Hieronder vindt u een samenvatting van de meest bruikbare methode voor data science met Panda's

data importeren lees_csv
serie maken -Series
Maak een dataframe dataframe
Datumbereik maken DATE_RANGE
kop terug hoofd
staart terug staart
Beschrijven beschrijven
segmenteren met naam gegevensnaam['kolomnaam']
Snijd met behulp van rijen gegevens_naam[0:5]