Pandas y Python
Pandas y Python
En este tutorial, aprenderás qué es un DataFrame, cómo crearlo desde diferentes fuentes,
cómo exportarlo a diferentes resultados y cómo manipular sus datos.
Instalar pandas
Puedes instalar pandas en Python usando pip. Ejecuta el siguiente comando en cmd:
pip install pandas
<class 'pandas.core.frame.DataFrame'>
¡Este resultado es llamado DataFrame! Esa es la unidad básica de pandas con la que vamos
a tratar hasta el final del tutorial.
El DataFrame es una estructura de 2 dimensiones etiquetada donde podemos almacenar
datos de diferentes tipos. DataFrame es similar a una tabla SQL o una hoja de cálculo de
Excel.
import pandas
Ahora llama al método read_csv () de la siguiente manera:
pandas.read_csv('Book1.csv')
Book1.csv tiene el siguiente contenido:
El código generará el siguiente DataFrame:
import pandas
pandas.read_csv('myFile.txt')
El myFile.txt tiene el siguiente formato:
La salida del código anterior será:
Este archivo de texto se trata como un archivo CSV porque tenemos elementos separados
por comas. El archivo también puede usar otro delimitador, como un punto y coma, un
tabulador, etc.
pandas.read_csv('myFile.txt', delimiter='\t')
Ahora la salida será:
Leer SQL
Puede usar el método read_sql () de pandas para leer desde una base de datos SQL. Esto se
demuestra en el siguiente ejemplo:
import sqlite3
import pandas
con = sqlite3.connect('mydatabase.db')
Seleccionar columnas
Supongamos que tenemos tres columnas en la tabla Empleado de esta manera:
x['Name']
El resultado será el siguiente:
import pandas
frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager',
'Clerk']}
df = pandas.DataFrame(frame_data)
En este código, creamos un DataFrame con tres columnas y tres filas usando el método
DataFrame () de pandas. El resultado será el siguiente:
df.loc[df['name'] == 'Jason']
df.loc [] o DataFrame.loc [] es una arreglo booleano que se puede usar para acceder a filas o
columnas mediante valores o etiquetas. En el código anterior, se buscará la fila donde el
nombre es igual a Jason.
La salida será:
>>> frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager',
'Clerk']}
>>> df = pandas.DataFrame(frame_data)
Creamos un DataFrame. Ahora vamos a acceder a una fila usando df.loc []:
>>> df.loc[1]
Como puedes ver, recuperamos una fila. Podemos hacer lo mismo usando el operador de
segmentación de la siguiente manera:
>>> df[1:2]
>>> df.dtypes
La salida será:
>>> frame_data = {'A': [1, 2, 3], 'B': [18, 20, 22], 'C': [54, 12, 13]}
>>> df = pandas.DataFrame(frame_data)
Creamos un DataFrame y agregamos valores de tipo entero en las filas. Para aplicar una
función, por ejemplo, la raíz cuadrada en los valores, importaremos el módulo numpy para
usar la función sqrt de esta manera:
>>> import numpy as np
>>> df.apply(np.sqrt)
La salida será la siguiente:
>>> df.apply(np.sum)
>>>df['A'].apply(np.sqrt)
>>> frame_data = {'A': [23, 12, 30], 'B': [18, 20, 22], 'C': [54, 112, 13]}
>>> df = pandas.DataFrame(frame_data)
Ahora para ordenar los valores:
>>> df.sort_values(by=['A'])
La salida será:
El método sort_values () tiene un atributo “by” que es necesario. En el código anterior, los
valores se ordenan por la columna A. Para ordenar por varias columnas, el código es el
siguiente:
>>> frame_data = {'name': ['James', 'Jason', 'Rogers', 'Jason'], 'age': [18, 20, 22, 20], 'job': ['Assistant',
'Manager', 'Clerk', 'Manager']}
>>> df = pandas.DataFrame(frame_data)
Aquí creamos un DataFrame con una fila duplicada. Para verificar si hay filas duplicadas en
el DataFrame, usa el método duplicated () del DataFrame.
>>> df.duplicated()
El resultado será:
Se puede ver que la última fila es un duplicado. Para eliminar esta fila, ejecuta la siguiente
línea de código:
>>> df.drop_duplicates()
Ahora el resultado será:
>>> frame_data = {'name': ['James', 'Jason', 'Rogers', 'Jason'], 'age': [18, 20, 22, 21], 'job': ['Assistant',
'Manager', 'Clerk', 'Employee']}
>>> df = pandas.DataFrame(frame_data)
Aquí puedes ver que Jason esta dos veces. Si desea eliminar duplicados por columna,
simplemente pasa el nombre de la columna de la siguiente manera:
>>> df.drop_duplicates(['name'])
El resultado será como el siguiente:
El resultado será:
Eliminar filas
Podemos usar el método drop () para eliminar una fila al pasar el índice de la fila.
>>> frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager',
'Clerk']}
>>> df = pandas.DataFrame(frame_data)
Para eliminar una fila con el índice 0 donde el nombre es James, la edad es 18 y el trabajo
es asistente, utiliza el siguiente código:
>>> df.drop([0])
>>> frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager',
'Clerk']}
Ahora podemos eliminar una fila con un cierto valor. Por ejemplo, si queremos eliminar una
fila donde el nombre es Rogers, entonces el código será:
>>> df.drop(['Rogers'])
La salida será:
Si deseas eliminar la última fila del DataFrame y no sabe cuál es el número total de filas,
puede utilizar la indexación negativa como se muestra a continuación:
>>> df.drop(df.index[-1])
-1 borra la última fila. Similarmente -2 borrará las últimas 2 filas y así sucesivamente.
>>> frame_data = {'A': [23, 12, 12], 'B': [18, 18, 22], 'C': [13, 112, 13]}
>>> df = pandas.DataFrame(frame_data)
Ahora para sumar los elementos de la columna A, usa la siguiente línea de código:
>>> df['A'].sum()
También puedes usar el método apply () del DataFrame y pasar el método de suma de
numpy para sumar los valores.
>>> df = pandas.DataFrame(frame_data)
Para contar los valores únicos en la columna A:
>>> df['A'].nunique()
Si desea contar todos los valores en una columna, puedes usar el método count () de la
siguiente manera:
>>> df['A'].count()
Filas de subconjuntos
Para seleccionar un subconjunto de un DataFrame, puedes usar los corchetes.
Por ejemplo, tenemos un DataFrame que contiene algunos enteros. Podemos seleccionar o
buscar el subconjunto de una fila de esta forma:
df.[start:count]
El punto de inicio se incluirá en el subconjunto, pero el punto de parada no se incluye. Por
ejemplo, para seleccionar 3 filas a partir de la primera fila, escribirás:
>>> df[0:3]
La salida será:
Ese código significa comenzar desde la primera fila que es 0 y selecciona 3 filas.
Para seleccionar o buscar un subconjunto con la última fila, usa la indexación negativa:
>>> df[-1:]
Escribir a un Excel
Para escribir un DataFrame en una hoja de Excel, podemos usar el método to_excel ().
Para escribir en una hoja de Excel, tiene que abrir la hoja y para abrir una hoja de Excel,
tendremos que importar el módulo openpyxl.
>>> df = pandas.DataFrame(frame_data)
>>> df.to_csv("pandasCSV.csv")
El archivo de salida será como el siguiente:
Escribir a SQL
Para escribir datos en SQL, podemos usar el método to_sql ().
import sqlite3
import pandas
con = sqlite3.connect('mydatabase.db')
frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager',
'Clerk']}
df = pandas.DataFrame(frame_data)
df.to_sql('users', con)
En este código, creamos una conexión con una base de datos sqlite3. Luego creamos un
DataFrame con tres filas y tres columnas.
Escribir a JSON
Puede usar el método to_json () del DataFrame para escribir en un archivo JSON.
>>> df.to_json("myJson.json")
En esta línea de código, el nombre del archivo JSON se pasa como un argumento. El
DataFrame se almacenará en el archivo JSON. El archivo tendrá el siguiente contenido:
Escribir en un archivo HTML
Puede usar el método to_html () del DataFrame para crear un archivo HTML con el
contenido del DataFrame.
>>> df.to_html("myhtml.html")
El archivo de resultados tendrá el siguiente contenido: