MIF_E31211906/pythonpj/differensial2.py

63 lines
2.1 KiB
Python

from flask import Flask, render_template, request
import mysql.connector
import pandas as pd
import matplotlib.pyplot as plt
app = Flask(__name__)
# Fungsi untuk terhubung ke database dan mengambil data
def get_data_from_database():
conn = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="steven"
)
cursor = conn.cursor()
cursor.execute("SELECT Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember FROM curah_hujan ORDER BY id DESC LIMIT 12")
rows = cursor.fetchall()
conn.close()
return rows
# Fungsi untuk melakukan diferensiasi pada data
def differentiate_data(data, d):
diff_data = []
for i in range(d, len(data)):
diff_data.append(data[i] - data[i-d])
return diff_data
@app.route('/dif2', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
d_value = int(request.form['d_value'])
# Mengambil data dari database
data_from_db = get_data_from_database()
# Mengubah data menjadi DataFrame menggunakan pandas
df = pd.DataFrame(data_from_db, columns=['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'])
# Mengambil data januari-desember sebagai data yang akan didiferensialkan
data_to_differentiate = df.iloc[-1].values
# Melakukan diferensiasi pada data
differentiated_data = differentiate_data(data_to_differentiate, d_value)
# Plot data asli dan data yang telah didiferensialkan
plt.figure(figsize=(10, 5))
plt.subplot(2, 1, 1)
plt.plot(df.columns, data_to_differentiate, marker='o')
plt.title('Data Asli')
plt.subplot(2, 1, 2)
plt.plot(df.columns[d_value:], differentiated_data, marker='o')
plt.title('Data yang Telah Didiferensialkan (d=' + str(d_value) + ')')
plt.tight_layout()
# Simpan plot sebagai file gambar
plt.savefig('static/plot2.png')
return render_template('differensial2.html')
if __name__ == '__main__':
app.run(debug=True)