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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)