Una introducción amigable al análisis de datos en Python

Con los años, el uso de python para la ciencia de datos ha crecido increíblemente y sigue creciendo a diario..


La ciencia de datos es un vasto campo de estudio con muchos subcampos, de los cuales el análisis de datos es indiscutiblemente uno de los más importantes de todos estos campos, e independientemente del nivel de habilidad de uno en ciencia de datos, se ha vuelto cada vez más importante entender o tener al menos un conocimiento básico.

¿Qué es el análisis de datos??

El análisis de datos es la limpieza y transformación de una gran cantidad de datos no estructurados o no organizados, con el objetivo de generar información clave e información sobre estos datos que ayudaría a tomar decisiones informadas.

Hay varias herramientas utilizadas para el análisis de datos, Python, Microsoft Excel, Tableau, SaS, etc., pero en este artículo, nos centraremos en cómo se realiza el análisis de datos en python. Más específicamente, cómo se hace con una biblioteca de Python llamada Pandas.

¿Qué es pandas??

Pandas es una biblioteca de Python de código abierto que se utiliza para manipular y disputar datos. Es rápido y altamente eficiente y tiene herramientas para cargar varios tipos de datos en la memoria. Se puede usar para remodelar, etiquetar rebanadas, indexar o incluso agrupar varias formas de datos.

Estructuras de datos en pandas

Hay 3 estructuras de datos en Pandas, a saber;

  • Serie
  • Marco de datos
  • Panel

La mejor manera de diferenciar a los tres es ver que uno contiene varias pilas del otro. Entonces, un DataFrame es una pila de series y un Panel es una pila de DataFrames.

Una serie es una matriz unidimensional

Una pila de varias series crea un DataFrame bidimensional

Una pila de varios marcos de datos crea un panel tridimensional

La estructura de datos con la que estaríamos trabajando más es el DataFrame bidimensional que también puede ser el medio de representación predeterminado para algunos conjuntos de datos que podríamos encontrar.

Análisis de datos en pandas

Para este artículo, no se necesita instalación. Estaríamos usando una herramienta llamada colaborativo creado por Google. Es un entorno de python en línea para análisis de datos, aprendizaje automático e inteligencia artificial. Es simplemente un Jupyter Notebook basado en la nube que viene preinstalado con casi todos los paquetes de Python que necesitaría como científico de datos.

Ahora, dirígete a https://colab.research.google.com/notebooks/intro.ipynb. Deberías ver lo siguiente.

En la navegación superior izquierda, haga clic en la opción de archivo y haga clic en la opción “nuevo cuaderno”. Vería una nueva página de notebook Jupyter cargada en su navegador. Lo primero que debemos hacer es importar pandas a nuestro entorno de trabajo. Podemos hacerlo ejecutando el siguiente código;

importar pandas como pd

Para este artículo, estaríamos utilizando un conjunto de datos de precios de la vivienda para nuestro análisis de datos. El conjunto de datos que estaríamos utilizando se puede encontrar aquí. Lo primero que queremos hacer es cargar este conjunto de datos en nuestro entorno.

Podemos hacer eso con el siguiente código en una nueva celda;

df = pd.read_csv (‘https://firebasestorage.googleapis.com/v0/b/ai6-portfolio-abeokuta.appspot.com/o/kc_house_data.csv?alt=media &token = 6a5ab32c-3cac-42b3-b534-4dbd0e4bdbc0 ‘, sep =’, ‘)

El .read_csv se usa cuando queremos leer un archivo CSV y pasamos una propiedad sep para mostrar que el archivo CSV está delimitado por comas.

También debemos tener en cuenta que nuestro archivo CSV cargado se almacena en una variable df .

No necesitamos usar la función print () en Jupyter Notebook. Simplemente podemos escribir un nombre de variable en nuestra celda y Jupyter Notebook lo imprimirá por nosotros..

Podemos probarlo escribiendo df en una nueva celda y ejecutándola, imprimirá todos los datos de nuestro conjunto de datos como un DataFrame para nosotros.

Pero no siempre queremos ver todos los datos, a veces solo queremos ver los primeros datos y sus nombres de columna. Podemos usar la función df.head () para imprimir las primeras cinco columnas y df.tail () para imprimir las últimas cinco. El resultado de cualquiera de los dos se vería como tal;

Nos gustaría verificar las relaciones entre estas varias filas y columnas de datos. La función .describe () hace exactamente esto por nosotros.

 Ejecutar df.describe () da el siguiente resultado;

Podemos ver de inmediato que .describe () proporciona la media, la desviación estándar, los valores mínimos y máximos y los percentiles de todas y cada una de las columnas del DataFrame. Esto es muy útil particularmente.

También podemos verificar la forma de nuestro Marco de datos 2D para averiguar cuántas filas y columnas tiene. Podemos hacerlo usando df.shape que devuelve una tupla en el formato (filas, columnas).

También podemos verificar los nombres de todas las columnas en nuestro DataFrame usando df.columns.

¿Qué sucede si queremos seleccionar solo una columna y devolver todos los datos que contiene? Esto se hace de una manera similar a cortar un diccionario. Escriba el siguiente código en una nueva celda y ejecútelo

df [‘precio’]

El código anterior devuelve la columna de precios, podemos ir más allá guardándola en una nueva variable como tal

precio = df [‘precio’]

Ahora podemos realizar cualquier otra acción que se pueda realizar en un DataFrame en nuestra variable de precio, ya que es solo un subconjunto de un DataFrame real. Podemos hacer cosas como df.head (), df.shape, etc…

También podríamos seleccionar varias columnas pasando una lista de nombres de columnas a df como tal

data = df [[” precio ‘,’ dormitorios ‘]]

Lo anterior selecciona columnas con los nombres “precio” y “dormitorios”, si escribimos data.head () en una nueva celda, tendríamos lo siguiente

La forma anterior de segmentar columnas devuelve todos los elementos de fila en esa columna, ¿qué sucede si queremos devolver un subconjunto de filas y un subconjunto de columnas de nuestro conjunto de datos? Esto se puede hacer usando .iloc y se indexa de forma similar a las listas de Python. Entonces podemos hacer algo como

df.iloc [50:, 3]

Que devuelve la tercera columna desde la fila 50 hasta el final. Es bastante ordenado e igual que cortar las listas en Python.

Ahora hagamos algunas cosas realmente interesantes, nuestro conjunto de datos de precios de la vivienda tiene una columna que nos dice el precio de una casa y otra columna nos dice la cantidad de habitaciones que tiene esa casa en particular. El precio de la vivienda es un valor continuo, por lo que es posible que no tengamos dos casas que tengan el mismo precio. Pero el número de habitaciones es algo discreto, por lo que podemos tener varias casas con dos, tres, cuatro habitaciones, etc..

¿Qué sucede si queremos obtener todas las casas con el mismo número de habitaciones y encontrar el precio promedio de cada habitación discreta? Es relativamente fácil hacer eso en pandas, se puede hacer como tal;

df.groupby (‘dormitorios’) [‘precio’] .mean ()

Lo anterior primero agrupa el DataFrame por los conjuntos de datos con un número de dormitorio idéntico usando la función df.groupby (), luego le decimos que nos dé solo la columna del dormitorio y use la función .mean () para encontrar la media de cada casa en el conjunto de datos.

¿Qué pasa si queremos visualizar lo anterior? ¿Nos gustaría poder comprobar cómo varía el precio medio de cada número de dormitorio distinto? Solo necesitamos encadenar el código anterior a una función .plot () como tal;

df.groupby (‘dormitorios’) [‘precio’] .mean (). plot ()

Tendremos una salida que se ve como tal;

Lo anterior nos muestra algunas tendencias en los datos. En el eje horizontal, tenemos un número distinto de dormitorios (tenga en cuenta que más de una casa puede tener un número X de dormitorios). En el eje vertical, tenemos la media de los precios con respecto al número correspondiente de dormitorios en el horizontal eje. Ahora podemos notar de inmediato que las casas que tienen entre 5 y 10 habitaciones cuestan mucho más que las casas con 3 habitaciones. También será obvio que las casas que tienen alrededor de 7 u 8 habitaciones cuestan mucho más que aquellas con 15, 20 o incluso 30 habitaciones..

Información como la anterior es la razón por la cual el análisis de datos es muy importante, podemos extraer información útil de los datos que no es inmediata o absolutamente imposible de notar sin análisis.

Datos perdidos

Supongamos que estoy respondiendo una encuesta que consta de una serie de preguntas. Comparto un enlace a la encuesta con miles de personas para que puedan dar su opinión. Mi objetivo final es ejecutar un análisis de datos sobre estos datos para poder obtener algunas ideas clave de los datos.

Ahora, muchas cosas pueden salir mal, algunos encuestadores pueden sentirse incómodos al responder algunas de mis preguntas y dejarlas en blanco. Mucha gente podría hacer lo mismo para varias partes de mis preguntas de la encuesta. Puede que esto no se considere un problema, pero imagínese si recolectara datos numéricos en mi encuesta y una parte del análisis requiriera obtener la suma, la media o alguna otra operación aritmética. Varios valores perdidos conducirían a muchas inexactitudes en mi análisis, tengo que encontrar una manera de encontrar y reemplazar estos valores perdidos con algunos valores que podrían ser un sustituto cercano a ellos.

Los pandas nos proporcionan una función para encontrar valores perdidos en un DataFrame llamado isnull ().

La función isnull () se puede usar como tal;

df.isnull ()

Esto devuelve un DataFrame de booleanos que nos dice si los datos originalmente presentes allí estaban realmente ausentes o falsamente. La salida se vería como tal;


Necesitamos una forma de poder reemplazar todos estos valores perdidos, la mayoría de las veces la elección de los valores faltantes se puede tomar como cero. En ocasiones, podría tomarse como la media de todos los demás datos o tal vez como la media de los datos a su alrededor, dependiendo del científico de datos y el caso de uso de los datos que se analizan..

Para completar todos los valores faltantes en un DataFrame, utilizamos la función .fillna () utilizada como tal;

df.fillna (0)

En lo anterior, estamos completando todos los datos vacíos con valor cero. También podría ser cualquier otro número que especifiquemos para ser.

La importancia de los datos no puede exagerarse, ¡nos ayuda a obtener respuestas correctas de nuestros datos! El análisis de datos que dicen es el nuevo petróleo para las economías digitales.

Todos los ejemplos en este artículo se pueden encontrar aquí.

Para obtener más información en profundidad, consulte Curso en línea de análisis de datos con Python y Pandas.

TAGS:

  • Pitón

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map