Python Tutorial de Pandas: marco de datos, rango de fechas, uso de Pandas
¿Qué son los pandas? Python?
pandas es una biblioteca de código abierto que le permite realizar manipulación y análisis de datos en Python. pandas Python La biblioteca ofrece manipulación de datos y operaciones de datos para tablas numéricas y series temporales. Pandas proporciona una forma sencilla de crear, manipular y organizar los datos. Está construida sobre NumPy, lo que significa que necesita NumPy para funcionar.
¿Por qué utilizar Pandas?
Los científicos de datos utilizan Pandas en Python por sus siguientes ventajas:
- Maneja fácilmente los datos faltantes
- Utiliza Serie para estructura de datos unidimensional. y DataFrame para estructura de datos multidimensional
- Proporciona una manera eficiente de dividir los datos.
- Proporciona una forma flexible de fusionar, concatenar o remodelar los datos.
- Incluye una potente herramienta de series temporales con la que trabajar.
En pocas palabras, Pandas es una biblioteca útil en análisis de los datosSe puede utilizar para realizar análisis y manipulación de datos. Pandas proporciona estructuras de datos potentes y fáciles de usar, así como los medios para realizar operaciones rápidamente en estas estructuras.
¿Cómo instalar Pandas?
Ahora en esto Python Tutorial de Pandas, aprenderemos cómo instalar Pandas en Python.
Para instalar la biblioteca Pandas, consulte nuestro tutorial Cómo instalar TensorFlow. Pandas está instalado por defecto. En caso remoto, los pandas no están instalados.
Puedes instalar Pandas usando:
- Anaconda: conda instalar -c anaconda pandas
- In Jupyter Computadora portátil :
import sys !conda install --yes --prefix {sys.prefix} pandas
¿Qué es un marco de datos de Pandas?
Marco de datos de pandas es una matriz bidimensional con una estructura de datos etiquetada que tiene diferentes tipos de columnas. Un DataFrame es una forma estándar de almacenar datos en formato tabular, con filas para almacenar la información y columnas para nombrar la información. Por ejemplo, el precio puede ser el nombre de una columna y 2,3,4 pueden ser los valores del precio.
Data Frame es bien conocido por los estadísticos y otros profesionales de datos.
Debajo de una imagen de un marco de datos de Pandas:
¿Qué es una serie?
Una serie es una estructura de datos unidimensional. Puede tener cualquier estructura de datos como entero, flotante y cadena. Es útil cuando desea realizar cálculos o devolver una matriz unidimensional. Una serie, por definición, no puede tener varias columnas. Para el último caso, utilice la estructura del marco de datos.
Python La serie Pandas tiene los siguientes parámetros:
- Datos: puede ser una lista, un diccionario o un valor escalar
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
Puede agregar el índice con index. Ayuda a nombrar las filas. La longitud debe ser igual al tamaño de la columna.
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
A continuación, crea una serie de Pandas a la que le falta un valor para la tercera fila. Tenga en cuenta que faltan valores en Python se indican como "NaN". Puedes usar numpy para crear valor faltante: np.nan artificialmente
pd.Series([1,2,np.nan])
Salida
0 1.0 1 2.0 2 NaN dtype: float64
Crear marco de datos de Pandas
Ahora, en este tutorial de Pandas DataFrame, aprenderemos cómo crear Python Marco de datos de Pandas:
Puede convertir una matriz numpy en un marco de datos de pandas con pd.Data frame(). También es posible lo contrario. Para convertir un marco de datos de pandas en una matriz, puede usar np.array()
## Numpy to pandas import numpy as np h = [[1,2],[3,4]] df_h = pd.DataFrame(h) print('Data Frame:', df_h) ## Pandas to numpy df_h_n = np.array(df_h) print('Numpy array:', df_h_n) Data Frame: 0 1 0 1 2 1 3 4 Numpy array: [[1 2] [3 4]]
También puedes usar un diccionario para crear un marco de datos de Pandas.
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]} pd.DataFrame(data=dic)
Edad | Nombre | |
---|---|---|
0 | 30 | Juan |
1 | 40 | Smith |
Datos de distribución de pandas
Pandas tiene una API conveniente para crear un rango de fechas. aprendamos con Python Ejemplos de pandas:
pd.data_range(fecha,período,frecuencia):
- El primer parámetro es la fecha de inicio.
- El segundo parámetro es el número de períodos (opcional si se especifica la fecha de finalización)
- El último parámetro es la frecuencia: día: 'D', mes: 'M' y año: 'Y'.
## Create date # Days dates_d = pd.date_range('20300101', periods=6, freq='D') print('Day:', dates_d)
Salida
Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months dates_m = pd.date_range('20300101', periods=6, freq='M') print('Month:', dates_m)
Salida
Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')
Inspeccionar datos
Puede verificar el principio o el final del conjunto de datos con head() o tail() precedido por el nombre del marco de datos del panda como se muestra en el siguiente ejemplo de Pandas:
Paso 1) Crea una secuencia aleatoria con numpy. La secuencia tiene 4 columnas y 6 filas.
random = np.random.randn(6,4)
Paso 2) Luego creas un marco de datos usando pandas.
Utilice fechas_m como índice para el marco de datos. Significa que a cada fila se le dará un "nombre" o un índice, correspondiente a una fecha.
Finalmente le das un nombre a las 4 columnas con el argumento columnas
# Create data with date df = pd.DataFrame(random, index=dates_m, columns=list('ABCD'))
Paso 3) Usando la función de cabeza
df.head(3)
A | B | C | D | |
---|---|---|---|---|
2030-01-31 | 1.139433 | 1.318510 | -0.181334 | 1.615822 |
2030-02-28 | -0.081995 | -0.063582 | 0.857751 | -0.527374 |
2030-03-31 | -0.519179 | 0.080984 | -1.454334 | 1.314947 |
Paso 4) Usando la función de cola
df.tail(3)
A | B | C | D | |
---|---|---|---|---|
2030-04-30 | -0.685448 | -0.011736 | 0.622172 | 0.104993 |
2030-05-31 | -0.935888 | -0.731787 | -0.558729 | 0.768774 |
2030-06-30 | 1.096981 | 0.949180 | -0.196901 | -0.471556 |
Paso 5) Una excelente práctica para obtener una pista sobre los datos es utilizar describe(). Proporciona los recuentos, media, estándar, mínimo, máximo y percentil del conjunto de datos.
df.describe()
A | B | C | D | |
---|---|---|---|---|
contar | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
mean | 0.002317 | 0.256928 | -0.151896 | 0.467601 |
enfermedades de transmisión sexual | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
min | -0.935888 | -0.731787 | -1.454334 | -0.527374 |
25% | -0.643880 | -0.050621 | -0.468272 | -0.327419 |
50% | -0.300587 | 0.034624 | -0.189118 | 0.436883 |
75% | 0.802237 | 0.732131 | 0.421296 | 1.178404 |
max | 1.139433 | 1.318510 | 0.857751 | 1.615822 |
Datos de corte
El último punto de este Python El tutorial de Pandas trata sobre cómo dividir un marco de datos de Pandas.
Puede utilizar el nombre de la columna para extraer datos en una columna en particular, como se muestra en el siguiente ejemplo de Pandas:
## Slice ### Using name df['A'] 2030-01-31 -0.168655 2030-02-28 0.689585 2030-03-31 0.767534 2030-04-30 0.557299 2030-05-31 -1.547836 2030-06-30 0.511551 Freq: M, Name: A, dtype: float64
Para seleccionar varias columnas, debe utilizar dos veces el corchete, [[..,..]]
El primer par de corchetes significa que desea seleccionar columnas, el segundo par de corchetes indica qué columnas desea devolver.
df[['A', 'B']].
A | B | |
---|---|---|
2030-01-31 | -0.168655 | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | -0.940617 |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | -1.547836 | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
Puedes dividir las filas con:
El siguiente código devuelve las primeras tres filas.
### using a slice for row df[0:3]
A | B | C | D | |
---|---|---|---|---|
2030-01-31 | -0.168655 | 0.587590 | 0.572301 | -0.031827 |
2030-02-28 | 0.689585 | 0.998266 | 1.164690 | 0.475975 |
2030-03-31 | 0.767534 | -0.940617 | 0.227255 | -0.341532 |
La función loc se utiliza para seleccionar columnas por nombre. Como es habitual, los valores que aparecen antes de la coma representan las filas y los que aparecen después, las columnas. Para seleccionar más de una columna, es necesario utilizar los corchetes.
## Multi col df.loc[:,['A','B']]
A | B | |
---|---|---|
2030-01-31 | -0.168655 | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | -0.940617 |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | -1.547836 | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
Existe otro método para seleccionar varias filas y columnas en Pandas. Puedes usar iloc[]. Este método utiliza el índice en lugar del nombre de las columnas. El siguiente código devuelve el mismo marco de datos que el anterior.
df.iloc[:, :2]
A | B | |
---|---|---|
2030-01-31 | -0.168655 | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | -0.940617 |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | -1.547836 | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
Soltar una columna
Puedes soltar columnas usando pd.drop()
df.drop(columns=['A', 'C'])
B | D | |
---|---|---|
2030-01-31 | 0.587590 | -0.031827 |
2030-02-28 | 0.998266 | 0.475975 |
2030-03-31 | -0.940617 | -0.341532 |
2030-04-30 | 0.507350 | -0.296035 |
2030-05-31 | 1.276558 | 0.523017 |
2030-06-30 | 1.572085 | -0.594772 |
Concatenación
Puedes concatenar dos DataFrame en Pandas. Puedes usar pd.concat()
En primer lugar, necesitas crear dos DataFrames. Hasta ahora todo bien, ya estás familiarizado con la creación de marcos de datos.
import numpy as np df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'], 'Age': ['25', '30', '50']}, index=[0, 1, 2]) df2 = pd.DataFrame({'name': ['Adam', 'Smith' ], 'Age': ['26', '11']}, index=[3, 4])
Finalmente, concatenas los dos DataFrame.
df_concat = pd.concat([df1,df2]) df_concat
Edad | nombre | |
---|---|---|
0 | 25 | Juan |
1 | 30 | Smith |
2 | 50 | Paul |
3 | 26 | Adam |
4 | 11 | Smith |
soltar_duplicados
Si un conjunto de datos puede contener información duplicada, `drop_duplicates` es una opción fácil de excluir filas duplicadas. Puedes ver que `df_concat` tiene una observación duplicada, `Smith` aparece dos veces en la columna `name`.
df_concat.drop_duplicates('name')
Edad | nombre | |
---|---|---|
0 | 25 | Juan |
1 | 30 | Smith |
2 | 50 | Paul |
3 | 26 | Adam |
Valores de clasificación
Puedes ordenar el valor con sort_values
df_concat.sort_values('Age')
Edad | nombre | |
---|---|---|
4 | 11 | Smith |
0 | 25 | Juan |
3 | 26 | Adam |
1 | 30 | Smith |
2 | 50 | Paul |
Cambiar nombre: cambio de índice
Puede utilizar cambiar nombre para cambiar el nombre de una columna en Pandas. El primer valor es el nombre de la columna actual y el segundo valor es el nombre de la nueva columna.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Edad_personas | Apellido | |
---|---|---|
0 | 25 | Juan |
1 | 30 | Smith |
2 | 50 | Paul |
3 | 26 | Adam |
4 | 11 | Smith |
Resumen
A continuación se muestra un resumen del método más útil para la ciencia de datos con Pandas.
datos de importacion | leer_csv |
---|---|
crear serie | de grado comercial |
Crear marco de datos | Marco de datos |
Crear rango de fechas | rango de fechas |
cabeza de retorno | cabeza |
cola de retorno | cola |
Describir | describir |
rebanada usando nombre | nombre de datos ['nombre de columna'] |
Cortar usando filas | nombre_datos[0:5] |