cha0smagick commited on
Commit
712861f
verified
1 Parent(s): 2239d53

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -61
app.py CHANGED
@@ -2,65 +2,53 @@ import streamlit as st
2
  import requests
3
  import pandas as pd
4
  import matplotlib.pyplot as plt
5
- import time
6
 
7
- # Definir la URL y la clave de la API
8
- API_URL = "https://api.minerstat.com/v2/coins"
9
- HEADERS = {
10
- 'x-rapidapi-host': 'coingecko.p.rapidapi.com',
11
- 'x-rapidapi-key': 'c4b66a3c25msh950412fab4eaee1p159dbfjsn4'
12
- }
13
-
14
- def get_top_25_coins():
15
- # Obtener los datos de las criptomonedas m谩s valiosas
16
- try:
17
- response = requests.get(API_URL)
18
- if response.status_code == 200:
19
- data = response.json()
20
- # Seleccionar las 25 criptomonedas m谩s valiosas
21
- top_25_coins = sorted(data, key=lambda x: x['price'], reverse=True)[:25]
22
- return top_25_coins
23
- else:
24
- st.error("Error al obtener los datos de la API.")
25
- except Exception as e:
26
- st.error(f"Excepci贸n al obtener datos: {e}")
27
-
28
- def main():
29
- st.title("Top 25 Criptomonedas M谩s Valiosas")
30
- st.sidebar.header("Opciones")
31
-
32
- # Bot贸n para actualizar los datos
33
- if st.sidebar.button("Actualizar Datos"):
34
- with st.spinner("Obteniendo los datos..."):
35
- top_25_coins = get_top_25_coins()
36
- if top_25_coins:
37
- # Convertir los datos a DataFrame para una mejor visualizaci贸n
38
- df = pd.DataFrame(top_25_coins)
39
- st.write(df[['coin', 'name', 'price', 'volume', 'reward_block']])
40
-
41
- # Mostrar las estad铆sticas en forma gr谩fica
42
- st.write("### Precio de las Top 25 Criptomonedas")
43
- fig, ax = plt.subplots()
44
- ax.barh(df['name'], df['price'], color='skyblue')
45
- ax.set_xlabel('Precio (USD)')
46
- ax.set_ylabel('Criptomoneda')
47
- ax.set_title('Precio de las Top 25 Criptomonedas')
48
- st.pyplot(fig)
49
-
50
- # Graficar la fluctuaci贸n del volumen
51
- st.write("### Volumen de las Top 25 Criptomonedas")
52
- fig, ax = plt.subplots()
53
- ax.plot(df['name'], df['volume'], color='green', marker='o')
54
- ax.set_xlabel('Criptomoneda')
55
- ax.set_ylabel('Volumen (USD)')
56
- ax.set_title('Volumen de las Top 25 Criptomonedas')
57
- ax.grid(True)
58
- plt.xticks(rotation=45)
59
- st.pyplot(fig)
60
- else:
61
- st.error("No se pudieron obtener los datos.")
62
-
63
- st.write("Presiona el bot贸n en el men煤 lateral para actualizar los datos.")
64
-
65
- if __name__ == "__main__":
66
- main()
 
2
  import requests
3
  import pandas as pd
4
  import matplotlib.pyplot as plt
 
5
 
6
+ # Lista de criptomonedas
7
+ cryptos = [
8
+ "BTC", "ETH", "USDT", "BNB", "XRP", "ADA", "DOGE", "SOL", "DOT",
9
+ "USDC", "LTC", "LINK", "MATIC", "AVAX", "XLM", "BCH", "SHIB",
10
+ "UNI", "ATOM", "ALGO", "VET", "XMR", "FIL", "TRX", "XTZ",
11
+ "AAVE", "HBAR", "ICP", "EGLD", "THETA"
12
+ ]
13
+
14
+ # Funci贸n para obtener datos de la API
15
+ def get_crypto_data():
16
+ url = "https://api.minerstat.com/v2/coins"
17
+ params = {
18
+ 'list': ','.join(cryptos)
19
+ }
20
+ headers = {
21
+ 'x-rapidapi-host': 'coingecko.p.rapidapi.com',
22
+ 'x-rapidapi-key': 'c4b66a3c25msh950412fab4eaee1p159dbfjsn4'
23
+ }
24
+
25
+ response = requests.get(url, headers=headers, params=params)
26
+ return response.json()
27
+
28
+ # Inicializar la aplicaci贸n
29
+ st.title("Estad铆sticas de Criptomonedas")
30
+ st.markdown("Esta aplicaci贸n muestra las estad铆sticas de las 30 criptomonedas m谩s populares.")
31
+
32
+ # Bot贸n para actualizar datos
33
+ if st.button("Actualizar datos"):
34
+ data = get_crypto_data()
35
+ df = pd.DataFrame(data)
36
+
37
+ # Mostrar datos en una tabla
38
+ st.subheader("Estad铆sticas de las Criptomonedas")
39
+ st.dataframe(df[['coin', 'name', 'price', 'volume', 'algorithm', 'difficulty', 'reward_block']])
40
+
41
+ # Gr谩fica de precios
42
+ st.subheader("Fluctuaci贸n de Precios")
43
+ prices = df['price'].astype(float)
44
+ plt.figure(figsize=(10, 5))
45
+ plt.plot(prices, marker='o')
46
+ plt.title('Fluctuaci贸n de Precios de Criptomonedas')
47
+ plt.xticks(range(len(cryptos)), cryptos)
48
+ plt.xlabel('Criptomonedas')
49
+ plt.ylabel('Precio en USD')
50
+ plt.grid()
51
+ st.pyplot(plt)
52
+
53
+ else:
54
+ st.write("Presiona el bot贸n para actualizar los datos.")