import mysql.connector as sql import pandas as pd import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt yhendus = sql.connect(host="193.40.238.6", user="dh19", password="dh19praktika", database="dh19_kais") tunnused = ["liik", "linastusaasta", "kestus", "näitlejate arv", "peaosaliste arv"] print("Programm loob EV100 filmide andmete põhjal veebilehe.") tunnus = input("Millise tunnuse alusel soovid filme võrrelda? [liik/linastusaasta/kestus/näitlejate arv/peaosaliste arv] ") tunnus = tunnus.lower() if tunnus not in tunnused: print("Vali tunnus etteantud nimekirjast.") exit() if tunnus == "liik": df = pd.read_sql("SELECT liik, COUNT(*) AS arv, GROUP_CONCAT(pealkiri) AS filmid FROM ev100filmid GROUP BY liik", yhendus) df[["liik", "arv"]].plot(kind="bar") plt.xticks(range(len(df["liik"].values)), df["liik"].values) plt.title("EV100 filmide jaotumine liigi järgi") plt.savefig("filmijoonis.png", bbox_inches="tight") plt.clf() elif tunnus == "linastusaasta": df = pd.read_sql("SELECT aasta, COUNT(*) AS arv, GROUP_CONCAT(pealkiri) AS filmid FROM ev100filmid GROUP BY aasta", yhendus) plt.pie(df.arv, labels=df.aasta, autopct="%1.1f%%") plt.axis("equal") plt.title("EV100 filmide jaotumine linastusaasta järgi") plt.savefig("filmijoonis.png", bbox_inches="tight") plt.clf() elif tunnus == "kestus": df = pd.read_sql("SELECT pealkiri, kestus AS kestus FROM ev100filmid GROUP BY pealkiri ORDER BY kestus DESC", yhendus) df.plot(kind="bar") plt.xticks(range(len(df["pealkiri"].values)), df["pealkiri"].values) plt.title("EV100 filmide kestus minutites") plt.savefig("filmijoonis.png", bbox_inches="tight") plt.clf() elif tunnus == "näitlejate arv": df = pd.read_sql("SELECT pealkiri, osataitjad AS osatäitjaid FROM ev100filmid GROUP BY pealkiri ORDER BY osataitjad DESC", yhendus) plt.pie(df.osatäitjaid, labels=df.pealkiri, autopct="%1.1f%%") plt.axis("equal") plt.savefig("filmijoonis.png", bbox_inches="tight") plt.clf() elif tunnus == "peaosaliste arv": df = pd.read_sql("SELECT pealkiri, peaosas AS peaosatäitjaid FROM ev100filmid GROUP BY pealkiri ORDER BY peaosas DESC", yhendus) df.plot(kind="bar") plt.xticks(range(len(df["pealkiri"].values)), df["pealkiri"].values) plt.title("Peaosatäitjate arv EV100 filmides") plt.savefig("filmijoonis.png", bbox_inches="tight") plt.clf() f = open("filmivordlus.html", "w") f.write("
") f.write(df.to_html()) f.write(""+"\n"+"