From 66bd61233532db53e009e884e3bdeafcf3a5fcf4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?I=C4=BCja=20Vaisfelds?= <ilya.vaisfeld@gmail.com>
Date: Tue, 15 Oct 2024 19:47:30 +0000
Subject: [PATCH] Add ChatGPT

---
 ChatGPT | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 146 insertions(+)
 create mode 100644 ChatGPT

diff --git a/ChatGPT b/ChatGPT
new file mode 100644
index 0000000..c3beff5
--- /dev/null
+++ b/ChatGPT
@@ -0,0 +1,146 @@
+import csv
+import matplotlib.pyplot as plt
+from datetime import datetime
+import tkinter as tk
+from tkinter import filedialog, ttk, messagebox
+
+# Глобальная переменная для хранения данных
+data = []
+
+# Функция для загрузки CSV файла
+def load_csv():
+    global data
+    filepath = filedialog.askopenfilename(filetypes=[("CSV files", "*.csv")])
+    if filepath:
+        data = []
+        try:
+            with open(filepath, newline='', encoding='utf-8') as csvfile:
+                reader = csv.DictReader(csvfile)
+                for row in reader:
+                    row['Datums'] = datetime.strptime(row['Datums'], '%Y-%m-%d')
+                    row['Ieņēmumi'] = float(row['Ieņēmumi'])
+                    row['Izdevumi'] = float(row['Izdevumi'])
+                    data.append(row)
+            display_data()
+        except Exception as e:
+            messagebox.showerror("Kļūda", f"Nevar nolasīt failu: {e}")
+    else:
+        messagebox.showerror("Kļūda", "Netika izvēlēts fails.")
+
+# Функция для отображения данных в таблице и обновления выпадающего списка
+def display_data():
+    # Очистка таблицы и выпадающего списка
+    for row in table.get_children():
+        table.delete(row)
+    categories = set()
+    
+    # Добавление данных в таблицу
+    for row in data:
+        table.insert("", "end", values=(row["Datums"].strftime('%Y-%m-%d'), row["Kategorija"], row["Ieņēmumi"], row["Izdevumi"], row["Komentārs"]))
+        categories.add(row["Kategorija"])
+
+    # Обновление выпадающего списка категорий
+    category_combo["values"] = list(categories)
+    if categories:
+        category_combo.current(0)
+
+# Функция для анализа данных по выбранной категории
+def analyze_data():
+    selected_category = category_combo.get()
+    category_data = [row for row in data if row["Kategorija"] == selected_category]
+
+    if not category_data:
+        messagebox.showinfo("Rezultāti", "Nav datu šai kategorijai.")
+        return
+    
+    # Анализ данных
+    avg_income = sum(row["Ieņēmumi"] for row in category_data) / len(category_data)
+    avg_expense = sum(row["Izdevumi"] for row in category_data) / len(category_data)
+    max_income = max(row["Ieņēmumi"] for row in category_data)
+    min_income = min(row["Ieņēmumi"] for row in category_data)
+    max_expense = max(row["Izdevumi"] for row in category_data)
+    min_expense = min(row["Izdevumi"] for row in category_data)
+    total_income = sum(row["Ieņēmumi"] for row in category_data)
+    total_expense = sum(row["Izdevumi"] for row in category_data)
+    
+    # Отображение результатов
+    analysis_result = (
+        f"Vidējie ieņēmumi: {avg_income:.2f}\n"
+        f"Vidējie izdevumi: {avg_expense:.2f}\n"
+        f"Maksimālie ieņēmumi: {max_income}\n"
+        f"Minimālie ieņēmumi: {min_income}\n"
+        f"Maksimālie izdevumi: {max_expense}\n"
+        f"Minimālie izdevumi: {min_expense}\n"
+        f"Kopējie ieņēmumi: {total_income}\n"
+        f"Kopējie izdevumi: {total_expense}"
+    )
+    messagebox.showinfo("Analīzes rezultāti", analysis_result)
+
+# Функция для построения графика по выбранной категории
+def plot_data():
+    selected_category = category_combo.get()
+    category_data = [row for row in data if row["Kategorija"] == selected_category]
+    
+    if not category_data:
+        messagebox.showinfo("Grafiks", "Nav datu šai kategorijai.")
+        return
+
+    # Группировка данных по годам
+    yearly_data = {}
+    for row in category_data:
+        year = row["Datums"].year
+        if year not in yearly_data:
+            yearly_data[year] = {"Ieņēmumi": 0, "Izdevumi": 0}
+        yearly_data[year]["Ieņēmumi"] += row["Ieņēmumi"]
+        yearly_data[year]["Izdevumi"] += row["Izdevumi"]
+
+    # Подготовка данных для графика
+    years = sorted(yearly_data.keys())
+    income = [yearly_data[year]["Ieņēmumi"] for year in years]
+    expense = [yearly_data[year]["Izdevumi"] for year in years]
+
+    # Построение графика
+    plt.figure(figsize=(10, 6))
+    plt.plot(years, income, label="Ieņēmumi", color="green", marker="o")
+    plt.plot(years, expense, label="Izdevumi", color="red", marker="o")
+    plt.title(f"{selected_category} - Ieņēmumi un izdevumi pa gadiem")
+    plt.xlabel("Gads")
+    plt.ylabel("Summa")
+    plt.legend()
+    plt.grid(True)
+    plt.show()
+
+# Создание интерфейса
+root = tk.Tk()
+root.title("Finanšu datu analīze pēc kategorijām")
+
+# Таблица для отображения данных
+table = ttk.Treeview(root, columns=("Datums", "Kategorija", "Ieņēmumi", "Izdevumi", "Komentārs"), show="headings")
+table.heading("Datums", text="Datums")
+table.heading("Kategorija", text="Kategorija")
+table.heading("Ieņēmumi", text="Ieņēmumi")
+table.heading("Izdevumi", text="Izdevumi")
+table.heading("Komentārs", text="Komentārs")
+table.pack()
+
+# Кнопка для загрузки файла
+load_button = tk.Button(root, text="Ielādēt failu", command=load_csv)
+load_button.pack()
+
+# Метка и выпадающий список для выбора категории
+category_label = tk.Label(root, text="Izvēlieties kategoriju:")
+category_label.pack()
+
+category_combo = ttk.Combobox(root)
+category_combo.pack()
+
+# Кнопка для анализа данных
+analyze_button = tk.Button(root, text="Analizēt", command=analyze_data)
+analyze_button.pack()
+
+# Кнопка для построения графика
+plot_button = tk.Button(root, text="Zīmēt grafiku", command=plot_data)
+plot_button.pack()
+
+# Запуск главного цикла
+root.mainloop()