Riješeno: pretvorite stupac datuma rođenja u dob pandi

U današnjem svijetu analiza podataka postaje sve važnija, a jedan od najpopularnijih alata koje koriste analitičari podataka i podatkovni znanstvenici je Python s bibliotekom pandas. Pandas je moćan alat za analizu i manipulaciju podataka otvorenog koda koji omogućuje jednostavnu manipulaciju podatkovnim strukturama i serijama. Jedan čest problem s kojim se korisnici susreću je pretvaranje datuma rođenja u dob radi preciznije i praktičnije analize. U ovom ćemo članku istražiti kako riješiti ovaj problem s jasnim primjerima i objašnjenjima implementacije koda.

Pandas je svestran alat koji često uključuje rad s DateTime objektima - to je slučaj kada se radi o datumima rođenja. Prvi korak za pretvaranje datuma rođenja u dob zahtijeva jednostavnu aritmetiku s bibliotekom DateTime. To će nam omogućiti da pronađemo dob pojedinaca izračunavanjem razlike između njihovog datuma rođenja i trenutnog datuma.

Počnimo s uvozom potrebnih biblioteka:

import pandas as pd
from datetime import datetime

Zatim razmotrite jednostavan skup podataka koji sadrži sljedeće podatke o pojedincima:

data = {'Name': ['John', 'Paul', 'George', 'Ringo'],
        'Birth_Date': ['1940-10-09', '1942-06-18', '1943-02-25', '1940-07-07']
       }

df = pd.DataFrame(data)
df['Birth_Date'] = pd.to_datetime(df['Birth_Date'])

U gornjem kodu pretvaramo stupac 'Birth_Date' u objekte DateTime.

Izračunavanje starosti

Sada smo spremni izračunati dob tih osoba pronalaženjem razlike između njihovog datuma rođenja i trenutnog datuma. Da biste to učinili, slijedite ove korake:

1. Napravite funkciju pod nazivom 'calculate_age' koja uzima datum rođenja kao ulaz i vraća dob osobe.
2. Primijenite ovu funkciju na stupac 'Birth_Date' u DataFrameu.

Evo koda za implementaciju gornje logike:

def calculate_age(birth_date):
    today = datetime.now()
    age = today.year - birth_date.year - ((today.month, today.day) <
                                          (birth_date.month, birth_date.day))
    return age

df['Age'] = df['Birth_Date'].apply(calculate_age)

U ovom isječku koda stvorili smo funkciju pod nazivom 'calculate_age' koja prima birth_date kao ulaz, izračunava trenutni datum pomoću datetime.now() i izračunava dob osobe oduzimanjem godine rođenja od tekuće godine. Ako je njihov rođendan se nije dogodio ove godine, oduzimamo dodatnu godinu.

Konačno, ovu funkciju primjenjujemo na stupac 'Birth_Date' pomoću metode apply(), a izračunata dob pohranjuje se u novom stupcu 'Age' u DataFrameu.

Korištenje Numpyja i Pandasa za izračun dobi

Alternativno, za ovaj zadatak možemo upotrijebiti moćnu knjižnicu numpy u kombinaciji s pandama. Da biste pretvorili datume rođenja u godine koristeći numpy, slijedite ove korake:

1. Uvezite biblioteku numpy.
2. Koristite funkciju numpy 'floor' za izračun starosti.

Evo primjera kako to učiniti:

import numpy as np

df['Age'] = np.floor((datetime.now() - df['Birth_Date']).dt.days / 365.25)

Ovaj kod koristi numpyjevu funkciju 'floor' za zaokruživanje rezultata dijeljenja s pomičnim zarezom broj dana od datuma rođenja do 365.25 (uzimajući u obzir prijestupne godine).

Ukratko, korištenjem biblioteka kao što su pandas i datetime ili pandas i numpy, pretvaranje stupaca datuma rođenja u dob unutar skupa podataka postaje besprijekorno. Slijeđenjem objašnjenih koraka i razumijevanjem koda navedenog u ovom članku steći ćete znanje za manipuliranje takvim podacima i provođenje učinkovitije i točnije analize.

Povezani postovi:

Ostavite komentar