栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用阿里云dataworks中DataFrame踩的坑

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用阿里云dataworks中DataFrame踩的坑

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/849622.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号