Es hermoso poder entender porfin lo todo!, explica todo demasiado claro. Muchas gracias Carlos
LibrerÃas de manipulación de datos con Python
¿Por qué NumPy y Pandas?
NumPy
NumPy Array
Tipos de datos
Dimensiones
Creando arrays
Shape y Reshape
Funciones principales de NumPy
Copy
Condiciones
Operaciones
Quiz: NumPy
Pandas
Series y DataFrames en Pandas
Leer archivos CSV y JSON con Pandas
Filtrado con loc y iloc
Agregar o eliminar datos con Pandas
Manejo de datos nulos
Filtrado por condiciones
Funciones principales de Pandas
groupby
Combinando DataFrames
Merge y Concat
Join
Pivot y Melt
Apply
Quiz: Pandas
Cierre
Posibilidades con Pandas y NumPy
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 13
Preguntas 1
Es hermoso poder entender porfin lo todo!, explica todo demasiado claro. Muchas gracias Carlos
Permiten filtrar datos de manera mas especÃfica. Loc filtra segun un label mientras que iloc lo hace mediante indices.
import pandas as pd
df_books = pd.read_csv('bestsellers-with-categories.csv', sep=',', header=0)
df_books.loc[:] ----> #muestra todos los datos del dataFrame
df_books.loc[0:4] ----> #muestra los datos de la fila 0 a la fila 4
df_books.loc[0:4, ['Name', 'Author']]
----> #filtra los datos de la fila que va de 0 a 4 y de las columnas Name y Author
df_books.loc[:, ['Reviews']] * -1
----> #multiplica por -1 todos los valores de la columna Reviews
df_books.loc[:, ['Author']] == 'JJ Smith'
----> #muestra la columna Author con True en los valores que cumplen la condicion y False para los que no la cumplen
df_books.iloc[:] ---> #muestra todos los datos del dataframe
df_books.iloc[:4, 0:2] ---> #muestra los datos de las filas que van de 0 a 3 y las columnas con indices 0 y 1
df_books.iloc[1,3] ---> #muestra el dato alojado en la fila 1 columna 3
En pandas para hacer un filtro, normalmente se utiliza:
df ['Columna'] == 'argumento'
df['Columna'] > número
df['Columna'].str.startswith('J')
... etc
Por ejemplo:
df_books['Price'] == '17350'
Esto nos trae una serie de booleanos (True, False).
Para traer el dataframe donde esta condición se cumple, colocamos:
df_books[df_books['Reviews'] == 17350]
Lo cuál, en términos generales, serÃa:
df [ filtro ]
Entonces, ¿por qué loc e iloc ?
En los casos que queremos filtrar también por columna. En este caso ponemos:
df.loc[filas, columnas]
df.iloc[filas, columnas]
La diferencia entre estos, es que en loc, en las columnas utilizamos una lista de las que queremos, por su nombre, en iloc debemos hacerlo por Ãndices.
Tengo entendido, basado en otros cursos que:
Loc: Se usa para filtrar colocando entre [ ], los indices que queremos filtrar
iLoc: Se usa para filtrar colocando entre [ ], la posicion que queremos mostrar
LOC se refiere tanto a la etiqueta de la columna como a la de la fila.
En el ejemplo en clase el Ãndice de las filas (rows) era el default (el numerado).
Pero si tenemos nombres de personas como Ãndices rows (del ejercicio que dio el profesor):
import pandas as pd
dictDeListas = {'Posicion':['Delantero', 'Delantero', 'Centrocampista', 'Defensa', 'Centrocampista', 'Portero'],
'Altura':[185.0, 187.0, 185.0, 187.0, 175.0, 190.0],
'Goles':[7, 7, 5, 2, 2, 0]
}
df_dictDeListas = pd.DataFrame(dictDeListas,index=['Luis Suárez','Jorge Molina', 'Antonio Puertas', 'Germán Sánchez', 'Luis Milla', 'Arantes Maximiano'])
df_dictDeListas
!
LOC nos permite:
df_dictDeListas.loc[['Luis Suárez','Antonio Puertas'], ['Posicion','Goles']]
Otra diferencia es al momento de hacer slicing, ya que con loc se incluye la última posición indicada mientras que con iloc no la incluye.
## ILOC
## No incluye la posición 4
df_books.iloc[0:4]
## LOC
## Incluye la posición 4
df_books.loc[0:4]
Excelente clase
Para lo que depronto esten trabajando en jupyter notebook
y el comando
df_books.loc[1:4,[['Name','Year]]
No les este funcionando, pueden intentar esta forma de escribir
`df_books.loc[1:4][['Name', 'Year']]e>
Una muy buena herramienta para poder hacer filtros a las matrices. De esa forma se pueden encontrar mejor los datos necesarios y por ende manipularse con mayor facilidad.
Slicing
Tambien podemos acceder a las columnas del df asi:
df_books.Nombre_de_columna
–> df_books.Price
Ojo el nombre de la columa despues del punto no puede tener espacio si no da error y tenemos q llamar la columna con los corchetes asi
–> df_books['User Rating"]
Las operaciones de filtrado son parecidas si no es q iguales a las de numpy, solo porq podemos filtrar por columnas:
si quisieramos el nombre de los libros con rating menor a 4
–> libros.loc[libros[‘User Rating’]<4,‘Name’]
Obtendriamos:
–> Name
22 Allegiant
106 Fifty Shades of Grey: Book One of the Fifty Sh…
107 Fifty Shades of Grey: Book One of the Fifty Sh…
132 Go Set a Watchman: A Novel
353 The Casual Vacancy
392 The Goldfinch: A Novel (Pulitzer Prize for Fic…
393 The Goldfinch: A Novel (Pulitzer Prize for Fic…
O si lo hicieramos asà obtendriamos lo mismo:
libros[libros[‘User Rating’]<4][‘Name’]
otra alternativa tambien al filtrar y usar operadores logicos es hacerlo asi.
por ejemplo si queremos mostrar el df de los libros del 2016:
libros[libros.Year.eq(2016)]
.eq() es ==
.gt() es >
.lt() es <
property DataFrame.iloc
Purely integer-location based indexing for selection by position.
.iloc[] is primarily integer position based (from 0 to length-1 of the axis), but may also be used with a boolean array.
property DataFrame.loc
Access a group of rows and columns by label(s) or a boolean array.
.loc[] is primarily label based, but may also be used with a boolean array.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.