esproc vs python 3 数据处理

1.采样(随机的将数据分成30%和70%)

esproc

A4:A.sort(x)按照x对A进行排序,并取长度的30%

A5:差集得到剩下的70%

python:

import time

import pandas as pd

import datetime

import numpy as np

import random

s = time.time()

data = pd.read_csv("C:/Users/Sean/Desktop/esproc_vs_python/EMPLOYEE_nan.txt",sep="\t")

row_no = pd.Series(range(data.shape[0]))

per_30_no = row_no.sample(frac=0.3)

per_70_no = row_no[~row_no.isin(per_30_no)]

data_per_30 = data.iloc[per_30_no,:]

data_per_70 = data.iloc[per_70_no,:]

print(data_per_30)

print(data_per_70)

e = time.time()

print(e-s)

pd.Series()得到所有行的行号

Series.sample()进行抽样,~表示逻辑非。最后通过iloc[]切片截取数据。

结果:

esproc

python


2.数字的字段不变,其他字段转换为数字

esproc 

A4:A3(1).array()得到第一条记录的序列。r.ifnumber(~)判断记录中的字段是否是实数,如果是返回true,否则返回false;pselect@a()找到满足条件的序号组成序列

B5:分别按照字段分组

B6:A.run(xi)针对序列/排列A中每个成员计算表达式xi,计算过程中可能对A进行修改,最后返回修改后的A 。B5.#,表示当前的值。这里是用当前的组号修改原来的字段值。

python:

import time

import pandas as pd

import datetime

import numpy as np

import random

s = time.time()

data = pd.read_csv("C:/Users/Sean/Desktop/esproc_vs_python/EMPLOYEE.txt",sep="\t")

class_mapping = {}

columns = data.columns

for column in columns:

    try:

        data[column] = data[column].apply(pd.to_numeric)

    except ValueError:

        lg = list(data.groupby(column))

        class_mapping = {}

        for i in range(len(lg)):

            class_mapping[lg[i][0]]=i+1

        data[column]=data[column].map(class_mapping)

print(data)

e = time.time()

print(e-s)

得到数据的字段序列;

pd.to_numric是将字符串化的数字(如‘1’,‘1.4’)转化成数字。

循环字段,尝试df.apply(pd.to_numric)将字段数字化。如果不能数字化,以该字段为key分组,形成该分组的字典。

最后利用df.map(dic)函数修改字段值为字典对应的数字。

结果:

esproc

python


3. 用户重复听的音乐的时间求平均值

esproc

A4:T.groups(),将序表按照一个或多个字段/表达式进行分组聚合后,形成新序表,这里是按照user,music两个字段进行分组聚合,将listen_time字段求均值,作为新的listen_time.

python:

import time

import pandas as pd

import datetime

import numpy as np

import random

s = time.time()

user_watch_data = pd.read_csv('C:/Users/Sean/Desktop/kaggle_data/music_project_data/user_watch1.csv')

u_i_watch_list = []

u_i_listen_m = user_watch_data.groupby(by=['user','music'],as_index=False).mean()

print(u_i_listen_m)

e = time.time()

print(e-s)

使用df.groupby(by,as_index),by参数代表需要分组的键,as_index参数代表是否将键当做索引,mean()函数代表求平均值

结果:

esproc

python


4. 用户重复听的音乐的时间求平均值后,按照music字段合并long字段,并用listen_time/long作为score字段

esproc

A5:T.keys()设置主键。

A7:T.join(C,T2:k,x)用序表T的字段C匹配序表/排列T2的键k找到相应记录,在T上拼接T2中的表达式x作为字段F添加到T上形成新序表。new()新建序表,用user,music,score作为字段

python:

import time

import pandas as pd

import datetime

import numpy as np

import random

s = time.time()

user_watch_data = pd.read_csv('C:/Users/Sean/Desktop/kaggle_data/music_project_data/user_watch1.csv')

music_meta_data = pd.read_csv('C:/Users/Sean/Desktop/kaggle_data/music_project_data/music_meta1.csv')

u_i_watch_list = []

u_i_listen_m = user_watch_data.groupby(by=['user','music'],as_index=False).mean()

data_merge = pd.merge(u_i_listen_m,music_meta_data,on='music')

data_merge['score'] = data_merge['listen_time']/data_merge['long']

u_i_s_data = data_merge[['user','music','score']]

print(u_i_s_data)

e = time.time()

print(e-s)

pd.merge(df1,df2,on),这里是以music作为键来合并df1和df2.

结果:

esproc

python


5. music作为索引,user作为字段,score作为分数,产生透视表

Esproc

A8:从这里计算时间。

A9:A.concat(d)用分隔符d连接A中成员返回成字符串,并处理子序列。d省略时将成员直接连起来。@c选项表示用逗号连接,相当于A.concat(“,”),@q选项串成员接入时加上引号,缺省不会处理

C10: A.pivot(g,…;F,V;Ni:N'i,…) 以字段/表达式g为组,将每组中的以F和V为字段列的数据转换成以Ni和N'i为字段列的数据,以实现行和列的转换。Ni缺省为F中的不重复字段值,N'i缺省为Ni。

python:

import time

import pandas as pd

import numpy as np

import random

user_watch_data = pd.read_csv('C:/Users/Sean/Desktop/kaggle_data/music_project_data/user_watch1.csv')

music_meta_data = pd.read_csv('C:/Users/Sean/Desktop/kaggle_data/music_project_data/music_meta1.csv')

u_i_watch_list = []

u_i_listen_m = user_watch_data.groupby(['user','music'],as_index=False).mean()

data_merge = pd.merge(u_i_listen_m,music_meta_data,on='music')

data_merge['score'] = data_merge['listen_time']/data_merge['long']

u_i_s_data = data_merge[['user','music','score']]

s = time.time()

u_i_s_data = pd.pivot_table(u_i_s_data,index = 'music',columns='user',values='score')

print(u_i_s_data)

e = time.time()

print(e-s)

使用pd.pivot_table(df,index,columns,values)生成透视表。

结果:

esproc

python


小结:本节我们对数据进行处理,包含了数据的采样、合并、计算、产生透视表,在处理过程中,esproc分步显示结果的优势就体现出来了,每对数据进行处理一步,我们就可以清晰的查看结果,而不必像python那样每次都要print()一下。这里想吐槽一下,esproc中没有提供查看字段类型的函数,这带来了一些麻烦,但没有更好的办法,因为esproc是泛型的,它支持同一列的数据类型不一样,不支持判定单一类型字段的类型。

EMPLOYEE.txt

music_meta1.csv

user_watch1.csv

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容