使用python生成词云——聆心云心理健康服务平台数据可视分析和可视化

实验题目:聆心云心理健康服务平台数据可视分析和可视化

实验目的和要求:统计出在聆心云平台做沙盘游戏的次数、根据各次沙盘游戏所使用的沙具和进行的操作数据进行词云可视化,掌握Python词云制作方法

实验步骤:

1.定义函数getUserInfo(),获取用户输入的聆心云平台用户名和密码 

def getUserInfo(): #获取用户输入(聆心云平台用户名和密码)
    userInfo={}
    userInfo['mobile']=input("请输入聆心云用户名(注册账号的手机号码):")    
    userInfo['passwd']=input("请输入密码:")    
    return userInfo

2. 定义函数getIdList(userInfo),参数为步骤1获取的用户名和密码,通过聆心云心理健康服务平台API获取所有沙盘游戏id,并统计出游戏次数:

def getIdList(userInfo): #获取所有沙盘id    
    idList=[]
    url='https://lingxinyun.cn/sp/getIdByAuth'
    try:
        r=requests.get(url,params=userInfo,timeout=30)
        r.raise_for_status()   
        ls=json.loads(r.text)       
        for e in ls:
            idList.append(e['id'])
        print("共做了{}次沙盘游戏。".format(len(idList))) #打印做沙盘的次数
        return idList
    except:
        return "服务器异常!"

效果如下:

   3. 定义函数generateTextFile(idList),入参为步骤2获取的所有沙盘id,该函数的作用是通过这些id依次获取所有沙盘游戏所使用的沙具和进行的操作数据,并输出到文本文件data.txt。

def generateTextFile(idList):  #获取所有沙盘游戏所使用的沙具和进行的操作数据,输出到文本文件
    begin=time.time()
    text=""
    url='https://lingxinyun.cn/sp/getSandPlay?id='
    try:
        fo=open("data.txt","w",encoding='utf-8')
        for id in idList:
             r=requests.get(url+str(id),timeout=30)
             r.raise_for_status()
             r.encoding='utf-8'
             fo.writelines(r.text+"\n")
        fo.close()
        end=time.time()
        s=end-begin
        print("获取并输出游戏数据成功!用时{}秒。".format(s))
    except:
        return "服务器异常!"  

运行结果如下:

生成的文件如下:

4.词云生成前的准备工作,安装第三方库wordcloud、jieba、imageio,jieba库用来对中文进行分词处理,imageio库用来读取背景图片,wordcloud库用来生成词云图片,windows下分别在命令行输入以下命令进行安装:

pip install wordcloud
pip install jieba
pip install imageio

准备一张背景图放到目录下,可根据背景图生成词云的形状

5. 定义函数generateWordcloud(),根据文本文件和背景图片生成词云。

def generateWordcloud(): #根据文本文件生成词云
    fo=open('data.txt',encoding='utf-8')
    t=fo.read()  #读取操作数据
    fo.close()    
    words = jieba.lcut(t) # 使用jieba库进行分词
    txt = ' '.join(words)     # 使用join()方法,将分词生成的字符串以空格进行分割。因为在生成词云时,字符串之间需要为空格
    background_image=imageio.imread('background.png')  #读取背景图片  
    w=wc.WordCloud(background_color='white',# 设置背景颜色
                   font_path = 'C:/Waedows/Fonts/simfang.ttf',# 设置字体
                   mask=background_image # 设置背景图片
                   )
    w.generate(txt)    #生成词云       
    w.to_file('WordCloud.png') # 生成图片
    print("生成词云成功!")

运行结果如下:

最后生成的词云效果:

附完整代码:

import requests
import json
import time
import wordcloud as wc
import jieba 
import imageio

def getUserInfo(): #获取用户输入(聆心云平台用户名和密码)
    userInfo={}
    userInfo['mobile']=input("请输入聆心云用户名(注册账号的手机号码):")    
    userInfo['passwd']=input("请输入密码:")    
    return userInfo

def getIdList(userInfo): #获取所有沙盘id    
    idList=[]
    url='https://lingxinyun.cn/sp/getIdByAuth'
    try:
        r=requests.get(url,params=userInfo,timeout=30)
        r.raise_for_status()   
        ls=json.loads(r.text)       
        for e in ls:
            idList.append(e['id'])
        print("共做了{}次沙盘游戏。".format(len(idList))) #打印做沙盘的次数
        return idList
    except:
        return "服务器异常!"
def generateTextFile(idList):  #获取所有沙盘游戏所使用的沙具和进行的操作数据,输出到文本文件
    begin=time.time()
    text=""
    url='https://lingxinyun.cn/sp/getSandPlay?id='
    try:
        fo=open("data.txt","w",encoding='utf-8')
        for id in idList:
             r=requests.get(url+str(id),timeout=30)
             r.raise_for_status()
             r.encoding='utf-8'
             fo.writelines(r.text+"\n")
        fo.close()
        end=time.time()
        s=end-begin
        print("获取并输出游戏数据成功!用时{}秒。".format(s))
    except:
        return "服务器异常!"    
        
def generateWordcloud(): #根据文本文件生成词云
    fo=open('data.txt',encoding='utf-8')
    t=fo.read()  #读取操作数据
    fo.close()    
    words = jieba.lcut(t) # 使用jieba库进行分词
    txt = ' '.join(words)     # 使用join()方法,将分词生成的字符串以空格进行分割。因为在生成词云时,字符串之间需要为空格
    background_image=imageio.imread('background.png')  #读取背景图片  
    w=wc.WordCloud(background_color='white',# 设置背景颜色
                   font_path = 'C:/Waedows/Fonts/simfang.ttf',# 设置字体
                   mask=background_image # 设置背景图片
                   )
    w.generate(txt)    #生成词云       
    w.to_file('WordCloud.png') # 生成图片
    print("生成词云成功!")

userInfo=getUserInfo()
idList=getIdList(userInfo)
generateTextFile(idList)
generateWordcloud()

实验总结:通过本次实验加深了对数据可视化的理解,学到了文本数据可视化——词云图的制作方法,感受到用Python制作词云的方便快捷,代码简洁,Python安装第三方库也快速高效,体现了Python语言的庞大的计算生态,对Python语言有了更深刻的认识。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 可以使用Python中的wordcloud库来生成词云图。以下是一个简单的示例代码: ```python from wordcloud import WordCloud import matplotlib.pyplot as plt # 读取文本文件 with open('text.txt', 'r', encoding='utf-8') as f: text = f.read() # 生成词云图 wordcloud = WordCloud().generate(text) # 显示词云图 plt.imshow(wordcloud, interpolation='bilinear') plt.axis('off') plt.show() ``` 其中,`text.txt`是要生成词云图的文本文件。你可以根据自己的需求调整词云图的样式、颜色等参数。 ### 回答2: Python生成词云图是一种常见的数据可视化方法,以下是一个简单的案例说明。 首先,我们需要安装wordcloud库,在终端中输入以下命令: pip install wordcloud 接下来,我们需要准备一个文本文件,其中包含我们要生成词云图的文本信息。以文本文件"example.txt"为例,包含以下内容: "Python 是一种简单易学但功能强大的编程语言,广泛应用于数据分析、人工智能、网站开发等领域。" 接下来,我们需要编写Python代码来生成词云图。首先,导入所需的库: import wordcloud import matplotlib.pyplot as plt 然后,读取文本文件内容: with open("example.txt", "r", encoding="utf-8") as file: text = file.read() 接下来,创建一个WordCloud对象,并对文本进行处理: wc = wordcloud.WordCloud() wc.generate(text) 最后,我们使用matplotlib库将词云图显示出来: plt.imshow(wc, interpolation="bilinear") plt.axis("off") plt.show() 运行以上代码后,将会生成一个词云图,显示的是文本文件中关键词的频率。在词云图中,频率较高的词会显示得更大、更突出,频率较低的词会显示得更小、更模糊。在这个案例中,词云图可能会显示"Python"、"编程语言"、"数据分析"等词。 除了默认的生成方式,我们也可以根据需求设置不同的参数。例如,可以通过设置词云图的字体、大小、背景颜色等来自定义词云图的外观。可以参考wordcloud库的文档以获取更多使用方法和示例。 综上所述,Python生成词云图是一种简单而又有趣的数据可视化方法,通过对文本进行处理和分析,可以生成出现频率较高的关键词的词云图,帮助我们更好地理解文本内容。 ### 回答3: 一个经典的Python生成词云图的案例,是使用第三方库WordCloud来生成以文字频率为基础的艺术性词云图。 首先,我们需要准备一些文本数据,比如一本书籍的内容或者一篇文章。然后,我们导入必要的库,包括matplotlib用于绘图,wordcloud用于生成词云。 接下来,我们可以使用nltk库进行数据预处理,如去除停用词,分词等。然后,我们可以使用Counter类统计每个单词的频率。 接下来,我们使用WordCloud类创建一个词云对象,设置相关的参数,如字体、背景颜色、词云形状等。然后,我们使用generate_from_frequencies()方法根据单词的频率生成词云图像。 最后,我们使用matplotlib库将词云图显示出来,或者保存为图片文件。 这个案例展示了如何使用Python生成词云图,我们可以根据不同的需求,调整参数和数据预处理的方式,生成不同风格的词云图。词云图可以用于数据可视化、文章摘要、主题分析等多个领域。通过词云图我们可以直观地了解文本数据的重点关键词,并从中获取有用的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值