-
Notifications
You must be signed in to change notification settings - Fork 67
/
opcionesByma.py
40 lines (29 loc) · 1.47 KB
/
opcionesByma.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import pandas as pd
url = 'http://www.rava.com/precios/panel.php?m=OPC'
# Esta linea lee a url, el [8] es porque es la 8va tabla de la pagina la que tiene las opciones
df = pd.read_html(url, thousands='.')[8]
# Esta linea le pone como nombres de columnas los valores que estaban en la primera fila
df.columns = list(df.loc[0,:])
# Esta linea elimina la primera fila que estaba con nombres de columnas
df = df.drop(0,axis=0)
# Esta linea remplaza las comas por puntos ya que pandas transforma a numero los flotantes con punto no con coma
df = df.replace(',','.',regex=True)
# Esta linea transforma a numero las columnas de 1 a 7 y redondea a 2 decimales
df[df.columns[1:7]] = df[df.columns[1:7]].apply(pd. to_numeric, errors='coerce').round(2)
# Esta Línea hace lo propio con las dos ultimas pero como son enteros no hace falta redondear
df[df.columns[8:10]] = df[df.columns[8:10]].apply(pd. to_numeric, errors='coerce')
# Lo guardo en un excel
df. to_excel('opciones.xlsx')
# Imprimo el DataFrame
print(df)
'''
# O Directamente esta función aun mas comprimida:
# OPC: Opciones, CED: Cedears, LID: Panel lider
def rava(panel):
tabs = {'OPC':8,'CED':8,'LID':9,}
url = 'http://www.rava.com/precios/panel.php?m='+panel
df = pd.read_html(url, thousands='.',header=0)[tabs[panel]]
df = df.replace(',','.',regex=True).set_index('Especie').drop(['Hora'],axis=1)
df = df.apply(pd. to_numeric, errors='coerce').round(2)
return df
'''