SequenceExpr représente une seule colonne dans un DataFrame PyODPS.
Les objets SequenceExpr ne peuvent pas être créés directement. Récupérez-en un à partir d'un DataFrame (objet de collection).
Prérequis
Avant de commencer, assurez-vous que vous disposez des éléments suivants :
Une table d'exemple nommée pyodps_iris. Consultez la section Traitement des données du DataFrame.
Un objet DataFrame. Consultez la section Créer un objet DataFrame.
Récupérer une colonne
Deux syntaxes sont prises en charge :
collection.column_name— fonctionne lorsque le nom de la colonne est un identifiant Python valide.df[column_name]— fonctionne pour tout nom de colonne, y compris les noms stockés dans des 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))
Les deux méthodes renvoient le même résultat :
sepallength
0 4.9
1 4.7
2 4.6
3 5.0
4 5.4
Types de colonnes
Le DataFrame possède son propre système de types. Lorsqu'un DataFrame est initialisé à partir d'une table MaxCompute, les types de données MaxCompute sont automatiquement mappés aux types DataFrame. Cette abstraction permet au même code DataFrame de s'exécuter sur plusieurs backends d'exécution : MaxCompute SQL, Pandas, MySQL et PostgreSQL.
Mappings de types
|**Type MaxCompute**
|
**Type DataFrame**
|
**Notes**
| | --- | --- | --- | |
BIGINT
|
INT64
| | |
DOUBLE
|
FLOAT64
| | |
STRING
|
STRING
| | |
DATETIME
|
DATETIME
| | |
BOOLEAN
|
BOOLEAN
| | |
DECIMAL
|
DECIMAL
| | |
ARRAY\<VALUE_TYPE\>
|
LIST\<VALUE_TYPE\>
|
Le type d'élément doit être spécifié
| |
MAP\<KEY_TYPE, VALUE_TYPE\>
|
DICT\<KEY_TYPE, VALUE_TYPE\>
|
Les types d'éléments doivent être spécifiés
|
Pour activer la prise en charge étendue des types, définissez options.sql.use_odps2_extension=True :
**Type MaxCompute**
|
**Type DataFrame**
| | --- | --- | |
TINYINT
|
INT8
| |
SMALLINT
|
INT16
| |
INT
|
INT32
| |
FLOAT
|
FLOAT32
|
Notes d'utilisation
Types LIST et DICT : Spécifiez toujours les types d'éléments lorsque vous travaillez avec des colonnes LIST ou DICT. Leur omission génère une erreur.
Types non pris en charge : TIMESTAMP et STRUCT (introduits dans MaxCompute V2.0) ne sont pas pris en charge dans DataFrame.
Vérifier le type de colonne
Utilisez sequence.dtype pour inspecter le type de données d'une colonne :
print(iris.sepallength.dtype)
Sortie :
FLOAT64
Convertir le type de colonne
Utilisez astype pour convertir une colonne vers un autre type. Cette méthode renvoie un nouvel objet séquence avec le type converti.
print(iris.sepallength.astype('int').head(5))
Sortie :
sepallength
0 4
1 4
2 4
3 5
4 5
Noms de colonnes
Chaque objet séquence doit avoir un nom de colonne. DataFrame génère automatiquement des noms pour les opérations courantes — par exemple, sepalwidth.max() produit une colonne nommée sepalwidth_max.
print(iris.groupby('name').sepalwidth.max().head(5))
Sortie :
sepalwidth_max
0 4.4
1 3.4
2 3.8
Lorsque DataFrame ne peut pas déterminer automatiquement un nom — par exemple lorsque vous ajoutez un scalaire à une séquence — il conserve le nom de colonne d'origine. Lorsque deux colonnes sont impliquées dans un calcul, aucun nom ne peut être déduit et vous devez appeler explicitement rename.
Utilisez rename pour attribuer un nom à n'importe quelle séquence :
print(iris.sepalwidth.rename('sepal_width').head(5))
Sortie :
sepal_width
0 3.0
1 3.2
2 3.1
3 3.6
4 3.9
Calculs de colonnes
Les opérations arithmétiques sur une séquence produisent une nouvelle séquence. Pour les colonnes numériques, tous les opérateurs arithmétiques standard sont pris en charge. Pour les colonnes de chaînes, seule la concaténation de chaînes est prise en charge.
# Add a scalar to a column
print((iris.sepallength + 5).head(5))
Sortie :
sepallength
0 9.9
1 9.7
2 9.6
3 10.0
4 10.4
Lorsqu'une opération implique deux colonnes, PyODPS ne peut pas déterminer un nom de colonne de résultat. Appelez rename pour nommer le résultat :
print((iris.sepallength + iris.sepalwidth).rename('sum_sepal').head(5))
Sortie :
sum_sepal
0 7.9
1 7.9
2 7.7
3 8.6
4 9.3
Pour plus d'opérations, consultez la section Opérations sur les colonnes.