Analiza podataka i ChatGPT

Pored toga što se komunikacija sa ChatGPT alatom odvija na svakodnevnom jeziku, ChatGPT može da uključi i posebne funkcionalnosti za analizu podataka, te da na vaše upite odgovori tako što će generisati tabele i grafikone.

ChatGPT aplikaciji možete pristupiti iz web brauzera, na adresi: https://chatgpt.com/. Kao anoniman korisnik imate na raspolaganju osnovni jezički model (u trenutku pisanja ovog teksta to je GPT 4o mini). Međutim, ako kreirate nalog i ulogujete se, imate na raspolaganju napredniji model (GPT 4o). Budući da su funkcionalnosti za analizu podataka dostupne samo u naprednijem modelu, neophodno je da kreirate nalog kako biste mogli da koristite GPT 4o ili, u zavisnosti od toga kada čitate ovaj tekst, odgovarajući noviji model koji ga je u međuvremenu zamenio.

Zadaćemo ChatGPT-u sledeći upit:

Hoću da vežbam analizu podataka, treba mi jedan skup podataka za početak. Neka to budu meteorološki podaci tokom 10 dana

Od ChatGPT-a možemo očekivati odgovor poput:

Generisani meteorološki podaci

Napomena

ChatGPT neće uvek dati isti rezultat za isti upit. Ako mu zadate upit iz primera, moguće je da ćete dobiti drugačiji odgovor.

Sada ćemo ChatGPT-u zadati sledeći upit:

Treba mi grafikon koji uporedo prikazuje temperaturu i vlažnost tokom vremena

ChatGPT nam može dati rezultat poput:

Grafikon temperature i vlažnosti

Obratite pažnju na plavu ikonicu na kraju odgovora koji je dao ChatGPT. Njome je označeno da je ChatGPT prvo generisao programski kod koji je zatim i izvršio. Vratićemo se na ovaj programski kod kasnije u toku lekcije.

Takođe, primećujemo da se ispisi datuma na vremenskoj osi preklapaju, da su nepregledno dati jedan preko drugog. Kako bismo to ispravili, možemo ChatGPT-u dati novu instrukciju:

labele na vremenskoj osi se preklapaju, možeš li to da popraviš

ChatGPT se neće zbuniti ako upit počnemo malim slovom, ili ako izostavimo znak pitanja na kraju, već će odgovoriti:

Pregledniji ispis datuma na vremenskoj osi

Programski kod koji je generisao ChatGPT

Vratimo se na plavu ikonicu koja se nalazi na kraju odgovora koji nam je dao ChatGPT. Ako budemo kliknuli na tu ikonicu, prikazaće nam se deo koda čijim izvršavanjem je generisan grafikon:

Ikonica za prikaz koda

Primećujemo da nam se, kada kliknemo na tu ikonicu, ukazuje sledeći programski kod u jeziku Python:

import pandas as pd
import matplotlib.pyplot as plt

# Kreiranje DataFrame-a sa zadatim podacima
data = {
    "Datum": ["2024-06-01", "2024-06-02", "2024-06-03", "2024-06-04", "2024-06-05", "2024-06-06", "2024-06-07", "2024-06-08", "2024-06-09", "2024-06-10"],
    "Temperatura (°C)": [25.3, 26.1, 24.8, 23.5, 22.0, 24.0, 25.5, 27.0, 28.3, 29.0],
    "Vlažnost (%)": [60, 55, 65, 70, 75, 68, 58, 50, 45, 40]
}

df = pd.DataFrame(data)
df["Datum"] = pd.to_datetime(df["Datum"])

# Plotovanje grafikona
fig, ax1 = plt.subplots(figsize=(10, 6))

ax1.set_xlabel('Datum')
ax1.set_ylabel('Temperatura (°C)', color='tab:red')
ax1.plot(df["Datum"], df["Temperatura (°C)"], color='tab:red', marker='o', label='Temperatura (°C)')
ax1.tick_params(axis='y', labelcolor='tab:red')

ax2 = ax1.twinx()
ax2.set_ylabel('Vlažnost (%)', color='tab:blue')
ax2.plot(df["Datum"], df["Vlažnost (%)"], color='tab:blue', marker='x', label='Vlažnost (%)')
ax2.tick_params(axis='y', labelcolor='tab:blue')

fig.tight_layout()
plt.title('Temperatura i Vlažnost tokom 10 dana')
plt.show()

Na početku koda možete primetiti deo u kom se navode konkretni podaci (ispod komentara Kreiranje DataFrame-a sa zadatim podacima). Objasnićemo značenje svih linija koda do kraja kursa.

Podsećamo vas da ChatGPT ne daje uvek isti rezultat za isti upit. Stoga, nemojte se zbuniti ako ne dobijete istovetan programski kod u odgovoru.

Programskom kodu čijim je izvršavanjem generisan grafikon sa preglednijim datumima na vremenskoj osi pristupamo na isti način − klikom na plavu ikonicu. On izgleda ovako:

# Podesavanje grafikona sa bolje formatiranim oznakama na vremenskoj osi
fig, ax1 = plt.subplots(figsize=(10, 6))

ax1.set_xlabel('Datum')
ax1.set_ylabel('Temperatura (°C)', color='tab:red')
ax1.plot(df["Datum"], df["Temperatura (°C)"], color='tab:red', marker='o', label='Temperatura (°C)')
ax1.tick_params(axis='y', labelcolor='tab:red')

ax2 = ax1.twinx()
ax2.set_ylabel('Vlažnost (%)', color='tab:blue')
ax2.plot(df["Datum"], df["Vlažnost (%)"], color='tab:blue', marker='x', label='Vlažnost (%)')
ax2.tick_params(axis='y', labelcolor='tab:blue')

# Rotiranje oznaka na vremenskoj osi i formatiranje datuma
fig.autofmt_xdate()
fig.tight_layout()
plt.title('Temperatura i Vlažnost tokom 10 dana')
plt.show()