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

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

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.其实说那么多,还是因为这是博客开篇文啦。。。。。

转载于:https://www.cnblogs.com/xq17dog/p/10540434.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值