我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何用Pyecharts生成云词

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何用Pyecharts生成云词

本篇内容介绍了“如何用Pyecharts生成云词”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

前言

首先我们得先了解两个概念——上胸围 & 下胸围,具体看示意图:

如何用Pyecharts生成云词

通过上胸围与下胸围的差值,我们就可以确定罩杯的大小了,具体的对应关系可参考下图:

如何用Pyecharts生成云词

有了下胸围 & 罩杯就能确定文胸对应的尺码了~
当然这又有分为英式尺码和国际尺码,具体参考下图:

如何用Pyecharts生成云词

from pyecharts.charts import *from pyecharts import options as optsfrom pyecharts.commons.utils import JsCodefrom collections import Counterimport reimport pandas as pdimport jiebaimport jieba.posseg as psgfrom stylecloud import gen_stylecloudfrom IPython.display import Image

数据处理

原始数据是txt格式,为了方便处理,这边转为Dataframe~

尺码部分通过正则表达式提取出对应的下胸围和罩杯,具体代码如下:

In [2]:

patterns = re.compile(r'(?P<datetime>.*),颜色分类:(?P<color>.*?);尺码:(?P<size>.*?),(?P<comment>.*)')with open('/home/kesci/input/cup6439/cup_all.txt', 'r') as f:    data = f.readlines()obj_list = []for item in data:    obj = patterns.search(item)    obj_list.append(obj.groupdict())    data = pd.DataFrame(obj_list)data = pd.concat([data, data['size'].str.extract('(?P<circumference>[7-9]{1}[0|5]{1}).*(?P<cup>[a-zA-Z])',                                           expand=True)], axis=1)data.head()

Out[2]:


colorcommentdatetimesizecircumferencecup
0肤色薄款不错给婆婆买的,准备再买两件2017-04-20 13:06:0438/85C85C
1H007宝蓝色加粉色和想象的一样好!价格实惠!拢胸效果很好穿着舒服,就是我要的是宝蓝加肤色!给发了一件粉色,也不...2017-04-23 21:44:2034/75B75B
2超薄杯纯洁白真的不错2017-05-18 10:36:3180C80C
3浅紫一次买了两件,内衣质量不错,无钢圈设计穿上很舒服也很有型,值得购买。2017-04-19 20:44:5136B=80B80B
4卡其色因为手机号填错了结果直接被退件了_(:_」&ang;)_但是卖家还是超好心地给我重新送了回来qwq2017-05-07 09:16:4775A75A

商品类别

我们通过jieba分词来看看商品分类中最常出现的是哪些关键词~

  • 颜色:肤色 > 黑色 > 粉色 > 白色;

  • 薄款 > 厚款;

  • 钢圈似乎是个比较重要的卖点;

In [3]:

w_all = []for item in data.color:    w_l = psg.cut(item)    w_l = [w for w, f in w_l if f in ('n', 'nr') and len(w)>1]    w_all.extend(w_l)c = Counter(w_all)
Building prefix dict from the default dictionary ...Dumping model to file cache /tmp/jieba.cacheLoading model cost 0.769 seconds.Prefix dict has been built succesfully.

In [4]:

counter = c.most_common(50)bar = (Bar(init_opts=opts.InitOpts(theme='purple-passion', width='1000px', height='800px'))       .add_xaxis([x for x, y in counter[::-1]])       .add_yaxis('出现次数', [y for x, y in counter[::-1]], category_gap='30%')       .set_global_opts(title_opts=opts.TitleOpts(title="出现最多的关键词",                                                  pos_left="center",                                                  title_textstyle_opts=opts.TextStyleOpts(font_size=20)),                        datazoom_opts=opts.DataZoomOpts(range_start=70, range_end=100, orient='vertical'),                        visualmap_opts=opts.VisualMapOpts(is_show=False, max_=6e4, min_=3000, dimension=0,                                range_color=['#f5d69f', '#f5898b', '#ef5055']),                        legend_opts=opts.LegendOpts(is_show=False),                        xaxis_opts=opts.AxisOpts(is_show=False,),                        yaxis_opts=opts.AxisOpts(axistick_opts=opts.AxisTickOpts(is_show=False),                                                 axisline_opts=opts.AxisLineOpts(is_show=False)))       .set_series_opts(label_opts=opts.LabelOpts(is_show=True,                                                  position='right',                                                  font_style='italic'),                        itemstyle_opts={"normal": {                                                    "barBorderRadius": [30, 30, 30, 30],                                                    'shadowBlur': 10,                                                    'shadowColor': 'rgba(120, 36, 50, 0.5)',                                                    'shadowOffsetY': 5,                                                }                                       }).reversal_axis())bar.render_notebook()

Out[4]:

In [5]:

t_data = data.groupby(['circumference', 'cup'])['datetime'].count().reset_index()t_data.columns = ['circumference', 'cup', 'num']#t_data.num = round(t_data.num.div(t_data.num.sum(axis=0), axis=0) * 100, 1)data_pair = [            {"name": 'A',              "label":{"show": True},              "children": []},            {"name": 'B',              "label":{"show": True},              "children": []},            {"name": 'C',              "label":{"show": True},              'shadowBlur': 10,              'shadowColor': 'rgba(120, 36, 50, 0.5)',              'shadowOffsetY': 5,              "children": []},            {"name": 'D',              "label":{"show": False},              "children": []},            {"name": 'E',              "label":{"show": False},              "children": []}    ]for idx, row in t_data.iterrows():    t_dict = {"name": row.cup,              "label":{"show": True},              "children": []}    if row.num > 3000:        child_data = {"name": '{}-{}'.format(row.circumference, row.cup), "value":row.num, "label":{"show": True}}    else:        child_data = {"name": '{}-{}'.format(row.circumference, row.cup), "value":row.num, "label":{"show": False}}    if row.cup == "A":        data_pair[0]['children'].append(child_data)       elif row.cup == "B":        data_pair[1]['children'].append(child_data)       elif row.cup == "C":        data_pair[2]['children'].append(child_data)      elif row.cup == "D":        data_pair[3]['children'].append(child_data)      elif row.cup == "E":        data_pair[4]['children'].append(child_data)

尺码分布

  • 单看罩杯的话:B > A > C

  • 细分到具体尺码:75B > 80B > 75A > 70A

In [6]:

c = (Sunburst(        init_opts=opts.InitOpts(            theme='purple-passion',            width="1000px",            height="1000px"))    .add(        "",        data_pair=data_pair,        highlight_policy="ancestor",        radius=[0, "100%"],        sort_='null',        levels=[            {},            {                "r0": "20%",                "r": "48%",                "itemStyle": {"borderColor": 'rgb(220,220,220)', "borderWidth": 2}            },            {"r0": "50%", "r": "80%", "label": {"align": "right"},                "itemStyle": {"borderColor": 'rgb(220,220,220)', "borderWidth": 1}}        ],    )    .set_global_opts(        visualmap_opts=opts.VisualMapOpts(is_show=False, max_=90000, min_=3000,                                 range_color=['#f5d69f', '#f5898b', '#ef5055']),        title_opts=opts.TitleOpts(title="文 胸\n\n尺 码 分 布",                                               pos_left="center",                                               pos_top="center",                                               title_textstyle_opts=opts.TextStyleOpts(font_style='oblique', font_size=30),))    .set_series_opts(label_opts=opts.LabelOpts(font_size=18, formatter="{b}: {c}")))c.render_notebook()

Out[6]:

罩杯分布

我们通过不同的胸围来看看罩杯的比例:

  • 下胸围=70:A > B > C

  • 下胸围=75:B > A > C

  • 下胸围=80:B > A > C

  • 下胸围=85:B > C > A

  • 下胸围=90:C > B > A

  • 下胸围=95:C > B > D

In [7]:

grid = Grid(init_opts=opts.InitOpts(theme='purple-passion', width='1000px', height='1000px'))for idx, c in enumerate(['70', '75', '80', '85', '90', '95']):        if idx % 2 == 0:        x = 30        y = int(idx/2) * 30 + 20    else:        x = 70        y = int(idx/2) * 30 + 20    pos_x = str(x)+'%'    pos_y = str(y)+'%'        pie = Pie(init_opts=opts.InitOpts())        pie.add(            c,            [[row.cup, row.num]for i, row in t_data[t_data.circumference==c].iterrows()],            center=[pos_x, pos_y],            radius=[70, 100],            label_opts=opts.LabelOpts(formatter='{b}:{d}%'),    )        pie.set_global_opts(        title_opts=opts.TitleOpts(title="下胸围={}".format(c),                                  pos_top=str(y-1)+'%', pos_left=str(x-4)+'%',                                  title_textstyle_opts=opts.TextStyleOpts(font_size=15)),        legend_opts=opts.LegendOpts(is_show=True))    grid.add(pie,grid_opts=opts.GridOpts(pos_left='20%'))grid.render_notebook()

Out[7]:

评论词云

最后我们来看看评论中经常说到的是什么词语吧~

In [8]:

w_all = []for item in data.comment:    w_l = jieba.lcut(item)    w_all.extend(w_l)c = Counter(w_all)

In [10]:

gen_stylecloud(' '.join(w_all),              size=1000,              #max_words=1000,              font_path='/home/kesci/work/font/simhei.ttf',              #palette='palettable.tableau.TableauMedium_10',              icon_name='fas fa-heartbeat',              output_name='comment.png',              custom_stopwords=['没有','用户','填写','评论']              )Image(filename='comment.png')

Out[10]:

如何用Pyecharts生成云词

“如何用Pyecharts生成云词”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

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

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

如何用Pyecharts生成云词

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何用Pyecharts生成云词

本篇内容介绍了“如何用Pyecharts生成云词”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言首先我们得先了解两个概念——上胸围 & 下
2023-06-01

python如何实现生成词云图

这篇文章主要介绍python如何实现生成词云图,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!生成的词云图,如下:安装wordcloud,jieba,其他包自行安装:conda install -c conda-for
2023-06-05

如何在Django中使用Pyecharts生成图表

如何在Django中使用Pyecharts生成图表?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1 因为pyecharts是支持python的一种可视化,但是想要将其放入网页中
2023-06-15

如何利用ECharts和Python接口生成词云图

如何利用ECharts和Python接口生成词云图导言:随着大数据时代的到来,数据可视化成为了数据分析中不可或缺的一环。词云图作为一种常见的数据可视化方法,在展示文本数据的热词分布和相关性方面,有着独特的优势。本文将介绍如何利用EChart
如何利用ECharts和Python接口生成词云图
2023-12-17

Java如何实现快速生成词云图

本篇内容介绍了“Java如何实现快速生成词云图”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步:下载并安装jar到本地maven库登录该
2023-07-05

Python 生成中文词云

豆子无意中发现Python有个现成的模块 word cloud可以根据文本文件生成词云,很好很强大,简单地玩了一把。写代码之前,首先需要安装3个依赖的Python模块,分别是matplotlib, jieba和wordcloud。这三个模块
2023-01-31

python怎么用pyecharts制作词云图

这篇文章给大家分享的是有关python怎么用pyecharts制作词云图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需要安装pyechartspip install pyecharts -U 创建【demo6.
2023-06-28

如何在pyqt5中展示pyecharts生成的图像

这期内容当中小编将会给大家带来有关如何在pyqt5中展示pyecharts生成的图像,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。下面通过一个实际的散点图案例,展示了如何使用pyqt5嵌套一个pyecha
2023-06-26

Python怎么生成Wordcloud词云

这篇文章主要讲解了“Python怎么生成Wordcloud词云”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么生成Wordcloud词云”吧!当然最直接的是 pip pip i
2023-06-04

Python+wordcloud怎样生成词云

今天就跟大家聊聊有关Python+wordcloud怎样生成词云,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是词云词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上
2023-06-04

Python中怎么使用pyecharts绘制词云图

这篇文章主要讲解了“Python中怎么使用pyecharts绘制词云图”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中怎么使用pyecharts绘制词云图”吧!词云图什么是词云图
2023-07-02

python生成词云的原理是什么

Python生成词云的原理是通过对文本进行分词处理,统计每个词出现的频率,然后根据词频的大小,将词语以不同的字体大小和颜色显示在图像上,形成一个视觉化的词云图。生成词云的过程主要包括以下几个步骤:文本预处理:首先将原始文本进行分词处理,将文
2023-10-26

python生成词云的原理是什么

Python中生成词云的原理Python中词云的生成涉及以下步骤:文本预处理:清理文本、删除停用词和标点符号。词频统计:统计每个单词或短语的出现次数。词频权重:根据重要性分配权重。布局和字体:安排单词,选择字体。图像生成:渲染布局,使用颜色和透明度突出重要单词。常用库:wordcloud、PIL、NLTK。应用:文本分析、数据可视化、营销、教育和艺术。
python生成词云的原理是什么
2024-04-10

Python selenium如何把歌词评论做成词云图

今天给大家介绍一下Python selenium如何把歌词评论做成词云图。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。前言一首歌热门了,参与评论的人也很多,这
2023-06-26

Python快速简单生成矩形词云

这篇文章主要介绍了Python快速简单生成矩形词云的相关资料,需要的朋友可以参考下
2023-03-13

wordcloud库生成词云的方法有哪些

wordcloud库在Python中可以通过以下方法生成词云:使用WordCloud类:通过导入WordCloud类,可以创建一个WordCloud对象,并通过调用generate方法生成词云图像。设置参数:可以通过设置参数来调整词云的样式
wordcloud库生成词云的方法有哪些
2024-04-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录