In [64]:
!pip install geocoder
!pip install tqdm
!pip install folium


Collecting geocoder
  Downloading geocoder-1.22.6-py2.py3-none-any.whl (69kB)
Collecting ratelim (from geocoder)
  Downloading ratelim-0.1.6-py2.py3-none-any.whl
Requirement already satisfied: click in c:\users\paulalsouza\appdata\local\continuum\anaconda3\lib\site-packages (from geocoder)
Requirement already satisfied: six in c:\users\paulalsouza\appdata\local\continuum\anaconda3\lib\site-packages (from geocoder)
Requirement already satisfied: requests in c:\users\paulalsouza\appdata\local\continuum\anaconda3\lib\site-packages (from geocoder)
Requirement already satisfied: decorator in c:\users\paulalsouza\appdata\local\continuum\anaconda3\lib\site-packages (from ratelim->geocoder)
Installing collected packages: ratelim, geocoder
Successfully installed geocoder-1.22.6 ratelim-0.1.6
Collecting tqdm
  Downloading tqdm-4.14.0-py2.py3-none-any.whl (46kB)
Installing collected packages: tqdm
Successfully installed tqdm-4.14.0
Collecting folium
  Downloading folium-0.3.0-py3-none-any.whl (71kB)
Requirement already satisfied: Jinja2 in c:\users\paulalsouza\appdata\local\continuum\anaconda3\lib\site-packages (from folium)
Collecting branca (from folium)
  Downloading branca-0.2.0-py3-none-any.whl
Requirement already satisfied: six in c:\users\paulalsouza\appdata\local\continuum\anaconda3\lib\site-packages (from folium)
Requirement already satisfied: MarkupSafe>=0.23 in c:\users\paulalsouza\appdata\local\continuum\anaconda3\lib\site-packages (from Jinja2->folium)
Installing collected packages: branca, folium
Successfully installed branca-0.2.0 folium-0.3.0

In [65]:
#A biblioteca faz uma solicitação GET ao servidor, que fará o download dos conteúdos HTML da página solicitada para nós. 
import requests
from bs4 import BeautifulSoup

page = requests.get("https://weather.com/weather/tenday/l/BRXX0158:1:BR") #Natal

#Instância da classe BeautifulSoup
soup = BeautifulSoup(page.content, 'html.parser')

#Exibe todo o HTML da página
#NÃO RODAR POIS O HTML É MUITO GRANDE E DEMORA
#print(soup.prettify())

#Um status_code com resultado 200 significa que a página foi baixada com sucesso
page.status_code


Out[65]:
200

In [72]:
#Encontra todas as instâncias
ten_days = soup.find_all("tr", class_="clickable")
ten_days.pop(0)
days_max = []
days_min = []
precips = []
humidity = []

for day in ten_days:
    days_max.append(int(day.find("td", class_="temp").find_all("span")[0].get_text().encode('ascii', 'ignore')))
    days_min.append(int(day.find("td", class_="temp").find_all("span")[2].get_text().encode('ascii', 'ignore')))
    precips.append(int(day.find("td", class_="precip").find_all("span")[2].get_text().encode('ascii', 'ignore')[:-1]))
    humidity.append(int(day.find("td", class_="humidity").find_all("span")[0].get_text().encode('ascii', 'ignore')[:-1]))
for i in range(14):
    print(str(((days_max[i]-32)/1.8))+"ºC " + str(((days_min[i]-32)/1.8))+"ºC "+str(precips[i])+"% "+str(humidity[i])+"%")


---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-72-b0b6e7422316> in <module>()
      1 #Encontra todas as instâncias
      2 ten_days = soup.find_all("tr", class_="clickable")
----> 3 ten_days.pop(0)
      4 days_max = []
      5 days_min = []

IndexError: pop from empty list

In [73]:
import pandas as pd

#Cada lista de itens que temos é passada como parte de um dicionário
#Cada chave do dicionário vai se tornar uma coluna no DataFrame, e cada lista se tornará os valores da coluna.


weather = pd.DataFrame({
        "max": days_max, 
        "min": days_min, 
        "precips": precips, 
        "humidity":humidity
    })
weather


Out[73]:
humidity max min precips

In [74]:
weather.head()


Out[74]:
humidity max min precips

In [75]:
weather.columns


Out[75]:
Index(['humidity', 'max', 'min', 'precips'], dtype='object')

In [76]:
weather.shape


Out[76]:
(0, 4)

In [77]:
df["humidity"].value_counts().sort_index().plot.pie(autopct="%1.0f%%", label="Desempenho Geral", colors=["green", "red"])


Out[77]:
<matplotlib.axes._subplots.AxesSubplot at 0x124a19f46d8>

In [ ]:
# Create a Pandas dataframe from the data.
'''df = pd.DataFrame({
        "max": days_max, 
        "min": days_min, 
        "precips": precips, 
        "humidity":humidity})

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('temperature.xlsx', engine='xlsxwriter')

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1')

# Get the xlsxwriter objects from the dataframe writer object.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
'''

In [78]:
temp_nums = weather["precips"]
#weather["temp_num"] = temp_nums.astype('double')
temp_nums


Out[78]:
Series([], Name: precips, dtype: float64)

In [54]:
weather["precips"].mean()


Out[54]:
39.285714285714285

In [ ]:


In [ ]:


In [ ]:


In [ ]: