文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

pandas数据处理清洗实现中文地址拆分案例

2024-04-02 19:55

关注

一、案例场景

字段login_place,一共267725行记录,随机15条记录如下:

  后续数据分析工作需要用到地理维度进行分析,所以需要把login_place字段进行拆分成:国家、省份、地区。

二、初步方案

  第三方中文分词库:jieba,可以对文本进行拆分。使用参考资料:jieba库的使用。
初步方案:

  1. 用jieba.cut()将文本拆分为单词列表list_word;
  2. 分支判断list_word长度,赋值国家、城市、地区。

代码:(抽取1000条记录,看一下我这台机器的运行时间)


%%time
# 地区拆分
for i in range(1000):
    list_word=[word for word in jieba.cut(df.iloc[i,0])]
    if len(list_word)==1:
        if '中国' in df.iloc[i,0]:
            df.loc[i,'国家']=df.iloc[i,0][0:2]
            df.loc[i,'省份']=df.iloc[i,0][2:]
        else:
            df.loc[i,'国家']=df.iloc[i,0]
    elif len(list_word)==2:
        df.loc[i,'国家']=list_word[0]
        df.loc[i,'省份']=list_word[1]
    else:
        df.loc[i,'国家']=list_word[0]
        df.loc[i,'省份']=list_word[1]
        df.loc[i,'地区']=list_word[2]
    if i%100==0:
        print(f'{round(i*100/(int(1000)),2)}%')

  1000条用了1min 37秒。如果全部进行数据解析等待时间应该很久很久。有很多重复的记录,这里先去重,再跑一次代码。

  去重之后,只有404不重复的记录。

  再跑一遍代码,并且把结果保存到本地文件‘df_test.xlsx'。便于查看jieba第三方分词库对本次数据拆分是不是想要的结果。

国家:

‘国家'这一列,中国台湾没有拆分出来。

代码试了一下,发现‘中国台湾'确实拆分不了。证实了台湾确实中国不可缺失的一部分。
省份:

  ‘省份'这一列拆分的更加糟糕。

总结:总数据集运行时间长,切词不准确。需要优化拆分方案!

三、优化方案

  在上面查看Excel文件时候发现‘login_place'字段的数据有以下特点:

优化方案:


%%time
# 地区拆分
for i in range(df.shape[0]):
    if '中国' in df.iloc[i,0] :
        df.loc[i,'国家'] = '中国'
        if ('内蒙古' in df.iloc[i,0]) or ('黑龙江' in df.iloc[i,0]):
#             print(df.iloc[i,0])
            df.loc[i,'省份'] = df.iloc[i,0][2:5]
            if len(df.iloc[i,0]) > 5:
                df.loc[i,'地区'] = df.iloc[i,0][5:]
        else:
            df.loc[i,'省份'] = df.iloc[i,0][2:4] 
            df.loc[i,'地区'] = df.iloc[i,0][4:]
    else:
        list_word = [word for word in jieba.cut(df.iloc[i,0])]
        if len(list_word) == 1:
            df.loc[i,'国家'] = df.iloc[i,0][0:2]
            df.loc[i,'省份'] = df.iloc[i,0][2:]
        else:
            df.loc[i,'国家'] = list_word[0]
            df.loc[i,'省份'] = list_word[1]
    if i%100==0:
        print(f'{round(i*100/(int(df.shape[0])),2)}%')

 保存Excel文件,再次查看拆分情况。经过去重后的测试集拆分符合想要的结果。

 运行未去重源数据集结果:

到此这篇关于pandas数据处理清洗实现中文地址拆分案例的文章就介绍到这了,更多相关pandas 中文地址拆分内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯