diff --git a/csv/Report_2020.csv b/csv/Report_2020.csv index bb4c59b..4ddc441 100644 --- a/csv/Report_2020.csv +++ b/csv/Report_2020.csv @@ -1,4 +1,4 @@ -Country,ISO Code,Region,Position 2020,Position 2019,Global Score,With Abuses,Without Abuses,Journalist Killed,Media Workers Killed,Journalist Imprisoned,Media Workers Imprisoned,Situation +Country,ISO_Code,Region,Position_2020,Position 2019,Global_Score,With Abuses,Without Abuses,Journalist_Killed,Media_Workers_Killed,Journalist_Imprisoned,Media_Workers_Imprisoned,Situation Afghanistan,AFG,Asia Pacific,122,121,62.3,38.91,68.17,4,2,0,0,Difficult Albania,ALB,Europe,84,82,69.75,86.14,69.99,0,0,0,0,Problematic Algeria,DZA,Arab States,146,141,54.48,70.04,54.48,0,0,7,0,Difficult @@ -119,7 +119,7 @@ Niger,NER,Africa,57,66,71.75,100.0,71.75,0,0,0,0,Problematic Nigeria,NGA,Africa,115,120,64.37,52.29,67.39,2,0,1,0,Difficult North Korea,PRK,Asia Pacific,180,179,14.18,48.07,14.18,0,0,0,0,Very Serious North Macedonia,MKD,Europe,92,95,68.72,100.0,68.72,0,0,0,0,Problematic -Northern Cyprus,CYP,Europe,77,74,70.21,100.0,70.21,0,0,0,0,Problematic +Northern Cyprus,CYN,Europe,77,74,70.21,100.0,70.21,0,0,0,0,Problematic Norway,NOR,Europe,1,1,92.16,100.0,92.16,0,0,0,0,Good OECS,,,44,50,76.22,100.0,76.22,0,0,0,0,Satisfactory Oman,OMN,Middle East,135,132,56.58,100.0,56.58,0,0,0,0,Difficult diff --git a/csv/Report_2021.csv b/csv/Report_2021.csv index e8141a3..75b5372 100644 --- a/csv/Report_2021.csv +++ b/csv/Report_2021.csv @@ -1,4 +1,4 @@ -Country,ISO Code,Region,Position 2021,Position 2020,Global Score,With Abuses,Without Abuses,Journalist Killed,Media Workers Killed,Journalist Imprisoned,Media Workers Imprisoned,Situation +Country,ISO_Code,Region,Position_2021,Position_2020,Global_Score,With Abuses,Without Abuses,Journalist_Killed,Media_Workers_Killed,Journalist_Imprisoned,Media_Workers_Imprisoned,Situation Afghanistan,AFG,Asia Pacific,122,122,59.81,36.72,65.6,3,3,0,0,Difficult Albania,ALB,Europe,83,84,69.41,76.02,69.41,0,0,0,0,Problematic Algeria,DZA,Arab States,146,146,52.74,64.45,52.74,0,0,1,0,Difficult @@ -119,7 +119,7 @@ Niger,NER,Africa,59,57,71.56,86.14,71.56,0,0,0,0,Problematic Nigeria,NGA,Africa,120,115,60.31,44.99,62.62,0,0,1,0,Difficult North Korea,PRK,Asia Pacific,179,180,18.72,48.07,18.72,0,0,0,0,Very Serious North Macedonia,MKD,Europe,90,92,68.33,100.0,68.33,0,0,0,0,Problematic -Northern Cyprus,CYP,Europe,76,77,70.18,100.0,70.18,0,0,0,0,Problematic +Northern Cyprus,CYN,Europe,76,77,70.18,100.0,70.18,0,0,0,0,Problematic Norway,NOR,Europe,1,1,93.28,100.0,93.28,0,0,0,0,Good OECS,,,45,44,76.02,100.0,76.03,0,0,0,0,Satisfactory Oman,OMN,Middle East,133,135,56.63,100.0,56.63,0,0,0,0,Difficult diff --git a/csv/Report_2022.csv b/csv/Report_2022.csv index 8c5c185..1ef8292 100644 --- a/csv/Report_2022.csv +++ b/csv/Report_2022.csv @@ -1,4 +1,4 @@ -Country,ISO Code,Region,Position 2022,Position 2021,Global Score,Politic Score,Economic Score,Legislative Score,Social Score,Security Score,Journalist Killed,Media Workers Killed,Journalist Imprisoned,Media Workers Imprisoned,Situation +Country,ISO_Code,Region,Position_2022,Position_2021,Global_Score,Politic_Score,Economic_Score,Legislative_Score,Social_Score,Security_Score,Journalist_Killed,Media_Workers_Killed,Journalist_Imprisoned,Media_Workers_Imprisoned,Situation Afghanistan,AFG,Asia Pacific,156,122,38.27,44.65,43.88,42.54,43.33,16.96,0,0,0,0,Very Serious Albania,ALB,Europe,103,83,56.41,50.55,29.39,68.77,66.6,66.75,0,0,0,0,Problematic Algeria,DZA,Arab States,134,146,45.53,41.21,32.4,54.17,55.88,44.02,0,0,0,0,Difficult @@ -119,8 +119,9 @@ Niger,NER,Africa,59,59,67.8,62.3,46.73,71.75,76.5,81.69,0,0,2,0,Problematic Nigeria,NGA,Africa,129,120,46.79,45.15,36.39,53.8,69.83,28.75,0,0,1,0,Difficult North Korea,PRK,Asia Pacific,180,179,13.92,22.42,0.0,22.81,12.0,12.38,0,0,0,0,Very Serious North Macedonia,MKD,Europe,57,90,68.44,66.16,43.71,81.29,73.17,77.85,0,0,0,0,Problematic -Northern Cyprus,CYP,Europe,81,76,61.08,56.48,38.78,69.82,60.2,80.14,0,0,0,0,Problematic +Northern Cyprus,CYN,Europe,81,76,61.08,56.48,38.78,69.82,60.2,80.14,0,0,0,0,Problematic Norway,NOR,Europe,1,1,92.65,94.89,90.38,92.23,93.71,92.03,0,0,0,0,Good +OECS,,,55,45,68.49,62.91,48.37,68.25,79.8,83.13,0,0,0,0,Problematic Oman,OMN,Middle East,163,133,35.99,32.73,23.98,18.42,45.0,59.82,0,0,0,0,Very Serious Pakistan,PAK,Asia Pacific,157,145,37.99,39.57,31.92,53.26,47.43,17.75,1,0,0,0,Very Serious Palestine,PSE,Middle East,170,132,28.98,35.45,15.82,36.4,36.5,20.74,2,0,0,0,Very Serious diff --git a/requetes.sql b/requetes.sql new file mode 100644 index 0000000..364ddbd --- /dev/null +++ b/requetes.sql @@ -0,0 +1,8 @@ +-- psql -h londres -d dblolaborie -U lolaborie -W + + + +SELECT p.nomR,avg(s.gscore) as Moyenne_Position_Region +FROM Statistique s, Pays p, Region r +WHERE s.codeP = p.code AND p.nomR = r.nom AND s.annee = '2021' +GROUP BY p.nomR; \ No newline at end of file diff --git a/script.py b/script.py new file mode 100644 index 0000000..b787e6d --- /dev/null +++ b/script.py @@ -0,0 +1,113 @@ +import pandas as pd +import psycopg2 as pg +import subprocess as sp +import matplotlib.pyplot as plt + +# psql -h londres -d dblolaborie -U lolaborie -W + +data = pd.read_csv(r'Report_2022.csv') +df = pd.DataFrame(data) +df2 = df.drop_duplicates() +df2 = df2.dropna() + +data = pd.read_csv(r'Report_2021.csv') +df = pd.DataFrame(data) +df2021 = df.drop_duplicates() +df2021 = df.dropna() + +data = pd.read_csv(r'Report_2020.csv') +df = pd.DataFrame(data) +df2020 = df.drop_duplicates() +df2020 = df.dropna() + +regions = [] + +for row in df2.itertuples(): + if row.Region not in regions: + regions.append(row.Region) + + + + +sp.run(["stty", "-echo"]) + +mdp = input("Le mot de passe stp : ") + +sp.run(["stty", "echo"]) + +co = None +print("Connexion...\n") +try: + # Connexion à la base + # Attention ! pensez à remplacer dblogin , login et mot_de_passe + #avec vos informations + co = pg.connect(host='londres', + database ='dblolaborie', + user='lolaborie', + password = mdp) + + curs = co.cursor() + + curs.execute('''DROP TABLE IF EXISTS Pays,Region,Annee,Statistique CASCADE;''') + + curs.execute('''CREATE TABLE Region( + nom varchar(30) PRIMARY KEY);''') + + curs.execute('''CREATE TABLE Pays( + code varchar(3) PRIMARY KEY, + nom varchar(30) NOT NULL, + nomR varchar(30) NOT NULL REFERENCES Region);''') + + curs.execute('''CREATE TABLE Annee( + annee varchar(4) PRIMARY KEY);''') + + curs.execute('''CREATE TABLE Statistique( + annee varchar(4) NOT NULL REFERENCES Annee, + codeP varchar(3) NOT NULL REFERENCES Pays, + position numeric NOT NULL, + gscore numeric, + pscore numeric, + escore numeric, + lscore numeric, + soscore numeric, + sescore numeric, + jkill numeric NOT NULL, + mkill numeric NOT NULL, + jprison numeric NOT NULL, + mprison numeric NOT NULL, + situation varchar(30) NOT NULL, + PRIMARY KEY(annee,codeP));''') + print("Tables crées !\n") + curs.execute('''INSERT INTO Annee VALUES('2022');''') + curs.execute('''INSERT INTO Annee VALUES('2021');''') + curs.execute('''INSERT INTO Annee VALUES('2020');''') + print("Années insérées !") + for r in regions: + curs.execute('''INSERT INTO Region VALUES(%s);''', + (r, )) + print("Régions insérées !") + + + for row in df2.itertuples(): + curs.execute('''INSERT INTO Pays VALUES(%s,%s,%s);''', + (row.ISO_Code, row.Country, row.Region)) + curs.execute('''INSERT INTO Statistique VALUES('2022',%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);''', + (row.ISO_Code,row.Position_2022,row.Global_Score,row.Politic_Score,row.Economic_Score,row.Legislative_Score,row.Social_Score,row.Security_Score,row.Journalist_Killed,row.Media_Workers_Killed,row.Journalist_Imprisoned,row.Media_Workers_Imprisoned,row.Situation)) + + for row in df2021.itertuples(): + curs.execute('''INSERT INTO Statistique VALUES('2021',%s,%s,%s,NULL,NULL,NULL,NULL,NULL,%s,%s,%s,%s,%s);''', + (row.ISO_Code,row.Position_2021,row.Global_Score,row.Journalist_Killed,row.Media_Workers_Killed,row.Journalist_Imprisoned,row.Media_Workers_Imprisoned,row.Situation)) + + for row in df2020.itertuples(): + curs.execute('''INSERT INTO Statistique VALUES('2020',%s,%s,%s,NULL,NULL,NULL,NULL,NULL,%s,%s,%s,%s,%s);''', + (row.ISO_Code,row.Position_2020,row.Global_Score,row.Journalist_Killed,row.Media_Workers_Killed,row.Journalist_Imprisoned,row.Media_Workers_Imprisoned,row.Situation)) + print("Insertions terminées !") + co.commit() + curs.close() +# Affichage du message d'erreur en cas de probl ème de connexion +except(Exception, pg.DatabaseError) as error : + print(error) +# Attention ! Toujours fermer la connexion lorsqu 'on en a plus besoin +finally: + if co is not None: + co.close() \ No newline at end of file