Selesai: panda Timedelta kepada postgres

Dalam dunia analisis data, pengendalian data siri masa adalah aspek yang penting. Salah satu perpustakaan yang paling biasa digunakan untuk tujuan ini ialah **pandas** dalam bahasa pengaturcaraan Python. Tugas biasa apabila bekerja dengan data siri masa adalah untuk menukar perbezaan masa antara peristiwa yang berbeza kepada format standard. Di sinilah panda Timedelta berguna. Walau bagaimanapun, apabila bekerja dengan pangkalan data seperti PostgreSQL, menyimpan timedelta ini boleh menjadi agak rumit. Dalam artikel ini, kita akan membincangkan cara menukar Timedelta panda kepada format yang boleh disimpan dalam PostgreSQL, dan mendapatkannya sambil mengekalkan perwakilannya yang betul.

Penyelesaian Masalah

Penyelesaian kepada masalah ini melibatkan penggunaan perpustakaan panda dan psycopg2, yang digunakan secara meluas untuk manipulasi data dan pengurusan pangkalan data PostgreSQL, masing-masing. Pustaka psycopg2 mempunyai sokongan untuk mengendalikan timedelta, menggunakan jenis data `selang` dalam PostgreSQL. Kami akan memanfaatkan ciri ini untuk menyimpan Timedelta panda kami ke dalam PostgreSQL dan mendapatkannya semula dalam format yang betul.

Mula-mula, mari kita mengimport perpustakaan yang diperlukan dan mewujudkan sambungan ke pangkalan data PostgreSQL kami.

import pandas as pd
import psycopg2

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

panda Timedelta dan PostgreSQL Interval

panda Timedelta ialah alat yang berkuasa untuk menyatakan perbezaan masa dengan cara yang konsisten dan boleh dibaca. Adalah mudah untuk mencipta dan memanipulasi objek timedelta dalam panda, tetapi apabila ia datang untuk menyimpannya dalam pangkalan data PostgreSQL, kita perlu menukarnya kepada format yang sesuai.

PostgreSQL menawarkan jenis data `interval` untuk menyimpan selang masa. Jenis data ini boleh mewakili jangka masa dalam pelbagai butiran, seperti hari, jam, minit dan saat. Untuk menyimpan Timedelta panda dalam pangkalan data PostgreSQL, kita perlu menukarnya kepada selang PostgreSQL.

Mari buat sampel DataFrame panda dengan lajur 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)

Sekarang mari kita cipta fungsi untuk memasukkan data ini ke dalam pangkalan data PostgreSQL kami dan menukar data Timedelta kepada selang serasi 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()

Menggunakan fungsi ini, kami boleh memasukkan data DataFrame panda kami ke dalam pangkalan data PostgreSQL:

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

Mendapatkan Timedeltas daripada PostgreSQL

Setelah data Timedelta panda disimpan dalam PostgreSQL sebagai selang waktu, kami boleh mendapatkannya dengan mudah dan menukarnya semula menjadi Timedeltas panda semasa membaca data.

Mari buat fungsi untuk mengambil data daripada jadual PostgreSQL kami:

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

Dengan fungsi ini, kami boleh mengambil dan mencetak data daripada pangkalan data PostgreSQL kami:

result = fetch_data(conn)
print(result)

Data yang diambil daripada PostgreSQL kini mempunyai Timedeltas yang betul-betul diwakili sebagai Timedeltas panda.

Kesimpulannya, menukar Timedelta panda kepada format yang sesuai untuk storan PostgreSQL dan mendapatkannya dalam bentuk asalnya adalah proses yang mudah. Dengan memanfaatkan perpustakaan panda dan psycopg2 yang berkuasa, kami boleh mengendalikan data siri masa dengan mudah dan mengekalkan perwakilannya yang betul, dalam analisis data kami dan dalam storan pangkalan data kami.

Related posts:

Tinggalkan komen