使用阿里云dataworks中DataFrame踩的坑

使用阿里云dataworks中DataFrame踩的坑,第1张

dataworks是阿里云基于dataX在云端部署的一套ETL产品,对于中小企业来说大大降低了大数据的门槛和运维开发成本。它可以创建多种类型的节点,对于一般逻辑简单的数据处理直接使用SQL就可以解决,对于逻辑复杂流程也可以只用python节点,如下:

 只用PyODPS节点在做数据处理时遇到了一个小坑,应为PyODPS的DataFrame是阿里重构的,与pandas的DataFrame用法并不一致,若要使用pandas的DataFrame需要做一个转化:

data = DataFrame(o.get_table('k_meanse_test_data'))
#odps的DataFrame和pandas的DataFrame不同需要转化
data = data.to_pandas()

下面是用PyODPS做k-means计算的一个demo:

from odps.df import DataFrame
from odps.df import output
from sklearn.cluster import KMeans
from sklearn import preprocessing
import pandas as pd
import numpy as np
# 输入数据
data = DataFrame(o.get_table('k_meanse_test_data'))
#odps的DataFrame和pandas的DataFrame不同需要转化
data = data.to_pandas()
print data.head()
train_x = data[["ranking_2019","world_cup_2018","asian_cup_2015"]]
kmeans = KMeans(n_clusters=3)
# 规范化到[0,1]空间, (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
min_max_scaler=preprocessing.MinMaxScaler()
#min_max_scaler=preprocessing.StandardScaler()
train_x=min_max_scaler.fit_transform(train_x)
print(train_x)
# kmeans算法
kmeans.fit(train_x)
predict_y = kmeans.predict(train_x)
print(predict_y)
# 合并聚类结果,插入到原数据中
result = pd.concat((data,pd.DataFrame(predict_y)),axis=1)
result.rename({0:u'聚类'},axis=1,inplace=True)
print(result)

运行结果:

 country  ranking_2019  world_cup_2018  asian_cup_2015  èç±»
0       中国            73              40               7       3
1       日本            60              15               5       1
2       韩国            61              19               2       1
3       伊朗            34              18               6       1
4       沙特            67              26              10       1
5      伊拉克            91              40               4       3
6      卡塔尔           101              40              13       0
7      阿联酋            81              40               6       3
8   乌兹别克斯坦            88              40               8       3
9       泰国           122              40              17       0
10      越南           102              50              17       0
11      阿曼            87              50              12       0
12      巴林           116              50              11       0
13      朝鲜           110              50              14       0
14      印尼           164              50              17       2
15      澳洲            40              30               1       1
16     叙利亚            76              40              17       0
17      约旦           118              50               9       3
18     科威特           160              50              15       2
19    巴勒斯坦            96              50              16       0

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/799775.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存