Un pequeño aporte por si requieren cambiar el tipo de variable de una columna en su DataFrame. En mi caso convertí las tipo Object a String.
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 11
Preguntas 1
Un pequeño aporte por si requieren cambiar el tipo de variable de una columna en su DataFrame. En mi caso convertí las tipo Object a String.
Una función que me gusta utilizar con los datos y saber si un feature se encuentra ligeramente sesgado o no, es usando el método skew()
de pandas
csv['User Rating'].skew()
>> -1.5075394905940473
Una función interesante puede ser groupby en unión con size. En este caso quise responder a la pregunta ¿Cuántos libros son ficción?
df.groupby('Genre').size()
Genre
Fiction 240
Non Fiction 311
dtype: int64
✅ .head() → trae los primeros datos
✅ .info() → Columnas, indices, cuales noson nulos, tipo de dato que maneja
✅ .describe() → Solo de las columnas numericas me arroja datos estadisticos [ media,max,miun,mediana,etc ]
✅ .memory_usage() → memoria utilizada
✅ .value_counts() → cuenta valores de una columna
✅ .drop_duplicates() → elimina los valores repetidos
✅ .sort_values( columna para ordenar ) → Se puede ordenar de forma descendiente con la bandera ascending=False
···· Probando el drop_duplicate
Re laaarga pero espero que les sirva [AL FINAL DEL CURSO subo el Notion y G colab por si lo quieren]
import pandas as pd
df_books = pd.read_csv('bestsellers-with-categories.csv', sep=',', header=0)
df_books.head(2) ---> #muestra los primeros dos registros del dataFrame
df_books.info()
--->
RangeIndex: 550 entries, 0 to 549 #numero de registro
Data columns (total 7 columns): #total de columnas
# Column Non-Null Count Dtype #tipos de cada columna
--- ------ -------------- -----
0 Name 550 non-null object
1 Author 550 non-null object
2 User Rating 550 non-null float64
3 Reviews 550 non-null int64
4 Price 550 non-null int64
5 Year 550 non-null int64
6 Genre 550 non-null object
dtypes: float64(1), int64(3), object(3)
memory usage: 30.2+ KB
df_books.describe()
---> User.Rating Reviews Price Year
count 550 550 550 550
mean 4.618 11953.281 13.1 2014
std 0.226 11731.132 10.84 3.165
min 3.3 37 0 2009
25% 4.5 4058 7 2011
50% 4.7 8580 11 2014
75% 4.8 17253.25 16 2017
max 4.9 87841 105 2019
df_books.tail()
---> #muestra los ultimos 5 registros
df_books.memory_usage(deep=True)
--->
Index 128
Name 59737
Author 39078
User Rating 4400
Reviews 4400
Price 4400
Year 4400
Genre 36440
dtype: int64
df_books.iloc[0]
---> #obtiene la informacion del registro con indice 0
Name 10-Day Green Smoothie Cleanse
Author JJ Smith
User Rating 4.7
Reviews 17350
Price 8
Year 2016
Genre Non Fiction
Name: 0, dtype: object
df_books.drop_duplicates()
df_books.drop_duplicates(keep='last')
df_books.sort_values('Year')
---> #ordena los valores de menor a mayor segun el año
df_books.sort_values('Year', ascending=False)
---> #ordena los valores de mayor a menor segun el año
Esta clase ES lo que se pide en una prueba técnica. A PRACTICAR SE HA DICHO!
Hallazgos:
sep = ' , '
no funciona sep = ' ; '
.
.set_idex(#nombre de la columna)
👾
Las funciones ISIN y WHERE son muy útiles en mi opinión.
Si trabajamos con los autores del dataframe de la clase. Vemos la ocurrencia de cada autor.
df_books = pd.read_csv('/content/VIDEO 12 bestsellers-with-categories.csv',sep=',',header=0)
df_books['Author'].value_counts()
Jeff Kinney 12
Gary Chapman 11
Rick Riordan 11
Suzanne Collins 11
American Psychological Association 10
…
Keith Richards 1
Chris Cleave 1
Alice Schertle 1
Celeste Ng 1
Adam Gasiewski 1
Name: Author, Length: 248, dtype: int64
Con ISIN podemos filtrar el dataframe para tener un dataframe de determinados autores.
df_books[df_books.Author.isin(['Adam Gasiewski','Celeste Ng','Alice Schertle','Chris Cleave'])]
WHERE dada una condición asigna determinado valor a los registros que no lo cumplen.
Para nuestro caso los registros que no tienen estos autores en la columna de autores les asignamos el valor otros autores.
newdf = df_books.where(df_books.Author.isin(['Jeff Kinney','Gary Chapman','Rick Riordan','Suzanne Collins']),'otros autores')
Entonces ahora tenemos un dataframe con 4 autores diferenciados de los demas. Si queremos hacer estadisticas con respecto al resto.
newdf['Author'].value_counts()
otros autores 505
Jeff Kinney 12
Suzanne Collins 11
Rick Riordan 11
Gary Chapman 11
Name: Author, dtype: int64
Esta sentencia me permite ver los registros que tengan la palabra clave que desee buscar
El metodo combine_first() esta muy interesante ya que toma dos dataframes y completa los valores que hacen falta con el otro (el dataFrame que uno elija primero). Aqui un ejemplo
Resultado!!
Además de la función describe, se puede consultar el valor estadístico en cuestión para cada columna individualmente:
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.