सोडवले: pandas Timedelta to postgres

डेटा विश्लेषणाच्या जगात, वेळ मालिका डेटा हाताळणे ही एक महत्त्वपूर्ण बाब आहे. पायथन प्रोग्रामिंग भाषेतील **पांडा** या उद्देशासाठी सर्वाधिक वापरल्या जाणार्‍या लायब्ररींपैकी एक आहे. टाइम सीरिज डेटासह काम करताना एक सामान्य कार्य म्हणजे वेगवेगळ्या इव्हेंटमधील वेळेतील फरक प्रमाणित स्वरूपात रूपांतरित करणे. येथेच पांडा टाइमडेल्टा कामी येतो. तथापि, PostgreSQL सारख्या डेटाबेससह काम करताना, हे timedeltas संचयित करणे थोडे अवघड असू शकते. या लेखात, आम्ही पोस्टग्रेएसक्यूएलमध्ये संग्रहित केल्या जाऊ शकणार्‍या फॉरमॅटमध्ये पांडा टाइमडेल्टा कसे रूपांतरित करावे आणि त्याचे योग्य प्रतिनिधित्व राखून ते पुनर्प्राप्त कसे करावे याबद्दल चर्चा करू.

समस्येचे निराकरण

या समस्येचे निराकरण करण्यासाठी pandas आणि psycopg2 लायब्ररी वापरणे समाविष्ट आहे, जे अनुक्रमे डेटा हाताळणी आणि 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")

pandas Timedelta आणि PostgreSQL मध्यांतर

पांडस टाइमडेल्टा हे वेळेतील फरक सातत्यपूर्ण आणि वाचनीय पद्धतीने व्यक्त करण्यासाठी एक शक्तिशाली साधन आहे. पांडांमध्ये टाइमडेल्टा ऑब्जेक्ट्स तयार करणे आणि हाताळणे सोपे आहे, परंतु जेव्हा ते पोस्टग्रेएसक्यूएल डेटाबेसमध्ये संग्रहित करण्याचा विचार येतो, तेव्हा आम्हाला त्यांना योग्य स्वरूपनात रूपांतरित करणे आवश्यक आहे.

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

या फंक्शनचा वापर करून, आम्ही आमचा पांडा डेटाफ्रेम डेटा 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 योग्यरित्या pandas Timedeltas म्हणून प्रस्तुत केले गेले आहे.

शेवटी, pandas Timedelta ला PostgreSQL स्टोरेजसाठी योग्य असलेल्या फॉरमॅटमध्ये रूपांतरित करणे आणि ते मूळ स्वरूपात परत मिळवणे ही एक सरळ प्रक्रिया आहे. शक्तिशाली पांडा आणि psycopg2 लायब्ररींचा फायदा घेऊन, आम्ही आमच्या डेटा विश्लेषणात आणि आमच्या डेटाबेस स्टोरेजमध्ये वेळ मालिका डेटा सहजपणे हाताळू शकतो आणि त्याचे योग्य प्रतिनिधित्व राखू शकतो.

संबंधित पोस्ट:

एक टिप्पणी द्या