SequenceExpr representa uma única coluna em um DataFrame do PyODPS.
Não é possível criar objetos SequenceExpr diretamente. Obtenha um a partir de um DataFrame (objeto de coleção).
Pré-requisitos
Antes de começar, verifique se você tem:
Uma tabela de exemplo chamada pyodps_iris. Consulte Processamento de dados do DataFrame.
Um objeto DataFrame. Consulte Crie um objeto DataFrame.
Recuperar uma coluna
Há duas sintaxes compatíveis:
collection.column_name— funciona quando o nome da coluna é um identificador Python válido.df[column_name]— adequada para qualquer nome de coluna, inclusive nomes armazenados em variáveis.
# 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 retornam o mesmo resultado:
sepallength
0 4.9
1 4.7
2 4.6
3 5.0
4 5.4
Tipos de coluna
O DataFrame possui seu próprio sistema de tipos. Ao inicializar um DataFrame a partir de uma tabela do MaxCompute, os tipos de dados do MaxCompute são mapeados automaticamente para os tipos do DataFrame. Essa abstração permite executar o mesmo código do DataFrame em vários backends: MaxCompute SQL, Pandas, MySQL e PostgreSQL.
Mapeamentos de tipo
|
Tipo do MaxCompute |
Tipo do DataFrame |
Observações |
|
BIGINT |
INT64 |
|
|
DOUBLE |
FLOAT64 |
|
|
STRING |
STRING |
|
|
DATETIME |
DATETIME |
|
|
BOOLEAN |
BOOLEAN |
|
|
DECIMAL |
DECIMAL |
|
|
ARRAY\<VALUE_TYPE\> |
LIST\<VALUE_TYPE\> |
É necessário especificar o tipo do elemento |
|
MAP\<KEY_TYPE, VALUE_TYPE\> |
DICT\<KEY_TYPE, VALUE_TYPE\> |
É necessário especificar os tipos dos elementos |
Para ativar o suporte a tipos estendidos, defina options.sql.use_odps2_extension=True:
|
Tipo do MaxCompute |
Tipo do DataFrame |
|
TINYINT |
INT8 |
|
SMALLINT |
INT16 |
|
INT |
INT32 |
|
FLOAT |
FLOAT32 |
Observações de uso
Tipos LIST e DICT: Sempre especifique os tipos dos elementos ao trabalhar com colunas LIST ou DICT. A omissão desses tipos gera um erro.
Tipos não compatíveis: O DataFrame não oferece suporte aos tipos TIMESTAMP e STRUCT (introduzidos no MaxCompute V2.0).
Verificar o tipo da coluna
Use sequence.dtype para inspecionar o tipo de dados de uma coluna:
print(iris.sepallength.dtype)
Saída:
FLOAT64
Converter o tipo da coluna
Use astype para converter uma coluna para um tipo diferente. Esse método retorna um novo objeto de sequência com o tipo convertido.
print(iris.sepallength.astype('int').head(5))
Saída:
sepallength
0 4
1 4
2 4
3 5
4 5
Nomes de coluna
Todo objeto de sequência deve ter um nome de coluna. O DataFrame gera nomes automaticamente para operações comuns. Por exemplo, sepalwidth.max() produz uma coluna chamada sepalwidth_max.
print(iris.groupby('name').sepalwidth.max().head(5))
Saída:
sepalwidth_max
0 4.4
1 3.4
2 3.8
Se o DataFrame não conseguir determinar um nome automaticamente, como ao adicionar um escalar a uma sequência, ele manterá o nome original da coluna. Quando um cálculo envolve duas colunas, não é possível inferir um nome. Nesse caso, chame rename explicitamente.
Use rename para atribuir um nome a qualquer sequência:
print(iris.sepalwidth.rename('sepal_width').head(5))
Saída:
sepal_width
0 3.0
1 3.2
2 3.1
3 3.6
4 3.9
Cálculos de coluna
Operações aritméticas em uma sequência produzem uma nova sequência. Colunas numéricas aceitam todos os operadores aritméticos padrão. Colunas de string aceitam apenas concatenação.
# Add a scalar to a column
print((iris.sepallength + 5).head(5))
Saída:
sepallength
0 9.9
1 9.7
2 9.6
3 10.0
4 10.4
Quando uma operação envolve duas colunas, o PyODPS não consegue determinar o nome da coluna resultante. Chame rename para nomear o resultado:
print((iris.sepallength + iris.sepalwidth).rename('sum_sepal').head(5))
Saída:
sum_sepal
0 7.9
1 7.9
2 7.7
3 8.6
4 9.3
Para mais operações, consulte Operações de coluna.