python有许多使用的工具包,pandas就是其中一种。笔者理解,pandas中的dataframe,series就是针对二维矩阵,一维数组进行数据清洗,排序,存储的数据结构工具。
下面从笔者着手的一个小项目说起。
例如,需要统计一些词在作弊审核过程中的准确性,挑出一些准确率高的词直接拒绝,准确率低的词剔除不用。
首先import pandas as pd
在该项目中,使用pandas做了三个工作,数据存储,数据筛选,数据排序及分析。
其一,数据存储。首先我们需要建立一个如下图的表格,存储如下信息:
其中,percision是该词的作弊准确率,sum是总体送审数,s2为拒绝数。将审核抽样样本download下来之后,统计每个词对应的审核通过数,拒绝数,一轮下来,,每个词对应的presicion就即可计算完毕。
通过
parray = pd.DataFrame(word_infodict.values(), columns=['word','s2','sum','persicion']),就可建立一张dataframe列表,并通过to_csv函数存储在本地,就可以随时进行数据分析了。
其二,数据筛选
通过parray = pd.read_csv(sys.argv[1] , sep="\t", encoding='utf8')载入数据
筛选出准确率大于0.9的词语,加入拒绝项:
indexs_high = parray[(parray.percision >=0.9) &(parray.precision <= 1) &(parray.sum>=10) ]
准确率小于0.1的词语,加入排除项:
indexs_low = parray[(parray.percision >=0) &(parray.precision <= 0.1) &(parray.sum>=10) ]
然后整理precision属于[0.1 , 0.9]区间的词语,提高准确率。
indexs_mid= parray[(parray.percision >=0.1) &(parray.precision <= 0.9) &(parray.sum>=10) ]
其三,数据排序
对0.1-0.9区间的词语进行整理,根据召回量(sum),准确率(percision)进行排序,再选取word,content值进行review
psubn = indexs_mid.sort_values(by=['sum','percision'],ascending=False)
for index, item in psubn.iterrows():
print item['word'], item['contents']
这就是整个过程,项目初试牛刀,以后估计有更多的分享机会,谢谢!