python execl数据清洗/词云可视化(一)

本文介绍了如何使用Python进行数据清洗,包括从Excel读取数据、去重、分词、剔除停用词,并通过jieba库实现。随后,对处理后的数据进行词频统计,并生成词云可视化图表。
摘要由CSDN通过智能技术生成

目录

数据清洗

词云可视化

execl内容如下 :

库的导入


import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib
# matplotlib.use('TkAgg')  OS报错macOS 12 (1207) or later required, have instead 12 (1206) !
matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt
import collections

 停用的表如下:

数据清洗

对excel表的内容进行读取/查重/分词/统计

def filter_same():
    df = pd.read_csv(execl_path)  # 读取爬取的数据
    data = pd.DataFrame(df)
    # 删除重复行:
    datatmsp = data.drop_duplicates()
    # print(datatmsp)
   
    data = datatmsp[['标题', '价格']]
    # print(data)
    data.head()  # 默认查看前5行数据
    title = datatmsp['标题'].values.tolist()
    # title = datatmsp.title.values.tolist()  # 转为list
    # print(title)
    # 对每个标题进行分词:  使用lcut函数
    title_s = []
    for line in title:
        title_cut = jieba.lcut(line)
        title_s.append(title_cut)
    # print(title_s)
    '''
    对 title_s(list of list 格式)中的每个list的元素(str)进行过滤 剔除不需要的词语,
    即 把停用词表stopwords中有的词语都剔除掉:
    '''

    # 导入停用词表:
    stopwords = pd.read_excel('/Users/mac/Documents/study23/ios_auto/test_case/stopword.xlsx')
    stopwords = stopwords.stopword.values.tolist()
    print(stopwords)

    # 剔除停用词:
    title_clean = []
    for line in title_s:
        line_clean = []
        for word in line:
            # 设置停用词并去除单个词
            if word not in stopwords and len(word) > 1:
                line_clean.append(word)
        title_clean.append(line_clean)
    '''
    因为下面要统计每个词语的个数,所以 为了准确性 这里对过滤后的数据 title_clean 中的每个list的元素进行去重,
    即 每个标题被分割后的词语唯一。 
    '''
    title_clean_dist = []
    for line in title_clean:
        line_dist = []
        for word in line:
            if word not in line_dist:
                line_dist.append(word)
        title_clean_dist.append(line_dist)

    # 将 title_clean_dist 转化为一个list: allwords_clean_dist
    allwords_clean_dist = []
    for line in title_clean_dist:
        for word in line:
            allwords_clean_dist.append(word)
    # print(allwords_clean_dist)

    # 筛选后统计
    word_counts = collections.Counter(allwords_clean_dist)

    # # 获取前100最高频的词
    word_counts_top100 = word_counts.most_common(100)
    # print(word_counts_top100)
    # 使用pandas库中的DataFrame类可以将数据转换为数据框,这是一个二维表格结构
    # df = pd.DataFrame(word_counts_top100, columns=['word', 'count'])
    # print(df)
    # df.to_excel('word_count.xlsx', index=False)

    # '''
    # 观察 word_count 表中的词语,发现jieba默认的词典 无法满足需求:
    # 有的词语(如 可用、不可用等)却被cut,这里根据需求对词典加入新词
    # (也可以直接在词典dict.txt里面增删,然后载入修改过的dict.txt)
    # '''
    #
    # # add_words = pd.read_excel('add_words.xlsx')  # 导入整理好的待添加词语
    # add_words = pd.DataFrame(word_count, columns=['word', 'count'])
    # # print(add_words)
    # # add_words.to_csv('add_words.csv', index=False)  # 生成文档
    #
    # # 添加词语:
    # for w in add_words.word:
    #     jieba.add_word(w, freq=1000)
    #
    # # 注:再将上面的 分词_过滤_去重_汇总 等代码执行一遍,得到新的 word_count表
    #
    # # word_count.to_excel('word_count.xlsx', index=False)    # 导出数据

    return word_counts

词云可视化

前提:电脑中要先下载字体(根据需要的字体进行下载)

下载:

链接: https://pan.baidu.com/s/11bhyDXRcIHA_VAAOCl6Jfg?pwd=njvy 提取码: njvy

def could_word():
    word_count = filter_same()
    my_cloud = WordCloud(
        background_color='white',  # 设置背景颜色  默认是black
        width=900, height=600,
        max_words=100,  # 词云显示的最大词语数量
        font_path='/Users/mac/Documents/SourceHanSansCNHeavy.otf',  # 设置字体  显示中文(字体需要优先下载到mac 中)
        max_font_size=99,  # 设置字体最大值
        min_font_size=16,  # 设置子图最小值
        random_state=50  # 设置随机生成状态,即多少种配色方案
    ).generate_from_frequencies(word_count)

    # 显示生成的词云图片
    plt.imshow(my_cloud, interpolation='bilinear')
    # 显示设置词云图中无坐标轴
    plt.axis('off')
    plt.savefig('wordcloud.png', dpi=600)  # 保存为图片
    plt.show()

运行后生成图片:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值