stringtranslate.com

Pandas (software)

Pandas (con el estilo de pandas ) es una biblioteca de software escrita para el lenguaje de programación Python para la manipulación y el análisis de datos . En particular, ofrece estructuras de datos y operaciones para manipular tablas numéricas y series temporales . Es un software libre publicado bajo la licencia BSD de tres cláusulas . [2] El nombre se deriva del término " pan el da ta ", un término econométrico para conjuntos de datos que incluyen observaciones durante múltiples períodos de tiempo para los mismos individuos, [3] así como un juego de palabras con la frase "análisis de datos de Python". [4] : 5  Wes McKinney comenzó a construir lo que se convertiría en Pandas en AQR Capital mientras era investigador allí de 2007 a 2010. [5]

El desarrollo de Pandas introdujo en Python muchas características comparables de trabajo con DataFrames que se establecieron en el lenguaje de programación R. [ 6] La biblioteca está construida sobre otra biblioteca, NumPy .

Historia

El desarrollador Wes McKinney comenzó a trabajar en Pandas en 2008 mientras trabajaba en AQR Capital Management, debido a la necesidad de contar con una herramienta flexible y de alto rendimiento para realizar análisis cuantitativos de datos financieros. Antes de dejar AQR, logró convencer a la gerencia para que le permitiera publicar la biblioteca en código abierto .

Otro empleado de AQR, Chang She, se unió al esfuerzo en 2012 como el segundo contribuyente más importante a la biblioteca.

En 2015, Pandas se incorporó como proyecto patrocinado fiscalmente por NumFOCUS, una organización benéfica sin fines de lucro 501(c)(3) en los Estados Unidos. [7]

Modelo de datos

Pandas se basa en estructuras de datos llamadas Series y DataFrames . Los datos de estas colecciones se pueden importar desde varios formatos de archivo, como valores separados por comas , JSON , Parquet , tablas o consultas de bases de datos SQL y Microsoft Excel . [8]

Una serie es una estructura de datos unidimensional construida sobre la matriz de NumPy . [9] : 97  A diferencia de NumPy, cada punto de datos tiene una etiqueta asociada. La colección de estas etiquetas se llama índice. [4] : 112  Las series se pueden usar aritméticamente, como en la declaración series_3 = series_1 + series_2: esto alineará los puntos de datos con los valores de índice correspondientes en series_1y series_2, luego los sumará para producir nuevos valores en series_3. [4] : 114  Un DataFrame es una estructura de datos bidimensional de filas y columnas, similar a una hoja de cálculo , y análoga a un diccionario de Python que asigna nombres de columna (claves) a Series (valores), y cada Series comparte un índice. [4] : 115  Los DataFrames se pueden concatenar juntos o "fusionar" en columnas o índices de una manera similar a las uniones en SQL . [4] : 177–182  Pandas implementa un subconjunto del álgebra relacional y admite uniones uno a uno, muchos a uno y muchos a muchos. [9] : 147–148  Pandas también admite las menos comunes Panel y Panel4D , que son estructuras de datos tridimensionales y de cuatro dimensiones respectivamente. [9] : 141 

Los usuarios pueden transformar o resumir datos aplicando funciones arbitrarias . [4] : 132  Dado que Pandas está construido sobre NumPy, todas las funciones de NumPy también funcionan en Series y DataFrames. [9] : 115  Pandas también incluye operaciones integradas para aritmética, manipulación de cadenas y estadísticas de resumen como media , mediana y desviación estándar . [4] : 139, 211  Estas funciones integradas están diseñadas para manejar datos faltantes, generalmente representados por el valor de punto flotante NaN . [4] : 142–143 

Los subconjuntos de datos se pueden seleccionar por nombre de columna, índice o expresiones booleanas . Por ejemplo, df[df['col1'] > 5]devolverá todas las filas del DataFrame dfpara las que el valor de la columna col1supere 5. [4] : 126–128  Los datos se pueden agrupar por un valor de columna, como en df['col1'].groupby(df['col2']), o por una función que se aplica al índice. Por ejemplo, df.groupby(lambda i: i % 2)agrupa los datos en función de si el índice es par. [4] : 253–259 

Pandas incluye soporte para series temporales , como la capacidad de interpolar valores [4] : 316–317  y filtrar utilizando un rango de marcas de tiempo (por ejemplo, data['1/1/2023':'2/2/2023']devolverá todas las fechas entre el 1 de enero y el 2 de febrero). [4] : 295  Pandas representa los datos de series temporales faltantes utilizando un objeto NaT (Not a Timestamp) especial, en lugar del valor NaN que utiliza en otros lugares. [4] : 292 

Índices

De forma predeterminada, un índice de Pandas es una serie de números enteros ascendentes desde 0, similar a los índices de las matrices de Python . Sin embargo, los índices pueden utilizar cualquier tipo de datos de NumPy, incluidos los de punto flotante, las marcas de tiempo o las cadenas. [4] : 112 

La sintaxis de Pandas para mapear valores de índice a datos relevantes es la misma sintaxis que Python usa para mapear claves de diccionario a valores. Por ejemplo, si ses una Serie, s['a']devolverá el punto de datos en el índice a. A diferencia de las claves de diccionario, no se garantiza que los valores de índice sean únicos. Si una Serie usa el valor de índice apara múltiples puntos de datos, entonces s['a']devolverá en su lugar una nueva Serie que contiene todos los valores coincidentes. [4] : 136  Los nombres de columna de un DataFrame se almacenan e implementan de manera idéntica a un índice. Como tal, se puede pensar que un DataFrame tiene dos índices: uno basado en columnas y otro basado en filas. Debido a que los nombres de columna se almacenan como un índice, no se requiere que sean únicos. [9] : 103–105 

Si dataes una serie, entonces data['a']devuelve todos los valores con el valor de índice de a. Sin embargo, si dataes un DataFrame, entonces data['a']devuelve todos los valores en la(s) columna(s) denominada(s) a. Para evitar esta ambigüedad, Pandas admite la sintaxis data.loc['a']como una forma alternativa de filtrar utilizando el índice. Pandas también admite la sintaxis data.iloc[n], que siempre toma un entero n y devuelve el valor n , contando desde 0. Esto permite que un usuario actúe como si el índice fuera una secuencia de enteros similar a una matriz, independientemente de cómo esté realmente definido. [9] : 110–113 

Pandas admite índices jerárquicos con múltiples valores por punto de datos. Un índice con esta estructura, llamado "MultiIndex", permite que un único DataFrame represente múltiples dimensiones, de forma similar a una tabla dinámica en Microsoft Excel . [4] : 147–148  A cada nivel de un MultiIndex se le puede dar un nombre único. [9] : 133  En la práctica, los datos con más de 2 dimensiones se representan a menudo utilizando DataFrames con índices jerárquicos, en lugar de las estructuras de datos de dimensiones superiores de Panel y Panel4D [9] : 128 

Críticas

Pandas ha sido criticado por su ineficiencia. Pandas puede requerir de 5 a 10 veces más memoria que el tamaño de los datos subyacentes, y todo el conjunto de datos debe cargarse en RAM . La biblioteca no optimiza los planes de consulta ni admite la computación paralela en varios núcleos . Wes McKinney, el creador de Pandas, ha recomendado Apache Arrow como una alternativa para abordar estos problemas de rendimiento y otras limitaciones. [10]

Véase también

Referencias

  1. ^ "Versión 2.2.3". 20 de septiembre de 2024. Consultado el 22 de septiembre de 2024 .
  2. ^ "Licencia – Descripción general de los paquetes – Documentación de pandas 1.0.0". pandas . 28 de enero de 2020. Archivado desde el original el 16 de septiembre de 2018 . Consultado el 30 de enero de 2020 .
  3. ^ Wes McKinney (2011). «pandas: una biblioteca Python básica para el análisis de datos y las estadísticas» (PDF) . Archivado (PDF) del original el 19 de febrero de 2018. Consultado el 2 de agosto de 2018 .
  4. ^ abcdefghijklmnop McKinney, Wes (2014). Python para análisis de datos (primera edición). O'Reilly. ISBN 978-1-449-31979-3.
  5. ^ Kopf, Dan. «Conozca al hombre detrás de la herramienta más importante en ciencia de datos». Quartz . Archivado desde el original el 9 de noviembre de 2020. Consultado el 17 de noviembre de 2020 .
  6. ^ "Comparación con R". pandas Getting started . Consultado el 15 de julio de 2024 .
  7. ^ "NumFOCUS – pandas: un proyecto financiado con fondos públicos". NumFOCUS . Archivado desde el original el 4 de abril de 2018 . Consultado el 3 de abril de 2018 .
  8. ^ "Herramientas de E/S (Texto, CSV, HDF5, …) — documentación de pandas 1.4.1". Archivado desde el original el 15 de septiembre de 2020 . Consultado el 14 de junio de 2020 .
  9. ^ abcdefgh VanderPlas, Jake (2016). Manual de ciencia de datos de Python: herramientas esenciales para trabajar con datos (primera edición). O'Reilly. ISBN 978-1-491-91205-8.
  10. ^ McKinney, Wes (21 de septiembre de 2017). "Apache Arrow y las "10 cosas que odio de los pandas"". wesmckinney.com . Archivado desde el original el 25 de mayo de 2024 . Consultado el 21 de diciembre de 2023 .

Lectura adicional