本案例中的歌词数据来自中文歌词数据库。

前排提示:文末送可视化好书~

这个数据库提供了华语歌手的歌曲及歌词信息,数据以 JSON 格式存储。

为了尽量完整地呈现从原始数据到可视化的过程,接下来我们会先简单讲解数据的预处理过程,即如何将 JSON 数据转化为Excel 格式,以及如何对周杰伦的歌曲进行分词。

若你希望跳过数据预处理的过程,也可以在《数据可视化设计指南:从数据到新知》一书的下载文件中,直接使用分好词的 Excel 文件进行可视化练习。

数据预处理指的是将原始数据处理成我们希望的格式,并提取出我们需要的信息。

在本案例中,我们需要先从数据库中筛选出演唱者为周杰伦的歌曲,然后获得这些歌曲的歌词,并将它们存储到纯文本文档(.txt 格式)中。以下提供两种方法。

第一种方法,先把 JSON 文件转换为 Excel 可以打开的 .csv 文件或 .xlsx 文件格式。这可以借助一些在线的转换工具完成(如 JSON to CSV Converter)。一般而言,只需将文件拖入这些工具,选择好转换格式类型,即可转换完成。接着,我们便可以在 Excel 中打开该数据,然后单击“数据→筛选”命令,选择歌手为“周杰伦”的歌曲。之后,选中它们的歌词,并将其粘贴到纯文本文档中。

第二种方法,通过 Python 进行数据预处理。代码如下。

首先,需要引入 JSON 库(未安装者通过 pip install json 安装)。

import json

然后,读取我们下载的 JSON 文件,存储在名为 data 的变量中。

with open(‘ lyrics.json’ , ‘ r’ ) as f:
data = json.load(f)

接着,遍历 data 中的每一项,找出“歌手”=“周杰伦”的数据项,存到data_zjl 中。

data_zjl = [item for item in data if item[‘ singer’ ]==’ 周杰伦’ ]
print(len(data_zjl))

建立一个空列表 zjl_lyrics,用于存储歌词。遍历 data_zjl 中的每一首歌,将它们的歌词存到 zjl_lyrics 中。

Zjl_lyrics = []
for song in data_zjl:
zjl_lyrics = zjl_lyrics + song[‘ lyric’ ]

最后将 zjl_lyrics 写入一个新的 .txt 文件。

with open(“ zjl_lyrics.txt” , “ w” ) as outfifile:
outfifile.write(“ \n” .join(zjl_lyrics))

通过这几行代码,我们就获得了周杰伦所有歌曲的歌词数据(见图1)。以这个 .txt 文件为基础,我们便可以进行词频统计了。

图1

以下附上一种在 Python 中分词的方法。首先引入 jieba 库(安装 :pip install jieba)、pandas 库(安装 :pip install pandas)、用于频次统计的 Counter 库,以及表单工具,代码如下。

import jieba
import jieba.analyse
import pandas as pd
from collections import Counter

事先准备好一个中文的停用词表(.txt 文件,里面包含一些常见的、需要过滤的中文标点和虚词,可在网上下载),代码如下。

with open(‘ chinese_stop_words.txt’ ) as f:
stopwords = [line.strip() for line in f.readlines()]

打开歌词文件,利用 jieba 库进行分词。分词之后,删除停用词、去除无用的符号等。用 Counter 库对清洗干净的词语进行频次统计。然后将统计结果用 pandas库转换为数据表单,存储为 Excel 文件,代码如下。

fifile = open(“ zjl_lyrics.txt” ).read()
words = jieba.lcut(fifile, cut_all=False, use_paddle=True)
words = [w for w in words if w not in stopwords]
words = [w.strip() for w in words]
words = [w for w in words if w != ‘ ’ ]
words_fifilter = [w for w in words if len(w) > 1]
df = pd.DataFrame.from_dict(Counter(words_fifilter), orient=’ index’ ).
reset_index()
df = df.rename(columns={‘ index’ :’ words’ , 0:’ count’ })
df.to_excel(“ 周杰伦分词结果 .xlsx” )

由此,我们便获得了分词后的单词及词频(见表1)。使用这个文档,我们就可以开始制作可视化了。

表1

由于是文本类数据,我们首先想到的可视化形式可能是文字云。如果你使用 Python,则可以直接基于刚才的分析结果,调用wordcloud库绘制文字云,代码如下。

from wordcloud import WordCloud
# 注 :这里需要引入一个中文字体,否则会乱码
wc = WordCloud(font_path = ‘ Alibaba-PuHuiTi-Regular.ttf’ ,
background_color=” white” ,
max_words = 2000)
wc.generate(‘ ‘ .join(words_fifilter))
import matplotlib.pyplot as plt
plt.imshow(wc)
plt.fifigure(fifigsize=(12,10), dpi = 300)
plt.axis(“ off” )
plt.show()

绘制结果如图2所示。

图2

不过,在代码工具内绘制文字云,进行定制化设计相对比较复杂。因此,也可以借助一些在线工具帮助我们实现更好的可视化效果。

目前,许多中文的工具都可以专门用来制作文字云,如微词云、易词云、图悦等(相关总结可参考知乎专栏的一篇文章《词频统计工具哪家强,对比 8 款工具得出了结果》)。下面,我们以微词云为例进行演示。

进入微词云界面后,首先单击“导入单词”,进行数据导入。选择“从 Excel 中导入关键词”,然后上传我们刚才得到的包含单词和词频的 Excel 文档(需要注意的是,微词云目前对上传的 Excel 文件格式有一定要求,比如,列名必须叫“单词”和“词频”才能识别,详见其页面指引),即可生成文字云(见图3)。

图3

可以看到,微词云的页面上还有另外两种导入数据的选项。其中,“简单导入”支持用户输入用逗号隔开的单词。“分词筛词后导入”则支持用户粘贴长文本,然后由系统自动进行分词和词性判别。换句话说,如果你有一个文档文件,也可以直接粘贴进微词云进行分词。

接下来我们用周杰伦的歌词文档来尝试一下。选择“分词筛词后导入”,然后将图1 的 .txt 格式的文档粘贴进微词云。之后,单击“开始分词”,软件就会自动把词语切割出来,并按词性归类,结果如图4所示。

图4

可以看到,所有的词语被按照动词、名词、形容词、人名等归类。词语后面的括号标注了词频。同时,微词云还自动帮我们把高频的词汇勾选出来。我们也可以根据个人需求,在这个界面中进一步编辑,例如只显示名词、只显示动词等,然后单击“确定使用所选单词”按钮,即可生成词云。

之后,我们可以在“配置”栏中编辑词云的显示方式。其中,“计算模式”指的是字体的大小是否严格与词频匹配,因此我们选择“严格比例”。另外,我们还可以更改文字的颜色,以及文字云中单词的数量等。在本案例中,我们把单词数量调整到 200(见图5)。调整完毕后,单击右上角的“下载到本地”按钮即可。

图5

在左侧编辑区的“形状”中,可以替换词云的蒙版。其中既有内置的一些矢量形状, 也可以上传自己的图片(见图6,笔者上传了一张周杰伦的素材图片)。

图6

当然,虽然词云在视觉上比较有趣,但在展示数据上却不一定清晰。因此,我们也可以使用其他的图表来进行可视化。比如,可以用圆面积来展示最高频的词汇。

图7 是使用 AI 工具绘制的。首先,我们在“图表工具”中选择“饼图”,按竖直方向将数据粘贴进去,单击“确定”按钮,即可生成对应面积的一系列圆形。

图7

然后,选中所有圆形,取消分组,即可对它们进行单独编辑。之后,我们分别为它们加上文字,并调整颜色、背景等,即可得到一幅圆面积图。

以上,我们讲解了使用 Python 分词和使用在线工具分词的两种方法。

需要提醒的是,不同的分词途径,分词的结果可能不同(尤其是在语句比较复杂、生僻的情况下)。

因此,对分词质量比较看重的读者有必要对比不同方法分词的效果,选择最优的方案。

本文节选自《数据可视化设计指南:从数据到新知(全彩)》一书,欢迎阅读本书了解更多精彩内容。

限时五折优惠,快快点击抢购吧!

最后的最后,这么好的书,给大家争取了3本作为福利,本文三连(点赞、在看或者转发任意都可)后,留言点赞排名前3各送1本,开奖时间截至4月12日22:00,祝大家好运(为了给更多朋友机会,4月已经中过的同学暂时处于冷却期)

点击阅读原文,查看本书详情!

分析了波周杰伦,还做了数据可视化!相关推荐

  1. 天天在做的数据可视化,才是企业数字化转型的关键

    在疫情期间,数字化时代加速到来,大多数企业还没有完全准备好数字化转型,就已经被甩到了身后. 随着数字经济成为社会经济中心中的一环,数据已经变成了事实上的社会组成元素.借助大量数据,企业可以对几乎所有业 ...

  2. python做大数据可视化软件_一般用哪些工具做大数据可视化分析?

    大家都回答的是工具产品,似乎都没有人讲讲R语言和Python,怒答. -------------------------------------------多图预警! R-ggplot2 ggplot ...

  3. 【置顶】利用 NLP 技术做简单数据可视化分析教程(实战)

    置顶 本人决定将过去一段时间在公司以及日常生活中关于自然语言处理的相关技术积累,将在gitbook做一个简单分享,内容应该会很丰富,希望对你有所帮助,欢迎大家支持. 内容介绍如下 你是否曾经在租房时因 ...

  4. 做大数据可视化分析的软件和工具有哪些?

    大数据可视化分析工具,既然是大数据,那必须得有处理海量数据的能力和图形展现和交互的能力.能快速的收集.筛选.分析.归纳.展现决策者所需要的信息,并根据新增的数据进行实时更新. Excel作为一个入门级 ...

  5. 1年经验却拿总监薪资?看到他做的数据可视化报表,我彻底服了

    马云曾说过,未来5年最重要的能源是数据.到那时,数据分析将是人人必备的能力. 某招聘网站上的岗位需求 工业互联网.新基建.数字化转型...这些概念无时无刻不在提醒着我们:数据是那么的重要.在职场上也是 ...

  6. 【pyecharts数据可视化】python爬取去哪儿网景点数据,做交互式数据可视化

    写在前面 在网易云课堂看到城市数据团大鹏老师讲的<Python数据可视化利器:Pyecharts!>[传送门],于是把前一篇南京的景点数据做一个可视化. 1.还是去哪儿网景点爬取 具体可以 ...

  7. 你做的数据可视化太普通?这20个高质量的外国网站赶紧收藏

    转载/苏有熊 有熊说: 伟大的可视化有一些神奇之处,它可以为用户提供关于当前主题的全新视角. 下文所提到的这些网站,将帮助你练习探索以一种有意义的方式发现数据背后的真相. 本主题文章分为上下两个部分, ...

  8. 多维度雷达图怎么做_数据可视化:柱状图、雷达图等六种基本图表的特点和适用场合...

    序言 进入正题之前,先纠正一种误解. 有人觉得,基本图表太简单.太原始,不高端,不大气,因此追求更复杂的图表.但是,越简单的图表,越容易理解,而快速易懂地理解数据,不正是"数据可视化&quo ...

  9. 用Python分析周杰伦歌曲并进行数据可视化

    大家好,今天我们用python分析下周杰伦歌曲.为了尽量完整地呈现从原始数据到可视化的过程,接下来我们会先简单讲解数据的预处理过程,即如何将 JSON 数据转化为Excel 格式,以及如何对周杰伦的歌 ...

最新文章

  1. Reactjs-JQuery-Omi-Extjs-Angularjs对比
  2. 离散小波变换 python_CDF 9/7离散小波变换(卷积)
  3. 哈尔滨工业大学(威海)第九届ACM程序设计竞赛
  4. C++ this指针初步使用,与链式编程
  5. 这4种分析方法,大牛产品经理都在用
  6. 蓄水池抽样(Reservoir Sampling)
  7. 【Flink】Flink 1.12 AbstractRichFunction 源码
  8. Exynos1080处理器性能与功耗究竟怎么样?
  9. Lync Server 2013 标准版部署(十)边缘服务器部署[三]
  10. 【定位】TOF与TDOA
  11. 正点原子STM32F103学习笔记(一)
  12. ODAC安装配置与使用详解
  13. 办公环境大改造 澳洲健康食品激活生活每一天 VTN品牌俱乐部把关你的品质生活
  14. MySQL 用户权限详细汇总
  15. 中职计算机英语教学设计,中职英语教学设计三篇
  16. Java图片转换为PDF并合成同一PDF
  17. 分析1300万起案件:洛杉矶警局如何用大数据预测犯罪?
  18. 设置 XShell 的默认全局配色方案
  19. 探秘谷歌地球,它如何绘制全球98%的地图?
  20. linux tar xzmf,有人吗??IT大神求助

热门文章

  1. DTOJ 4848. 交通网络
  2. uniapp 使用 nvue 加载map地图
  3. WebRTC系列-工具系列之音频混音
  4. 彻底根除“无法安装64位版本的Office,因为在您的PC上找到了以下32位程序:”的问题
  5. Win10 中word2016打开后提示无法启动转换器的几种解决办法及其测试结果
  6. 计算机毕业设计 SSM+Vue游戏推广商城系统 游戏虚拟商城平台 热门游戏商城平台
  7. 关于康熙部首导致的字典查询异常
  8. 爬虫+数据分析+可视化大作业:基于大数据的高质量电影分析报告
  9. android 手机安装怎么信任证书,Charles中关于手机证书安装以及信任
  10. 直播视频讲解-【10分钟完成一个物联网应用】快上车