Tableau 剧本 - 词云
介绍
Tableau 是当今最流行的交互式数据可视化工具。它提供了各种各样的图表,可让您轻松有效地探索和显示数据。本系列指南《Tableau Playbook》介绍了 Tableau 中各种常见的图表。本指南特别关注词云。
在本指南中,我们将按照以下步骤了解词云:
- 我们将从一个示例图表开始并讨论其特征。
- 我们将使用真实的数据集一步步构建词云,同时通过 Tableau 可视化得出一些结论。
入门
例子
这是来自Kaggle的一个词云示例。该词云显示了纽约时报网站上获得最多点赞的前 1% 评论中最常见的单词。它使用大小来表示单词的频率,单词大小越大,频率越高。
更加吸引人的是,由于该话题是点赞最多的评论,因此将词云形状定制为点赞(竖起大拇指)的形状。
概念与特征
词云,更广泛地称为标签云,是一种新颖的文本数据可视化表示。基本单位通常称为标签,在大多数情况下显示为单词。标签形成云的形状。这就是名称的由来。
视觉元素包括大小和颜色。通常我们使用大小来表示标签的频率,使用颜色来表示类别或其他度量。对于一些高级词云,我们可以创建自定义形状来传达更多信息或增强视觉吸引力。不幸的是,Tableau 目前不支持自定义形状。
词云的替代解决方案是树状图或排序条形图。树状图是 Tableau 自动推荐的图表。排序条形图是老式的解决方案。尽管有些审美疲劳,但排序条形图中的排名和比较比其他图更准确。
如果要使用词云,了解其优点和缺点非常重要。
与其他方案相比,词云有以下优势:
- 可扩展性。词云可以容纳大量标签。如果您需要显示数十或数百个标签并突出显示贡献成员,则可以考虑使用词云。而在树形图中,标签无法显示在小矩形中,而词云则带有标签。
- 引人注目的可视化。词云具有良好的视觉吸引力,尤其是当像上例一样呈现为自定义形状时。它们适合信息图或演示文稿,可能比普通图表更吸引眼球。
- 更直观、更显眼。只需快速浏览一下,您就可以找到最常见的标签。这是因为词云的文本本身就是视觉元素,比其他图表更重要。它提供了某种第一印象。
同时,词云也存在很多弱点:
- 难以进行准确的比较。人们更擅长比较文本的长度或位置,而不是面积。另一个问题是,您想要比较的标签没有共同的基线。排序的条形图提供了更定量和准确的比较。因此,词云在严肃的商业数据分析和可视化中没有立足之地。
- 表示的信息相对较少。尽管词云可以支持三个维度或度量以及大量标签,但用户可以提取的主要信息只是一些最常见的标签。较小的标签可能会被忽略。
- 排列混乱。标签按照词云算法进行排列,无序且拥挤,属于同一类别的标签可能相距甚远。相比之下,排序条形图会将数据按降序排列。树状图也基本按照从大到小的顺序排列。
如果您需要进一步阅读,这里有一篇关于词云的好文章。
数据集
在本指南中,我们将使用 Kaggle Dataset 中的数据集Kickstarter Project Statistics。感谢Kickstarter和Kaggle提供此数据集。
该数据集包含 Kickstarter 上获得支持最多的 4000 个项目。您可以在主页上下载“most_backed.csv”。在本指南中,我们将分析项目标题和简介中的热门关键词。
数据准备
在创建词云之前,我们需要借助外部工具进行一些数据预处理,虽然在Tableau中我们可以进行简单的数据处理,但是功能非常有限,通常不能满足我们的需求。
那么我们为什么要加入这个过程呢?因为这不仅仅是简单的数据整理,而是创建词云的重要步骤。
这里我们选择 Python 来演示。您也可以使用其他数据处理工具,例如 Excel 或 R。
为了实现我们的目标,我们将使用pandas,这是一个强大的 Python 数据分析工具包。
- 首先,我们需要安装pandas库并导入它。
import pandas as pd
- 然后我们加载数据集“most_backed.csv”。
df = pd.read_csv("most_backed.csv")
- 进行一些数据整理。将所有文本转换为小写。删除数字和标点符号。对于简介,我们需要用空格替换换行符。
df['title'] = df['title'].str.lower().str.replace('[0-9]|[^\w\s]', '')
df['blurb'] = df['blurb'].str.lower().str.replace('\\n', ' ').str.replace('[0-9]|[^\w\s]', '')
- 将标题和简介拆分成单词。现在我们已经删除了标点符号和换行符,我们可以用空格拆分文本。然后我们将拆分的单词的整列堆叠在一起。对于标题,我们将所有单词列在一列中。对于简介,我们将单词及其数量列在两列中。
df_title = df['title'].str.split(expand=True).stack().reset_index(name='Word')
df_blurb = df['blurb'].str.split(expand=True).stack().value_counts().rename_axis('Word').reset_index(name='Count')
- 当我们观察数据时,我们发现很多高频词都是常用词,没有显著意义,比如“the”或“about”。它们对于我们的分析毫无用处。它们被称为停用词。我们需要将它们过滤掉。以下是来自xpo6的停用词列表。
另外,我们也可以通过链接字段来控制 Tableau 中的这些停用词。
df_title.head(100)
with open("stop-word-list.txt","r") as f:
content = f.read()
stop_words = content.split('\n')
- 接下来,删除停用词和单个字母。
df_title = df_title[~df_title['Word'].isin(stop_words)]
df_title = df_title[df_title['Word'].str.len() > 1]
df_blurb = df_blurb[~df_blurb['Word'].isin(stop_words)]
df_blurb = df_blurb[df_blurb['Word'].str.len() > 1]
- 仅保留一两列并导出数据。
df_title.drop(columns=['level_0', 'level_1'], inplace=True)
df_title.to_csv('title.csv', index=False)
df_blurb.to_csv('blurb.csv', index=False)
过程
这一过程受到来自Towards Data Science和Clearly and Simply的帖子的启发。
我们有多种类型的数据输入。我们将对它们进行演示。
单词列表和计数
在这个例子中,我们连接到数据源“blurb.csv”。
当我们将数据拖入视图时,Tableau 会默认推荐树形图。
- 将Count拖入标记-标签。
- 将Word拖入标记-大小。
在将其转化为词云之前,我们需要先进行计数过滤。因为单词数量非常多,如果不进行过滤,生成词云图将会花费很多时间。
- 将Word拖入Filters。将自动弹出一个对话框。选择All values并点击Next。
- 通过输入或滑动编辑范围从 60 开始。
- 右键单击过滤器并选中“显示过滤器”。
现在我们可以将标记类型转换为文本。Tableau 内置了对词云的支持,这些词云会自动排列成云形。但我们无法自定义形状。
为单词分配颜色。我们将按Count着色。我们也可以按Word着色。这会更加丰富多彩,但毫无意义。如果我们有另一个维度,例如文本类别,则用颜色显示它是个不错的选择。
- 将“计数”拖入“标记-颜色”。
- 展开颜色卡并单击编辑颜色...按钮。
- 选择不同的颜色,如“日出日落发散”,以不同的方式显示单词。
- 要减少颜色数量,请选中分级颜色并将步数设置为 12。
最后一步,让我们完善一下这个图表:
- 将标题编辑为“Kickstarter 简介中的流行词汇”。
- 将颜色图例重命名为“字数统计”。
最终图表如下:
所有单词列表
现在我们连接到数据源“title.csv”。
在这个数据集中,我们必须通过COUNT</fon
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~