Emhlabeni wokuhlaziya idatha, ukuphatha idatha yochungechunge lwesikhathi kuyisici esibalulekile. Enye yemitapo yolwazi esetshenziswa kakhulu kule njongo i-**pandas** ngolimi lohlelo lwePython. Umsebenzi ojwayelekile lapho usebenza nedatha yochungechunge lwesikhathi ukuguqula umehluko wesikhathi phakathi kwemicimbi ehlukene ube ifomethi evamile. Kulapho i-pandas Timedelta iza khona ilusizo. Kodwa-ke, lapho usebenza ngezinqolobane ezifana ne-PostgreSQL, ukugcina lawa ma-timedeltas kungaba yinto ekhohlisayo. Kulesi sihloko, sizoxoxa ngendlela yokuguqula i-pandas Timedelta ibe ifomethi engagcinwa ku-PostgreSQL, futhi siyithole ngenkathi igcina ukumelwa kwayo okulungile.
Isixazululo Senkinga
Isixazululo sale nkinga sibandakanya ukusebenzisa ama-pandas kanye nemitapo yolwazi ye-psycopg2, esetshenziswa kabanzi ekulawulweni kwedatha kanye nokuphathwa kwesizindalwazi se-PostgreSQL, ngokulandelana. Umtapo wezincwadi we-psycopg2 unosekelo lokuphatha i-timedeltas, kusetshenziswa uhlobo lwedatha `lwesikhawu` ku-PostgreSQL. Sizosebenzisa lesi sici ukuze sigcine i-pandas yethu i-Timedelta ku-PostgreSQL futhi siyibuyisele ngefomethi yayo efanele.
Okokuqala, ake singenise imitapo yolwazi edingekayo futhi sisungule uxhumano kusizindalwazi sethu se-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")
I-pandas Timedelta kanye ne-PostgreSQL Interval
I-pandas Timedelta iyithuluzi elinamandla lokuveza umehluko wesikhathi ngendlela engaguquki nefundekayo. Kulula ukudala nokukhohlisa izinto ze-timedelta kuma-panda, kodwa uma kuziwa ekuzigcineni kusizindalwazi se-PostgreSQL, sidinga ukuziguqulela kufomethi efanelekile.
I-PostgreSQL inikeza uhlobo lwedatha `lwesikhawu` ukugcina izikhawu zesikhathi. Lolu hlobo lwedatha lungamelela ubude besikhathi kuma-granularities ahlukahlukene, njengezinsuku, amahora, imizuzu, namasekhondi. Ukuze sigcine i-pandas Timedelta kusizindalwazi se-PostgreSQL, sidinga ukuyiguqulela ku-PostgreSQL isikhawu.
Masidale isampula ye-DataFrame ye-panda ngekholomu ye-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)
Manje ake sakhe umsebenzi wokufaka le datha kusizindalwazi sethu se-PostgreSQL futhi siguqule idatha ye-Timedelta ibe isikhawu esihambisana ne-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()
Ngokusebenzisa lo msebenzi, singafaka idatha yethu ye-pandas DataFrame kusizindalwazi se-PostgreSQL:
for _, row in df.iterrows(): event_name, time, difference = row['event_name'], row['time'], row['difference'] insert_data(event_name, time, difference, conn)
Ibuyisa i-Timedeltas kusuka ku-PostgreSQL
Uma idatha ye-pandas ye-Timedelta igcinwe ku-PostgreSQL njengezikhawu, singayithola kalula futhi siyiguqule ibuyele kuma-pandas Timedeltas ngenkathi sifunda idatha.
Ake sakhe umsebenzi wokulanda idatha etafuleni lethu le-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
Ngalo msebenzi, singalanda futhi siphrinte idatha kusizindalwazi sethu se-PostgreSQL:
result = fetch_data(conn) print(result)
Idatha elandwe ku-PostgreSQL manje ine-Timedeltas yayo emelwe kahle njenge-pandas Timedeltas.
Sengiphetha, ukuguqula i-pandas i-Timedelta ibe ifomethi efanelekile isitoreji se-PostgreSQL futhi ukuyibuyisela esimweni sayo sangempela kuyinqubo eqondile. Ngokusebenzisa ama-panda anamandla nemitapo yolwazi ye-psycopg2, singakwazi ukuphatha kalula idatha yochungechunge lwesikhathi futhi sigcine ukumelwa kwayo okufanele, kokubili ekuhlaziyeni kwethu idatha nasekugcinweni kwethu kolwazi.