데이터 과학 경연 도전 TianChi!(PyODPS의 데이터 처리 편)

6359 단어 TianChi기계 학습
이전에 TianChi의소개편실천편를 소개한 적이 있는데, 이번 TianChi 시리즈의 최종편(데이터 처리)에 대해 총괄하고 싶습니다.
데이터 집합의 예처리를 말하자면, 일반적으로 원본을 시작한 Pandas에서 Dataframe과 Series(TianChi 시리즈의 실천편 참조)를 조작하지만, 데이터의 크기가 클수록 대량의 데이터를 읽으려면 메모리 부족으로 인해 오류가 발생할 수 있습니다아니면 장시간 기다릴 가능성도 높아진다.
Tianchi가 개최한 경기는 정말 다양하다. 제공된 데이터 집합이 반드시 빅데이터의 규모는 아니지만 본 보도에서 빅데이터의 예처리에 초점을 맞추면서PyODPS의 2차원 표와 표열의 데이터 처리 방법전개를 허락해 주십시오.
PyODPS란 무엇입니까?
PyODPS는 Alibaba Cloud가 독자 개발한 빅데이터 처리 플랫폼 MaxCompute의 Python SDK입니다.또한 MaxCompute에서 빅데이터를 미리 처리하고 분석할 수 있도록 데이터 프레임워크를 제공합니다.
PyODPS의 가장 큰 장점은 Pandas화 인터페이스와 DataFrame API를 지원하는 동시에 MaxCompute에서 병렬 분포식 처리 기능을 이용하여 대량의 데이터를 사용할 수 있다는 것이다.Pandas에 익숙해진 사람들에게는 손대기 쉬운 도구입니다.
MaxCompute 정보
2010년부터 Alibaba Cloud는 독자적으로 분포식 계산 처리를 바탕으로 하는 데이터 창고 솔루션을 개발하여 날로 증가하는 방대한 데이터를 저장하고 처리하는 데 사용했다.2014년 자사 빅데이터학과의 주력 클라우드 서비스로 공개된 이후 일본에서도 잘 알려진 중국 11월 11일'싱글데이'세일에서의 빅데이터 처리 등에 활용되고 있다.
또한 전통적인 분포식 계산은 전문적인 IT 지식으로 데이터 분석을 해야 하는데 MaxCompute가 제공하는 데이터 협업 솔루션은 사용자가 분포식 계산의 세부 사항을 고려하지 않고 데이터 분석을 할 수 있도록 한다.

업로드 데이터
MaxCompute에 데이터를 업로드하는 데는 데이터 원본에 따라 실제적으로 여러 가지 방법이 있습니다. 이번에는 MaxCompute의 하이라이트 터널을 사용하여 데이터의 업로드 방법을 설명하겠습니다.
구체적으로 말하면 Alibaba Cloud가 Tianchi에서 발표한 경기 "Offline to Online (O2O) Prediction of Coupon Redemption"를 예로 들면, 먼저 로컬에서 제공된 데이터 집합 (ccf_offline_stage1_train.zip) 을 다운로드합니다.zip 파일이 확장될 때 ccf_offline_stage1_train이라는 csv 파일이 있습니다.
먼저 MaxCompute에서 데이터 세트에 해당하는 ODPS 테이블을 만듭니다.

다음 tunnel 명령을 사용하여 방금 설명한 ODPS 테이블에 데이터 세트를 업로드합니다.
tunnel upload ~/Downloads/dataset/ccf_offline_stage1_train.csv yourProject.ccf_offline_stage1_train;
데이터 사전 처리
먼저 사용자 정보 관리에서 "Aliba Cloud Access Key Id"및 "Access Key Secret"을 확인하십시오.에서 기술한 장면은 다음과 같은 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 부피를 분석하도록 한다.초기화가 완료되면 테이블을 조작할 수 있습니다.
>>>from odps import ODPS

>>>odps = ODPS('accesskey_id', 'accesskey_secret', 
            'project_name',  endpoint = 'endpoint')
다음 명령 확인표의 정보를 호출할 수 있습니다.
>>>t = odps.get_table('ccf_offline_stage1_train')
>>>print(t.schema)

odps.Schema {
 user_id string 
 merchant_id string 
 coupon_id string 
 discount_rate string 
 distance string 
 date_received string 
 date_used string 
}
DataFrame 객체를 작성하려면 DataFrame 모듈을 삽입하고 다음 명령을 수행합니다.
>>>from odps.df import DataFrame
>>>dfoff = DataFrame(odps.get_table('ccf_offline_stage1_train'))
Pandas 라이센스의 head 방법을 사용하면 이전 N개의 데이터 레코드를 가져와 데이터를 빠르게 미리 볼 수 있습니다.
>>>dfoff.head(10)
 
User_id
Merchant_id
Coupon_id
Discount_rate
Distance
Date_received
Date_used
0
1439408
2632
null
null
0
null
20160217

1439408
4663
11002
150:20:00

20160528
null

1439408
2632
8591
20:01
0
20160217
null

1439408
2632
1078
20:01
0
20160319
null

1439408
2632
8591
20:01
0
20160613
null

1439408
2632
null
null
0
null
20160516

1439408
2632
8591
20:01
0
20160516
20160613

1832624
3381
7610
200:20:00
0
20160429
null

2029232
3381
11951
200:20:00

20160129
null

2029232
450
1532
30:05:00
0
20160530
null
Pandas의 기본 데이터 구조(DataFrame과 Series)와 마찬가지로PyODPS의 DataFrame 구조도 Collection이라는 2차원 표와 Sequence라는 1차원 그룹이 있다.그러나 주의해야 할 것은 Sequence는 2차원 테이블의 열이나 줄을 가리키고, Sequence는 2차원 테이블의 열을 가리키기 때문에 줄을 Sequence로 삼아 데이터를 꺼낼 수 없다는 것이다.
Operation
Pandas
PyODPS
Select column
df[col]
df[col] , df.col
Select row by label
df.loc[label]
×
Select row by integer location
df.iloc[loc]
×
PyOPDS Datafram의 편리한 기능 중 하나는 to_pandas() 함수를 사용하여 PyODPS 처리 결과를 Pandas Dataframe 형식으로 저장할 수 있습니다.또한 Matplotlib나 Seaborn 등 라이브러리를 함께 사용하면 그림 그리기 기능을 실현할 수 있다.
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_style('darkgrid')
sns.set_context("notebook", font_scale= 1.4)
x = dfoff.distance.unique().to_pandas().values
y = dfoff.groupby('distance').agg(count=dfoff.distance.count()).to_pandas()
plt.yscale('log')
plt.ylabel('Distance Count')
plt.bar(x,y['count'].values)
plt.tight_layout()

참조 웹 사이트:
본 보도와 관련된 MaxCompute, PyODPS의 개원 및 Tunnel에 대한 자세한 설정 방법은 아래 링크를 참조하십시오.
  • MaxCompute 공식 문서
  • Tunnel 사용법
  • PyODPS의 GitHub
  • 좋은 웹페이지 즐겨찾기