SequenceExpr representa una sola columna en un DataFrame de PyODPS.
Los objetos SequenceExpr no se pueden crear directamente. Obtenga uno desde un DataFrame (objeto de colección).
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una tabla de ejemplo llamada pyodps_iris. Consulte DataFrame data processing.
Un objeto DataFrame. Consulte Create a DataFrame object.
Obtener una columna
Se admiten dos sintaxis:
collection.column_name: funciona cuando el nombre de la columna es un identificador válido de Python.df[column_name]: funciona para cualquier nombre de columna, incluidos los nombres almacenados en variables.
# Attribute access
print(iris.sepallength.head(5))
# Bracket access — use when the column name is in a variable
col = 'sepallength'
print(iris[col].head(5))
Ambas opciones devuelven el mismo resultado:
sepallength
0 4.9
1 4.7
2 4.6
3 5.0
4 5.4
Tipos de columna
DataFrame cuenta con su propio sistema de tipos. Cuando se inicializa un DataFrame a partir de una tabla de MaxCompute, los tipos de datos de MaxCompute se asignan automáticamente a los tipos de DataFrame. Esta abstracción permite que el mismo código de DataFrame se ejecute en varios backends de ejecución: MaxCompute SQL, Pandas, MySQL y PostgreSQL.
Asignaciones de tipos
|
MaxCompute type |
DataFrame type |
Notes |
|
BIGINT |
INT64 |
|
|
DOUBLE |
FLOAT64 |
|
|
STRING |
STRING |
|
|
DATETIME |
DATETIME |
|
|
BOOLEAN |
BOOLEAN |
|
|
DECIMAL |
DECIMAL |
|
|
ARRAY\<VALUE_TYPE\> |
LIST\<VALUE_TYPE\> |
Se debe especificar el tipo de elemento |
|
MAP\<KEY_TYPE, VALUE_TYPE\> |
DICT\<KEY_TYPE, VALUE_TYPE\> |
Se deben especificar los tipos de elemento |
Para habilitar la compatibilidad con tipos extendidos, establezca options.sql.use_odps2_extension=True:
|
MaxCompute type |
DataFrame type |
|
TINYINT |
INT8 |
|
SMALLINT |
INT16 |
|
INT |
INT32 |
|
FLOAT |
FLOAT32 |
Notas de uso
Tipos LIST y DICT: Especifique siempre los tipos de elemento al trabajar con columnas LIST o DICT. Si los omite, se genera un error.
Tipos no compatibles: Los tipos TIMESTAMP y STRUCT (introducidos en MaxCompute V2.0) no son compatibles con DataFrame.
Comprobar el tipo de columna
Utilice sequence.dtype para inspeccionar el tipo de datos de una columna:
print(iris.sepallength.dtype)
Salida:
FLOAT64
Convertir el tipo de columna
Utilice astype para convertir una columna a un tipo diferente. Esta función devuelve un nuevo objeto de secuencia con el tipo convertido.
print(iris.sepallength.astype('int').head(5))
Salida:
sepallength
0 4
1 4
2 4
3 5
4 5
Nombres de columna
Cada objeto de secuencia debe tener un nombre de columna. DataFrame genera automáticamente nombres para operaciones comunes; por ejemplo, sepalwidth.max() produce una columna llamada sepalwidth_max.
print(iris.groupby('name').sepalwidth.max().head(5))
Salida:
sepalwidth_max
0 4.4
1 3.4
2 3.8
Cuando DataFrame no puede determinar un nombre automáticamente, como al sumar un escalar a una secuencia, conserva el nombre original de la columna. Si intervienen dos columnas en un cálculo, no se puede inferir ningún nombre y debe llamar a rename explícitamente.
Utilice rename para asignar un nombre a cualquier secuencia:
print(iris.sepalwidth.rename('sepal_width').head(5))
Salida:
sepal_width
0 3.0
1 3.2
2 3.1
3 3.6
4 3.9
Cálculos de columna
Las operaciones aritméticas sobre una secuencia producen una nueva secuencia. Para columnas numéricas, se admiten todos los operadores aritméticos estándar. Para columnas de cadenas, solo se admite la concatenación de cadenas.
# Add a scalar to a column
print((iris.sepallength + 5).head(5))
Salida:
sepallength
0 9.9
1 9.7
2 9.6
3 10.0
4 10.4
Cuando una operación involucra dos columnas, PyODPS no puede determinar un nombre para la columna resultante. Llame a rename para asignar un nombre al resultado:
print((iris.sepallength + iris.sepalwidth).rename('sum_sepal').head(5))
Salida:
sum_sepal
0 7.9
1 7.9
2 7.7
3 8.6
4 9.3
Para más operaciones, consulte Column operations.