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:

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]