大数据学习练习3--第二天

Posted 冯晨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据学习练习3--第二天相关的知识,希望对你有一定的参考价值。

今天试这次练习的第二天,对昨天的做了一些完善浪费了一些时间,然后计划的今天的第二部分差了一点没有完成。明天尽量补上,但是明天一天课,估计又得加班了。

今天主要做了第二部分的完善行业分类和行业代码信息,在网上搜了好久没有找到可以像百度地图API这样的接口,也没有找到可以直接识别是什么行业的网站,没办法,作者选择了用python的字符串匹配来尝试实现这个功能。

大致思路为,

先爬取https://baike.baidu.com/item/国民经济行业分类/1640176?fr=aladdin的国民经济行业分类代码表大类的行业代码和名字建成数据库表。

然后根据原数据中的代表性字段去匹配行业名,找到相似度最高的就认为他是这个行业,如果没有相似的,填入未知。

接下来上代码:

python字符串相似度匹配代码:

import difflib

def string_similar(s1, s2):
 return difflib.SequenceMatcher(None, s1, s2).quick_ratio()

python调用上面的方法,筛选最相似行业,并返回行业代码和名:

import strsame
import pymysql

db = pymysql.connect(host=localhost,
                     port=3306,
                     user=root,
                     passwd=密码,
                     db=库名,
                     charset=utf8)
def select():
    sql = "select * from hangye"
    # 使用 cursor() 方法创建一个游标对象cur
    cur = db.cursor()
    # 使用 execute()  方法执行 SQL 查询
    cur.execute(sql)
    results = cur.fetchall()
    #strsame.string_similar(s)
    db.close()
    return results
def cpn(s,results):
    jieguo=["0","未知"]
    j=0.0;
    for i in range(0, results.__len__()):
        if j<strsame.string_similar(s,results[i][1]):
            j=strsame.string_similar(s,results[i][1])
            jieguo[0]=results[i][0]
            jieguo[1]=results[i][1]
    return jieguo

python抽取原数据代表字段,并调用上面的方法查找到最近行业,并填入原数据表相应位置:

import Comparenum
import pymysql

db = pymysql.connect(host=localhost,
                     port=3306,
                     user=root,
                     passwd=密码,
                     db=,
                     charset=utf8)
results=Comparenum.select()
def select():
    global results
    data=""
    sql="select yingyonghangyemingcheng,hangye,chengguomingcheng from test2 where biaozhunhangyenum is null"
    # 使用 cursor() 方法创建一个游标对象cur
    cur = db.cursor()
    # 使用 execute()  方法执行 SQL 查询
    cur.execute(sql)
    for i in range(cur.rowcount):
        data1 = cur.fetchone()
        if data1[0]!=None:
           data=data1[0]
           sql_update = "update test2 set biaozhunhangyenum =‘" + center[0] + "‘,biaozhunhangye =‘" + center[
                1] + "‘ where yingyonghangyemingcheng=‘" + data + ""
        elif data1[1]!=None:
            data = data1[1]
            sql_update = "update test2 set biaozhunhangyenum =‘" + center[0] + "‘,biaozhunhangye =‘" + center[
                1] + "‘ where hangye=‘" + data + ""
        else:
            data = data1[2]
            sql_update = "update test2 set biaozhunhangyenum =‘" + center[0] + "‘,biaozhunhangye =‘" + center[
                 1] + "‘ where chengguomingcheng=‘" + data + ""
        #data1 = " ".join(‘%s‘ % id for id in data)
        print(data)
        center=Comparenum.cpn(data,results)
        print(center)
        update(sql_update)
        print(""+str(i)+"次修改")
    db.close()
def update(sql):
    cur = db.cursor()
    # 使用 execute()  方法执行 SQL 查询
    try:
        cur.execute(sql)  # 执行sql
        # 提交
        db.commit()
    except Exception as e:
        # 错误回滚
        print("错误信息:%s" % str(e))
        db.rollback()
if __name__ == __main__:
  select();

这就是所有代码,由于没有爬取到国民经济行业分类代码表大类的行业的数据所以还没有检测有没有成功,所以也没完成,不过自己编了一些数据,感觉效果还行,明天我会完成数据的爬取,然后完成第二部分,进攻第三部分,也就是最后一部分可视化,争取明天完成任务。到此结束。

以上是关于大数据学习练习3--第二天的主要内容,如果未能解决你的问题,请参考以下文章

java 学习第二天小练习

第二天学习的命令与自己的练习体会(文件管理)

Java学习第二天 第2节(数据类型转换)

No_16_0221 Java基础学习第二天

02-python 学习第二天

Python 学习第二天