学渣学习之路之统计学作业的错误打开方式
0x1 前言
为什么我突然之间会想做这个作业呢,一方面是因为我之前对ocr的有点兴趣,所以就打算这个当作一个尝试,另一方面就是我感觉这个老师讲课还是有点意思的,我比较喜欢这种自由的模式,可以天马行空的想象。同时在写这个文章的时候,我也有很多想法,比如设置个web服务收集整理这些数据方便后来的学弟学妹,但是我觉得写这个有点浪费时间呀,对我来讲也不是特别重要,但是你们有想法也可以去试试哈。
0x2 百度OCR识别表格
首先我们要去百度AI申请个api
然后下载sdk,或者直接一行命令pip install baidu-aip
来进行安装
然后阅读文档了解下作用及其用法
写出对应的代码如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import json
import time
from aip import AipOcr
""" 你的 APPID AK SK """
APP_ID = '15762812'
API_KEY = 'VEXf13WozadtQiE26hzytddK'
SECRET_KEY = '2hG9002HaG1VaGY8nSh7EFumEEGgY2LU'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_image_content(filePath):
with open(filePath,'rb') as f:
return f.read()
def main(filePath):
image=get_image_content(filePath)
""" 调用表格文字识别 """
try:
result=client.tableRecognitionAsync(image)
# 获取结果
request_Id = result['result'][0]['request_id']
except Exception as e:
print e
""" 调用表格识别结果 """
# client.getTableRecognitionResult(request_Id)
""" 参数配置 """
options = {}
options['result_type']="excel"
""" 带参数调用表格识别结果 """
parse_result = client.getTableRecognitionResult(request_Id, options)
try:
# 获取任务状态
ret_code = parse_result['result']['ret_code']
while(ret_code != 3):
print ret_code
# 延时2秒
time.sleep(2)
# 重新请求
parse_result = client.getTableRecognitionResult(request_Id, options)
ret_code = parse_result['result']['ret_code']
except Exception as e:
print e
print parse_result
if __name__ == '__main__':
filePath='test3.png'
main(filePath)
验证下效果:
首先准备两张图片:
然后得到的结果是:
第一张效果还可以,第二张虽然格式乱了,但是数据还是可以的,接下来就是需要处理数据然后导入spass和excel了。
0x3 数据处理
在excel打开ocr识别的文件,可以很简单得到每一列的数据, 比如第一列是BDABCDBBAC
,那么如何让一串字符串转换为一列数据呢? 这个可以参考下教程在EXCEL中,如何将长字符串转换为列,或者随随便便写个excel公式处理就行,但是我觉得我写excel公式不如直接写python代码处理好了,所以还是研究下傻瓜化操作有意义些。so
这里介绍下我的做法:
用python转换下格式:
>>> s=str(list('BDABCDBBAC')).replace("'","").replace("[","").replace("]","").replace(" ","")
>>> print s
得到数据B,D,A,B,C,D,B,B,A,C
填入excel的第一列第一行为止,然后按照上面教程选择菜单上的数据->分列,依次可得
这就是分列数据后的结果了,参考教程把行转列
删掉第一行
然后就得到了我们想要的数据,(中间有些步骤自己动动脑筋思考下excel操作就行啦,这里就不赘述了,学长谈恋爱很忙的,懂?)
0x4 excel和spss的使用
根据上面折腾,可以得到一份数据表格,如下。
0x4.1 excel生成频数分布表
百度下不就好啰(学长谈恋爱很忙的,懂?)
0x4.2 spss应用
spss在很久以前某个社区(似乎是讨论大数据)就听过这个名字,今天刚好来探索下这个软件有啥功能,maybe将来有可能要跟它打交道。
首先就是要导入excel数据:
一些相关选项
下面就是一些生成图表的操作了。
0x4.2.1 生成频数分布表
填入变量然后确定就可以得到结果了。
0x4.2.2 小插曲
然后我悲催的发现,spass是以变量为分组的,然后跑去问了下我的舍友小胖,他是一列输入的数据,FUCK mmp,那么为啥还需要处理那么多,前面的那些步骤就可以很简单简化了
简化思路:
复制好所有ocr识别的数据,代入python处理代码,然后分列,转置,导入spass,在spass生成结果就大功告成了。
0x4.2.3 坚持就是胜利
我不甘心呀,还是得想个办法来处理当前这种数据,比如合并变量?可是我不会呀。。。
然后我就卑微的开始了百度
然后,乱弄一通
方法1(没啥卵用):
方法2:
复制数据在粘贴到第一列上面去(特别卑微)
方法3:
反正结果就是我卑微的把数据全都导入到了第一个变量。100个数据
0x4.2.4 结果
然后就是常规操作得到结果了。
0x5 总结
其他的图形有了数据之后直接查资料就行了,我的兴趣也到此为止了,学渣本性难移(做一些重复性的劳动对我来说真的是种折磨,可是自己又好蠢,最终上帝在学神和学渣这两个极端中,让我选择了学渣的安逸生活,自得其所,低要求,高信心去过好生活才是最重要的。) ps.其实说那么多,还是因为这是博客开篇文啦。。。。。