Going into a Data Science Python course!
Tags: datascience, python, course, udemy
Published: 2020-03-19 18:39:56

Hi guys!

As you know by my previous posts (in the Portuguese blog), I've been doing a [mini-course at Udemy](https://www.udemy.com/course/visualizacao-de-dados-com-python/) about data visualization in Python. This course was recommended for helping me to learn Python, so I can join the AI lab in my university ASAP. 

First, I was formally presented to [matplotlib.pyplot](https://matplotlib.org/api/pyplot_summary.html) with the import command:
`import matplotlib.pyplot as mpl` or `as plt`

Next, I met the [Google Colab platform](https://colab.research.google.com), which is a Python notebook, and helped me a lot, since I can't download a Python IDE on the computer I'm currently using.

I made a line graph, with the following code (please try, it was a cute experience):

``` python
import matplotlib.pyplot as plt 

x = [1, 2] #giving x and y some values so I can plot something
y = [2, 3]

plt.plot(x, y) #plotting the graph
plt.show() #show the graph when I hit "Run"
```
After creating my first graph, I did the legend, so I could identify things inside what I created.

``` python
import matplotlib.pyplot as plt 

x = [1, 2, 5] #I added one more value in each variable 
y = [2, 3, 7]

plt.title("My first graph") #this is a title for my graph
plt.xlabel("Axis X") #creating labels for each axis
plt.ylabel("Axis Y")

plt.plot(x, y) 
plt.show()
```
Now that we learned how to do line graphs, shall we do bar graphs?

``` python
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5] #now, x represents each one of the bars
y = [2, 3, 7, 1, 0] #and y, their sizes

titulo = "Bar graph"
eixox = "Axis X"               #creating variables for the legends
eixoy = "Axis Y"

plt.title(titulo)
plt.xlabel(eixox)
plt.ylabel(eixoy)

plt.bar(x, y) #plotting the bar graph
plt.show()
```
Now we, with the knowledge we got about these two types of graphs, can do at least two things: compare graphs and/or unite them!

``` python
import matplotlib.pyplot as plt

x1 = [1, 3, 5, 7, 9] #odd numbers for the bars!
y1 = [2, 3, 7, 1, 0] #random numbers for their sizes: unaltered

x2 = [2, 4, 6, 8, 10] #even numbers for other bars
y2 = [5, 1, 3, 7, 4] #more random numbers, but they weren't here before

titulo = "Bar graphs"
eixox = "Axis X" #"eixo" is Portuguese for "axis"
eixoy = "Axis Y"
                             #this part you already know
plt.title(titulo)
plt.xlabel(eixox)
plt.ylabel(eixoy)

plt.bar(x1, y1)
plt.bar(x2, y2) #one and then another, but are shown together!

plt.show()
```
We can also unite n types of graphs! You can enter a `plt.plot(x, y)` in the bar graphs code, for example. But we have one more type of graph: Scatterplot, or dispersion graph. Call it by `plt.scatter(x, y)`.

Quick note for this English version: in the Portuguese one, I've shown some images of the graphs I did so you can see how it is if you can't access Google Colab now. So I wrote thinking about the images that could be seen and now I'm adapting to DEV.

You may have seen that in the comparative graphs the colors change. Actually, these are the default colors, but you can change them to any hue you want (using mainly the color codes of plt, which you can find [here](https://matplotlib.org/3.2.0/tutorials/colors/colors.html)), with the color tag, as in `plt.scatter(x, y, color="r")`, where I'm changing the color of the dots to red. You can also use the label tag to make captions for the graph, as in `plt.plot(x, y, label="My line")`, but using `plt.legend()` after it so the caption can show up in the image.

You can save your figures with `plt.savefig("figurename.png")`, being that "png" can be altered to "pdf" if we want a vectorized image, so it has a (really) good print quality. We have the dpi tag, which can be used to define the quality of the image. A good dpi value is, apparently, 300, and a so-so is by 72. You can use `plt.savefig("figurename.png", dpi=300)`.

The course has a small case study with info from 1980 to 2016 about the increase in the Brazilian population, and then we're presented to the boxplot. Boxplots are box-shaped diagrams which represent variation in data per quartile. This is my current subject in Probability and Statistics, so I was very interested. 

Basically, if you enter a code like this one:

``` python
import matplotlib.pyplot as plt
import random #a Python library for generating random numbers!

vetor = [] #a small vector to put values on
for i in range(100): #for a i value from (I guess) 0 to 99...
	numAleatorio = random.randint(0, 50) #random number ("número aleatório") is somewhere between 0 and 50
	vetor.append(numAleatorio) #vector receives this number so we can create the boxplot

plt.boxplot(vetor) #and then he plots the boxplot with the vector value
plt.show()
```
...and then press Run, it generates another image, but it's not like the other graphs, so let me explain what I know about it.

If there was something over the top (that line), that would represent values which are very different from what was asked. The above line represents the maximum that this number can be (50). Talking about 50, the main rectangle in the figure represents 50% of the obtained data. The lower line is the minimum, zero.

But where are Statistics in this? See: quartiles are fractions of a given quantity that was divided by 4. So the rectangle contains two quartiles, since 2/4 = 50%. The first line is 0%. The second (when the rectangle "begins") is 25% (1st quartile). The median (the red line) represents 50% (2nd quartile). The above line represents 75% (3rd quartile). The maximum, 100%, is the fourth quartile.

To complete the course, there was a case study about Bioinformatics, but for some reason [I still haven't figured out completely](https://pt.stackoverflow.com/questions/440646/keyerror-r-no-python-do-google-colab), my code was resulting in many errors. I put the code on StackOverflow and I hope someone, someday, will help me to find the error. Also, if you could even look at it, I would be very thankful. *Edit: I've figured it out somehow. The link is now deactivated.*

I recommend this course for people who, like me, are starting to learn Python and Data Science things. 
If you tried it, please leave your feedback in the comments :)