From 845a7d145c6b872ab37ff261b9f913da178a7036 Mon Sep 17 00:00:00 2001 From: Miguel Felipe Silva Vasconcelos Date: Mon, 1 Mar 2021 15:02:03 +0100 Subject: [PATCH] fix data format and finish exercise 4 modl 2 --- module2/exo4/data.csv | 57 +++++------ module2/exo4/exercice_python_en.org | 143 ++++++++++++++++++++++++++++ module2/exo4/simple_plot.png | Bin 0 -> 28284 bytes 3 files changed, 172 insertions(+), 28 deletions(-) create mode 100644 module2/exo4/simple_plot.png diff --git a/module2/exo4/data.csv b/module2/exo4/data.csv index ac1243e..425899b 100644 --- a/module2/exo4/data.csv +++ b/module2/exo4/data.csv @@ -1,28 +1,29 @@ -01/02/21;14,6460667061335 -02/02/21;73,4672357276549 -03/02/21;44,2291538031916 -04/02/21;71,2903834045354 -05/02/21;68,4296251985456 -06/02/21;63,7415933598351 -07/02/21;12,1364474195974 -08/02/21;31,333298339329 -09/02/21;88,577182629412 -10/02/21;15,7374298284668 -11/02/21;5,76424151805257 -12/02/21;31,553181578714 -13/02/21;2,8429101140257 -14/02/21;110,497435357668 -15/02/21;53,519193819704 -16/02/21;29,0710366548617 -17/02/21;40,9590068501374 -18/02/21;108,901226649965 -19/02/21;89,8347247541098 -20/02/21;104,444763954637 -21/02/21;97,5087720203479 -22/02/21;91,3232707890844 -23/02/21;69,9688805761576 -24/02/21;18,6351020508254 -25/02/21;95,3568454045806 -26/02/21;65,405377470914 -27/02/21;58,6261571771731 -28/02/21;56,492475928146 +2021-02-01;81.8199141820915 +2021-02-02;45.6301076036676 +2021-02-03;70.8706487695057 +2021-02-04;5.97511114188613 +2021-02-05;101.240121644893 +2021-02-06;103.766043900565 +2021-02-07;52.7243273488364 +2021-02-08;68.7124193984776 +2021-02-09;24.7699235269981 +2021-02-10;118.519011934154 +2021-02-11;72.366803329567 +2021-02-12;114.271575633934 +2021-02-13;22.5772258584814 +2021-02-14;9.45448876418252 +2021-02-15;82.0417788209343 +2021-02-16;113.367188637391 +2021-02-17;69.0559521907761 +2021-02-18;23.3930819081197 +2021-02-19;59.4513861286365 +2021-02-20;11.8306198096613 +2021-02-21;38.6294301996271 +2021-02-22;55.8762511123907 +2021-02-23;69.6027586204646 +2021-02-24;12.4944003236117 +2021-02-25;115.595594989872 +2021-02-26;56.1790065946262 +2021-02-27;64.3230348460476 +2021-02-28;4.86203636954475 + diff --git a/module2/exo4/exercice_python_en.org b/module2/exo4/exercice_python_en.org index 960351a..59d2022 100644 --- a/module2/exo4/exercice_python_en.org +++ b/module2/exo4/exercice_python_en.org @@ -26,3 +26,146 @@ and minimum value, regarding the time spent on each day. * Results of the experiments + I'm using the [[https://pandas.pydata.org/][Pandas library]] to facilitate reading the date from the + CSV file and to learn a new tool :). + + + +#+begin_src python :results value :session *python* :exports both #using value, prints the variable without showing the console output +import pandas as pd # using pandas to facilitate working with date and time +dataframe = pd.read_csv("data.csv", parse_dates=[0], delimiter = ';', header=None) +dataframe +#+end_src + +#+RESULTS: +#+begin_example + 0 1 +0 2021-02-01 81.819914 +1 2021-02-02 45.630108 +2 2021-02-03 70.870649 +3 2021-02-04 5.975111 +4 2021-02-05 101.240122 +5 2021-02-06 103.766044 +6 2021-02-07 52.724327 +7 2021-02-08 68.712419 +8 2021-02-09 24.769924 +9 2021-02-10 118.519012 +10 2021-02-11 72.366803 +11 2021-02-12 114.271576 +12 2021-02-13 22.577226 +13 2021-02-14 9.454489 +14 2021-02-15 82.041779 +15 2021-02-16 113.367189 +16 2021-02-17 69.055952 +17 2021-02-18 23.393082 +18 2021-02-19 59.451386 +19 2021-02-20 11.830620 +20 2021-02-21 38.629430 +21 2021-02-22 55.876251 +22 2021-02-23 69.602759 +23 2021-02-24 12.494400 +24 2021-02-25 115.595595 +25 2021-02-26 56.179007 +26 2021-02-27 64.323035 +27 2021-02-28 4.862036 +#+end_example + + + +* Calculating the average/mean +We can use pandas' [[https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.mean.html][mean method]] + +#+begin_src python :results output :session *python* :exports both #using output, prints only what is shown in the console +average = dataframe[1].mean() +print(average) +#+end_src + +#+RESULTS: +: 59.621437271033706 + +* Calculating the standard deviation +We can use pandas' [[https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.std.html][std method]] +#+begin_src python :results value :session *python* :exports both +std = dataframe[1].std() +std +#+end_src + +#+RESULTS: +: 36.12909565271962 + + +* Calculating the median +We can use pandas' [[https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.median.html][median method]] +#+begin_src python :results value :session *python* :exports both +median = dataframe[1].median() +median +#+end_src + +#+RESULTS: +: 61.88721048734205 + +* Finding the minimum value (time spent) +We can use pandas' [[https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.min.html][min method]] +#+begin_src python :results value :session *python* :exports both +min = dataframe[1].min() +min +#+end_src + +#+RESULTS: +: 4.86203636954475 + +* Finding the day with the minimum time spent studying +We can use pandas' [[https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.idxmin.html][idxmin method]] +#+begin_src python :results output :session *python* :exports both +idmin = dataframe[1].idxmin() +idmin +print (dataframe[0][idmin] , dataframe[1][idmin] ) +#+end_src + +#+RESULTS: +: 2021-02-28 00:00:00 4.86203636954475 + +* Finding the maximum value (time spent) +We can use pandas' [[https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.max.html][max method]] +#+begin_src python :results value :session *python* :exports both +max = dataframe[1].max() +max +#+end_src + +#+RESULTS: +: 118.519011934154 + +* Finding the day with the maximum time spent studying + +We can use pandas' [[https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.idxmax.html][idxmax method]] +#+begin_src python :results output :session *python* :exports both +idmax = dataframe[1].idxmax() +idmax +print (dataframe[0][idmax],dataframe[1][idmax] ) +#+end_src + +#+RESULTS: +: 2021-02-10 00:00:00 118.519011934154 + +* Generating a graphic of the data: + +#+begin_src python :results output file :session *python* :var matplot_lib_filename2="simple_plot.png" :exports both +from matplotlib import pyplot as plt +fig, ax = plt.subplots(figsize=(12, 12)) + + +ax.bar(dataframe.index.values, + dataframe[1], + color='purple') + + +ax.set(xlabel="Date", + ylabel="Time Spent", + title="Daily Time spent studying for the MOOC on reproducible research - feb/2021") + +plt.savefig(matplot_lib_filename2) +print(matplot_lib_filename2) +#+end_src + +#+RESULTS: +[[file:simple_plot.png]] diff --git a/module2/exo4/simple_plot.png b/module2/exo4/simple_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..6542fc7615a9fa11979545e3f33292811e305045 GIT binary patch literal 28284 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 literal 0 HcmV?d00001 -- 2.18.1