SequenceExpr は、2 次元データセットの列を表します。SequenceExpr オブジェクトを手動で作成することはできません。コレクションオブジェクトから取得することのみ可能です。
前提条件
列を取得する前に、次の要件が満たされていることを確認してください。
pyodps_iris という名前のサンプルテーブルが準備されています。詳細については、「DataFrame データ処理」をご参照ください。
DataFrame オブジェクトが作成されます。詳細については、「DataFrame オブジェクトを作成する」をご参照ください。
列の取得
collection.column_nameを使用して列を取得します。コマンドの例:print(iris.sepallength.head(5))次の結果が返されます。
sepallength 0 4.9 1 4.7 2 4.6 3 5.0 4 5.4列の名前が文字列変数に格納されている場合は、
df[column_name]を使用して列を取得します。コマンドの例:print(iris['sepallength'].head(5))次の結果が返されます。
sepallength 0 4.9 1 4.7 2 4.6 3 5.0 4 5.4
列の型
DataFrame には独自の型システムがあります。テーブルが初期化されると、MaxCompute のデータ型は DataFrame の関連データ型に変換されます。これにより、より多くの種類のコンピューティングバックエンドがサポートされます。DataFrame 実行バックエンドは、MaxCompute SQL、Pandas、および MySQL や Postgres などのデータベースをサポートしています。
次の表は、DataFrame のデータ型と MaxCompute のデータ型のマッピングを示しています。
MaxCompute のデータ型 | DataFrame のデータ型 |
BIGINT | INT64 |
DOUBLE | FLOAT64 |
STRING | STRING |
DATETIME | DATETIME |
BOOLEAN | BOOLEAN |
DECIMAL | DECIMAL |
ARRAY<VALUE_TYPE> | LIST<VALUE_TYPE> |
MAP<KEY_TYPE, VALUE_TYPE> | DICT<KEY_TYPE, VALUE_TYPE> |
| |
TINYINT | INT8 |
SMALLINT | INT16 |
INT | INT32 |
FLOAT | FLOAT32 |
次の点に注意してください。
テーブルのフィールドが LIST 型と DICT 型の場合、テーブル内の要素の型を指定する必要があります。要素の型を指定しないと、エラーが発生します。
DataFrame は、MaxCompute V2.0 で導入された TIMESTAMP 型と STRUCT 型をサポートしていません。
シーケンスオブジェクトで
sequence.dtypeを使用してデータ型を取得できます。コードの例:print(iris.sepallength.dtype)次の結果が返されます。
FLOAT64astypeメソッドを使用して、列の型を変更できます。このメソッドを使用する場合、入力値として型が必要であり、変換されたシーケンスオブジェクトが返されます。コードの例:print(iris.sepallength.astype('int').head(5))次の結果が返されます。
sepallength 0 4 1 4 2 4 3 5 4 5
列名
DataFrame コンピューティングでは、シーケンスオブジェクトに列名が必要です。ほとんどの場合、DataFrame は各シーケンスオブジェクトの名前を自動的に作成します。コードの例:
print(iris.groupby('name').sepalwidth.max().head(5))次の結果が返されます。
sepalwidth_max 0 4.4 1 3.4 2 3.8説明前の例では、sepalwidth の最大値が取得された後、
sepalwidthにsepalwidth_maxという名前が付けられます。たとえば、指定されたシーケンスオブジェクトにスカラーフィールドを追加すると、返される結果には自動的にシーケンスオブジェクトの名前が付けられます。それ以外の場合は、シーケンスオブジェクトに手動で名前を付ける必要があります。シーケンスオブジェクトは、列の名前を変更するための
renameメソッドを提供します。コードの例:print(iris.sepalwidth.rename('sepal_width').head(5))次の結果が返されます。
sepal_width 0 3.0 1 3.2 2 3.1 3 3.6 4 3.9
列の計算
シーケンスに対して演算を実行して、新しいシーケンスを取得できます。この操作は、単純な Python 変数の計算に似ています。数値列の場合、算術演算がサポートされています。文字列列の場合、文字列の連結のみがサポートされています。コードの例:
print((iris.sepallength + 5).head(5))次の結果が返されます。
sepallength 0 9.9 1 9.7 2 9.6 3 10.0 4 10.42 つの列を計算に使用する場合、PyODPS は表示される列名を判断できません。列名を手動で指定する必要があります。コードの例:
print((iris.sepallength + iris.sepalwidth).rename('sum_sepal').head(5))次の結果が返されます。
sum_sepal 0 7.9 1 7.9 2 7.7 3 8.6 4 9.3説明列の計算の詳細については、「列の操作」をご参照ください。