தீர்க்கப்பட்டது: பாண்டாஸ் டைம்டெல்டா முதல் போஸ்ட்கிரெஸ் வரை

தரவு பகுப்பாய்வு உலகில், நேரத் தொடர் தரவைக் கையாள்வது ஒரு முக்கியமான அம்சமாகும். இந்த நோக்கத்திற்காக பொதுவாகப் பயன்படுத்தப்படும் நூலகங்களில் ஒன்று பைதான் நிரலாக்க மொழியில் **pandas** ஆகும். நேரத் தொடர் தரவுகளுடன் பணிபுரியும் போது ஒரு பொதுவான பணி, வெவ்வேறு நிகழ்வுகளுக்கு இடையிலான நேர வேறுபாடுகளை நிலையான வடிவமாக மாற்றுவதாகும். இங்குதான் பாண்டாஸ் டைம்டெல்டா பயனுள்ளதாக இருக்கும். இருப்பினும், PostgreSQL போன்ற தரவுத்தளங்களுடன் பணிபுரியும் போது, ​​இந்த டைம்டெல்டாக்களை சேமிப்பது சற்று தந்திரமானதாக இருக்கும். இந்தக் கட்டுரையில், PostgreSQL இல் சேமித்து வைக்கக்கூடிய வடிவத்திற்கு Pandas Timedelta ஐ எவ்வாறு மாற்றுவது மற்றும் அதன் சரியான பிரதிநிதித்துவத்தைப் பேணுவது எப்படி என்பதைப் பற்றி விவாதிப்போம்.

பிரச்சனைக்கான தீர்வு

இந்தச் சிக்கலுக்கான தீர்வு பாண்டாக்கள் மற்றும் சைகோப்ஜி2 நூலகங்களைப் பயன்படுத்துவதை உள்ளடக்கியது, அவை முறையே தரவு கையாளுதல் மற்றும் PostgreSQL தரவுத்தள மேலாண்மைக்கு பரவலாகப் பயன்படுத்தப்படுகின்றன. psycopg2 நூலகம் PostgreSQL இல் `இடைவெளி` தரவு வகையைப் பயன்படுத்தி டைம்டெல்டாக்களைக் கையாளும் ஆதரவைக் கொண்டுள்ளது. இந்த அம்சத்தைப் பயன்படுத்தி எங்கள் பாண்டாக்கள் டைம்டெல்டாவை PostgreSQL இல் சேமித்து அதன் முறையான வடிவத்தில் மீட்டெடுப்போம்.

முதலில், தேவையான நூலகங்களை இறக்குமதி செய்து, நமது PostgreSQL தரவுத்தளத்துடன் இணைப்பை ஏற்படுத்துவோம்.

import pandas as pd
import psycopg2

conn = psycopg2.connect(database="your_database",
                        user="your_user",
                        password="your_password",
                        host="your_host",
                        port="your_port")

பாண்டாஸ் டைம்டெல்டா மற்றும் PostgreSQL இடைவெளி

pandas Timedelta என்பது நேர வேறுபாடுகளை சீரான மற்றும் படிக்கக்கூடிய வகையில் வெளிப்படுத்தும் சக்திவாய்ந்த கருவியாகும். பாண்டாக்களில் டைம்டெல்டா பொருட்களை உருவாக்குவது மற்றும் கையாளுவது எளிது, ஆனால் அவற்றை PostgreSQL தரவுத்தளத்தில் சேமிக்கும் போது, ​​அவற்றை பொருத்தமான வடிவத்திற்கு மாற்ற வேண்டும்.

PostgreSQL நேர இடைவெளிகளைச் சேமிக்க `இடைவெளி` தரவு வகையை வழங்குகிறது. இந்த தரவு வகையானது, நாட்கள், மணிநேரம், நிமிடங்கள் மற்றும் வினாடிகள் போன்ற பல்வேறு கிரானுலாரிட்டிகளில் நேர இடைவெளியைக் குறிக்கும். PostgreSQL தரவுத்தளத்தில் ஒரு பாண்டாஸ் Timedelta ஐ சேமிக்க, அதை PostgreSQL இடைவெளிக்கு மாற்ற வேண்டும்.

டைம்டெல்டா நெடுவரிசையுடன் மாதிரி பாண்டாஸ் டேட்டாஃப்ரேமை உருவாக்குவோம்:

data = {'event_name': ['start', 'end'],
        'time': [pd.Timestamp('2021-01-01'), pd.Timestamp('2021-01-03')]}
df = pd.DataFrame(data)
df['difference'] = df['time'].diff()
print(df)

இப்போது இந்தத் தரவை எங்கள் PostgreSQL தரவுத்தளத்தில் செருகுவதற்கான செயல்பாட்டை உருவாக்கி, Timedelta தரவை PostgreSQL-இணக்கமான இடைவெளியாக மாற்றுவோம்.

def insert_data(event_name, time, difference, conn):
    query = """
    INSERT INTO timedeltas (event_name, time, difference)
    VALUES (%s, %s, %s)
    """
    with conn.cursor() as cur:
        cur.execute(query, (event_name, time, difference))
    conn.commit()

இந்தச் செயல்பாட்டைப் பயன்படுத்தி, நமது pandas DataFrame தரவை PostgreSQL தரவுத்தளத்தில் செருகலாம்:

for _, row in df.iterrows():
    event_name, time, difference = row['event_name'], row['time'], row['difference']
    insert_data(event_name, time, difference, conn)

PostgreSQL இலிருந்து Timedeltas ஐ மீட்டெடுக்கிறது

பாண்டாஸ் டைம்டெல்டா தரவு இடைவெளிகளாக PostgreSQL இல் சேமிக்கப்பட்டவுடன், அவற்றை எளிதாக மீட்டெடுக்கலாம் மற்றும் தரவைப் படிக்கும்போது அவற்றை மீண்டும் பாண்டாஸ் டைம்டெல்டாஸாக மாற்றலாம்.

எங்கள் PostgreSQL அட்டவணையில் இருந்து தரவைப் பெற ஒரு செயல்பாட்டை உருவாக்குவோம்:

def fetch_data(conn):
    query = "SELECT event_name, time, difference FROM timedeltas"
    data = pd.read_sql(query, conn)
    data['difference'] = pd.to_timedelta(data['difference'])
    return data

இந்தச் செயல்பாட்டின் மூலம், எங்கள் PostgreSQL தரவுத்தளத்திலிருந்து தரவைப் பெற்று அச்சிடலாம்:

result = fetch_data(conn)
print(result)

PostgreSQL இலிருந்து பெறப்பட்ட தரவு இப்போது அதன் Timedeltas ஐ பாண்டாஸ் Timedeltas என சரியாகக் குறிப்பிடுகிறது.

முடிவில், பாண்டாஸ் டைம்டெல்டாவை PostgreSQL சேமிப்பகத்திற்கு ஏற்ற வடிவமைப்பிற்கு மாற்றுவது மற்றும் அதன் அசல் வடிவத்தில் அதை மீட்டெடுப்பது ஒரு நேரடியான செயலாகும். சக்தி வாய்ந்த பாண்டாக்கள் மற்றும் சைகோப்ஜி2 நூலகங்களைப் பயன்படுத்துவதன் மூலம், நேரத் தொடர் தரவை எளிதாகக் கையாளலாம் மற்றும் அதன் சரியான பிரதிநிதித்துவத்தை எங்கள் தரவு பகுப்பாய்வு மற்றும் எங்கள் தரவுத்தள சேமிப்பகத்தில் பராமரிக்கலாம்.

தொடர்புடைய இடுகைகள்:

ஒரு கருத்துரையை