แก้ไขแล้ว: แพนด้า Timedelta เป็น postgres

ในโลกของการวิเคราะห์ข้อมูล การจัดการข้อมูลอนุกรมเวลาเป็นสิ่งสำคัญ หนึ่งในไลบรารีที่ใช้บ่อยที่สุดสำหรับจุดประสงค์นี้คือ **pandas** ในภาษาโปรแกรม Python งานทั่วไปเมื่อทำงานกับข้อมูลอนุกรมเวลาคือการแปลงความแตกต่างของเวลาระหว่างเหตุการณ์ต่างๆ ให้เป็นรูปแบบมาตรฐาน นี่คือสิ่งที่แพนด้า Timedelta มีประโยชน์ อย่างไรก็ตาม เมื่อทำงานกับฐานข้อมูลอย่าง PostgreSQL การจัดเก็บ timedeltas เหล่านี้อาจยุ่งยากเล็กน้อย ในบทความนี้ เราจะพูดถึงวิธีการแปลง Timedelta ของ pandas เป็นรูปแบบที่สามารถจัดเก็บใน PostgreSQL และเรียกข้อมูลดังกล่าวในขณะที่รักษาการแสดงที่ถูกต้อง

วิธีแก้ปัญหา

วิธีแก้ปัญหานี้เกี่ยวข้องกับการใช้ pandas และ psycopg2 libraries ซึ่งใช้กันอย่างแพร่หลายสำหรับการจัดการข้อมูลและการจัดการฐานข้อมูล PostgreSQL ตามลำดับ ไลบรารี psycopg2 รองรับการจัดการ timedeltas โดยใช้ประเภทข้อมูล `interval' ใน PostgreSQL เราจะใช้ประโยชน์จากคุณสมบัตินี้เพื่อจัดเก็บ Timedelta แพนด้าของเราลงใน 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")

หมีแพนด้า Timedelta และ PostgreSQL Interval

pandas Timedelta เป็นเครื่องมืออันทรงพลังสำหรับแสดงความแตกต่างของเวลาด้วยวิธีที่สอดคล้องกันและสามารถอ่านได้ การสร้างและจัดการออบเจ็กต์ timedelta ใน pandas เป็นเรื่องง่าย แต่เมื่อต้องจัดเก็บในฐานข้อมูล PostgreSQL เราจำเป็นต้องแปลงให้เป็นรูปแบบที่เหมาะสม

PostgreSQL นำเสนอประเภทข้อมูล `interval` เพื่อจัดเก็บช่วงเวลา ชนิดข้อมูลนี้สามารถแสดงช่วงเวลาในรายละเอียดต่างๆ เช่น วัน ชั่วโมง นาที และวินาที ในการจัดเก็บ Timedelta แพนด้าในฐานข้อมูล PostgreSQL เราจำเป็นต้องแปลงเป็นช่วง PostgreSQL

มาสร้างตัวอย่าง DataFrame แพนด้าด้วยคอลัมน์ Timedelta:

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

เมื่อใช้ฟังก์ชันนี้ เราสามารถแทรกข้อมูล 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)

ดึง Timedeltas จาก PostgreSQL

เมื่อข้อมูล Timedelta ของ pandas ถูกจัดเก็บไว้ใน PostgreSQL เป็นช่วงๆ เราสามารถดึงข้อมูลเหล่านั้นกลับมาและแปลงกลับเป็น Timedeltas ของ pandas ได้อย่างง่ายดายในขณะที่อ่านข้อมูล

มาสร้างฟังก์ชันเพื่อดึงข้อมูลจากตาราง 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 อย่างถูกต้อง

โดยสรุป การแปลงแพนด้า Timedelta เป็นรูปแบบที่เหมาะสมสำหรับพื้นที่จัดเก็บ PostgreSQL และเรียกข้อมูลดังกล่าวในรูปแบบดั้งเดิมนั้นเป็นกระบวนการที่ไม่ซับซ้อน ด้วยการใช้ประโยชน์จากแพนด้าอันทรงพลังและไลบรารี่ psycopg2 เราสามารถจัดการข้อมูลอนุกรมเวลาได้อย่างง่ายดายและรักษาการแสดงที่เหมาะสม ทั้งในการวิเคราะห์ข้อมูลและในการจัดเก็บฐานข้อมูลของเรา

กระทู้ที่เกี่ยวข้อง:

แสดงความคิดเห็น