学渣学习之路之统计学作业的错误打开方式

学渣学习之路之统计学作业的错误打开方式

0x1 前言

​ 为什么我突然之间会想做这个作业呢,一方面是因为我之前对ocr的有点兴趣,所以就打算这个当作一个尝试,另一方面就是我感觉这个老师讲课还是有点意思的,我比较喜欢这种自由的模式,可以天马行空的想象。同时在写这个文章的时候,我也有很多想法,比如设置个web服务收集整理这些数据方便后来的学弟学妹,但是我觉得写这个有点浪费时间呀,对我来讲也不是特别重要,但是你们有想法也可以去试试哈。

0x2 百度OCR识别表格

​ 首先我们要去百度AI申请个api

image-20190314160827957

然后下载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)

验证下效果:

首先准备两张图片:

test2

test3

然后得到的结果是:

image-20190315115456858

image-20190315115536955

image-20190315115750816

第一张效果还可以,第二张虽然格式乱了,但是数据还是可以的,接下来就是需要处理数据然后导入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的第一列第一行为止,然后按照上面教程选择菜单上的数据->分列,依次可得

image-20190315132356422

这就是分列数据后的结果了,参考教程把行转列

image-20190315133049018

image-20190315133131017

删掉第一行

image-20190315133159606

然后就得到了我们想要的数据,(中间有些步骤自己动动脑筋思考下excel操作就行啦,这里就不赘述了,学长谈恋爱很忙的,懂?)

0x4 excel和spss的使用

​ 根据上面折腾,可以得到一份数据表格,如下。

image-20190315140736493

0x4.1 excel生成频数分布表

​ 百度下不就好啰(学长谈恋爱很忙的,懂?)

0x4.2 spss应用

​ spss在很久以前某个社区(似乎是讨论大数据)就听过这个名字,今天刚好来探索下这个软件有啥功能,maybe将来有可能要跟它打交道。

首先就是要导入excel数据:

image-20190315142855573

一些相关选项

image-20190315143352376

下面就是一些生成图表的操作了。

0x4.2.1 生成频数分布表

image-20190315143558686

image-20190315144544389

填入变量然后确定就可以得到结果了。

0x4.2.2 小插曲

然后我悲催的发现,spass是以变量为分组的,然后跑去问了下我的舍友小胖,他是一列输入的数据,FUCK mmp,那么为啥还需要处理那么多,前面的那些步骤就可以很简单简化了

简化思路:

​ 复制好所有ocr识别的数据,代入python处理代码,然后分列,转置,导入spass,在spass生成结果就大功告成了。

0x4.2.3 坚持就是胜利

​ 我不甘心呀,还是得想个办法来处理当前这种数据,比如合并变量?可是我不会呀。。。

然后我就卑微的开始了百度

image-20190315145152006

​ 然后,乱弄一通

​ 方法1(没啥卵用):

image-20190316000746281

​ 方法2:

​ 复制数据在粘贴到第一列上面去(特别卑微)

​ 方法3:

excel多列合并

​ 反正结果就是我卑微的把数据全都导入到了第一个变量。100个数据

image-20190316004005831

0x4.2.4 结果

​ 然后就是常规操作得到结果了。

image-20190316004057953

0x5 总结

​ 其他的图形有了数据之后直接查资料就行了,我的兴趣也到此为止了,学渣本性难移(做一些重复性的劳动对我来说真的是种折磨,可是自己又好蠢,最终上帝在学神和学渣这两个极端中,让我选择了学渣的安逸生活,自得其所,低要求,高信心去过好生活才是最重要的。) ps.其实说那么多,还是因为这是博客开篇文啦。。。。。

posted @ 2019-03-16 00:56  xq17  阅读(327)  评论(0)    收藏  举报