<jupyter_start><jupyter_text>![imagen](../../imagenes/ejercicios.png) Ejercicio SQL con PandasVamos a repetir el mismo ejercicio que vimos para SQL pero con Pandas, para que veamos la potencia que tiene lo que estamos haciendo.Para este ejercicio usaremos una base de datos del FIFA 20. **Asegúrante que tienes el CSV "FIFA20.csv" en la misma carpeta donde está este Notebook**. Realiza los siguientes apartados:1. Obtén una tabla con todos los campos2. Obtén una tabla con los campos "short_name", "club", "team_position"3. Obtén la misma tabla que el apartado anterior, pero en este caso renombrando los campos al castellano.4. ¿Cuáles son todos los "team_position" diferentes?5. ¿Cuáles son todos los "team_position" y "preferred_foot" diferentes?6. ¿Cuáles son los jugadores diestros? ("preferred_foot" = "Right")7. Obtén una tabla con los jugadores influencers8. Obtén una tabla con los extremos izquierda ('team_position' = 'LW') influencers9. Obtén una tabla con los jugadores cuyo nombre empieze por "W" y tenga una puntuación ('overall') mayor de 80 puntos.  1. ¿Y si ponemos el límite de la puntuación en mayor de 90 puntos?10. Saca una tabla con los jugadores del Real Madrid, que NO sean diestros y tengan un potencial superior a 8511. ¿Cuál es el jugador con la puntuación ('overall') más alta?12. ¿Cuál es la media del valor (value_eur) de todos los jugadores, en millones de euros, sabiendo que las unidades del valor de la tabla son euros?13. ¿Cuál es la media del salario por equipo?14. Calcula la máxima puntuación ('overall') por "'preferred_foot'**NOTA**: se recomienda añadir un `LIMIT 5` en la mayoría de apartados para evitar grandes outputs de las queries.<jupyter_code># Importamos paquetes
import pandas as pd
import numpy as np

# Leemos datos de un CSV
df = pd.read_csv('FIFA20.csv')
df.head()
# 1. Obten una tabla con todos los campos
df
# 2. Obtén una tabla con los campos "short_name", "club", "team_position"
df[['short_name', 'club', 'team_position']]
# 3. Obtén la misma tabla que el apartado anterior, pero en este caso renombrando los campos al castellano.
df[['short_name', 'club', 'team_position']].rename({'short_name': 'nombre_corto', 'club': 'equipo', 'team_position': 'posicion_equipo'}, axis=1)
# 4. ¿Cuáles son todos los "team_position" diferentes? PAra este deberás
df['team_position'].drop_duplicates()
# 5. ¿Cuáles son todos los "team_position" y "preferred_foot" diferentes?
df[['team_position', 'preferred_foot']].drop_duplicates()
# 6. ¿Cuáles son los jugadores diestros? ("preferred_foot" = "Right")
df[df["preferred_foot"] == "Right"]
# 7. Obtén una tabla con los jugadores influencers
df[df['influencer'] == True]
# 8. Obtén una tabla con los extremos izquierda ('team_position' = 'LW') influencers
df[(df["team_position"] == "LW") & (df["influencer"] == True)]
# 9. Obtén una tabla con los jugadores cuyo nombre empieze por "W" y tenga una puntuación ('overall') mayor de 80 puntos
df[(df['long_name'].apply(lambda x: x[0] == "W")) & (df['overall'] > 80)]
# 9. ¿Y si en lugar de 80, buscamos que la puntuación sea mayor de 90?
df[(df['long_name'].apply(lambda x: x[0] == "W")) & (df['overall'] > 90)]<jupyter_output><empty_output><jupyter_text>Correcto. Ninguno lo cumple<jupyter_code># 10. Saca una tabla con los jugadores del Real Madrid, que NO sean diestros y tengan un potencial superior a 85
df[(df['club'] == "Real Madrid") & (df['preferred_foot'] != "Right") & (df['potential'] > 85)]
# 11. ¿Cuál es el jugador con la puntuación ('overall') más alta?
df.sort_values(by='overall', ascending = False).iloc[:1]
df[df['overall'] == df['overall'].max()]

# 12. ¿Cuál es la media del valor (value_eur) de todos los jugadores, en millones de euros, sabiendo que las unidades del valor de la tabla son euros?
df['value_eur'].mean()
# 13. ¿Cuál es la media del salario por equipo? Ordena el resultado de mayor a menor salario
df.groupby("club").agg({'wage_eur': np.mean}).sort_values('wage_eur', ascending=False)
# 14. Calcula la máxima puntuación ('overall') por club. Ordena el resultado de menor a mayor puntuación
df.groupby("club").agg({'overall': np.max}).sort_values('overall', ascending = False)
# df.groupby("club").agg({'overall': [np.max, np.min]}).sort_values(('overall', 'amax'), ascending = False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12505822077317186, 'fraction_numerical': 0.016534699580810434, 'mean_word_length': 5.507575757575758, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 12, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '282232', 'license': 'MIT', 'n_tokens_mistral': 1558, 'n_tokens_neox': 1489, 'n_words': 543, 'path': 'Bloque 2 - Data_Analyst/02_Manejo de datos/01_Combinando datos/05_RESU_Ejercicios Pandas SQL.ipynb', 'repo_name': 'JuanDG5/bootcamp_thebridge_PTSep20', 'size': '4294'}