返回顶部
首页 > 资讯 > 精选 >如何用Pyecharts生成云词
  • 916
分享到

如何用Pyecharts生成云词

2023-06-01 23:06:36 916人浏览 八月长安
摘要

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

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

--结束END--

本文标题: 如何用Pyecharts生成云词

本文链接: https://lsjlt.com/news/228079.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何用Pyecharts生成云词
    本篇内容介绍了“如何用Pyecharts生成云词”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言首先我们得先了解两个概念——上胸围 &am...
    99+
    2023-06-01
  • python如何用pyecharts制作词云图
    需要安装pyecharts pip install pyecharts -U  创建【demo6.py】并输入以下编码: from pyecharts import op...
    99+
    2024-04-02
  • python如何实现生成词云图
    这篇文章主要介绍python如何实现生成词云图,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!生成的词云图,如下:安装wordcloud,jieba,其他包自行安装:conda install -c conda-for...
    99+
    2023-06-05
  • 如何在Django中使用Pyecharts生成图表
    如何在Django中使用Pyecharts生成图表?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1 因为pyecharts是支持python的一种可视化,但是想要将其放入网页中...
    99+
    2023-06-15
  • 如何利用ECharts和Python接口生成词云图
    如何利用ECharts和Python接口生成词云图导言:随着大数据时代的到来,数据可视化成为了数据分析中不可或缺的一环。词云图作为一种常见的数据可视化方法,在展示文本数据的热词分布和相关性方面,有着独特的优势。本文将介绍如何利用EChart...
    99+
    2023-12-17
    Python 词云图 echarts
  • Java如何实现快速生成词云图
    本篇内容介绍了“Java如何实现快速生成词云图”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下载并安装jar到本地maven库登录该网站,在...
    99+
    2023-07-05
  • Python 生成中文词云
    豆子无意中发现Python有个现成的模块 word cloud可以根据文本文件生成词云,很好很强大,简单地玩了一把。 写代码之前,首先需要安装3个依赖的Python模块,分别是matplotlib, jieba和wordcloud。这三个模...
    99+
    2023-01-31
    中文 Python
  • python怎么用pyecharts制作词云图
    这篇文章给大家分享的是有关python怎么用pyecharts制作词云图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需要安装pyechartspip install pyecharts&nb...
    99+
    2023-06-28
  • 如何在pyqt5中展示pyecharts生成的图像
    这期内容当中小编将会给大家带来有关如何在pyqt5中展示pyecharts生成的图像,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。下面通过一个实际的散点图案例,展示了如何使用pyqt5嵌套一个pyecha...
    99+
    2023-06-26
  • Python怎么生成Wordcloud词云
    这篇文章主要讲解了“Python怎么生成Wordcloud词云”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么生成Wordcloud词云”吧!当然最直接的是 pip ...
    99+
    2023-06-04
  • Python+wordcloud怎样生成词云
    今天就跟大家聊聊有关Python+wordcloud怎样生成词云,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是词云词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上...
    99+
    2023-06-04
  • 使用python生成云词图实现画红楼梦词云图
    目录在用Python绘制红楼梦词云图文章中讲到我们使用Python把红楼梦中的核心词汇给绘画出来了,但是,红楼梦这么唯美的书,给我们乌漆麻黑的搞了一张词云,宝宝们肯定接受不了 那怎...
    99+
    2024-04-02
  • Python中怎么使用pyecharts绘制词云图
    这篇文章主要讲解了“Python中怎么使用pyecharts绘制词云图”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中怎么使用pyecharts绘制词云图”吧!词云图什么是词云图...
    99+
    2023-07-02
  • Python快速简单生成矩形词云
    目录效果实现运行效果 实现 打开IDLE新建文件rectangle.py import os from os import path from wordcloud import W...
    99+
    2023-03-13
    python词云形状 python中文词云 python3词云
  • python生成词云的原理是什么
    Python生成词云的原理是通过对文本进行分词处理,统计每个词出现的频率,然后根据词频的大小,将词语以不同的字体大小和颜色显示在图像...
    99+
    2023-10-26
    python
  • Python selenium如何把歌词评论做成词云图
    今天给大家介绍一下Python selenium如何把歌词评论做成词云图。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。前言一首歌热门了,参与评论的人...
    99+
    2023-06-26
  • 【Python】生成词云图太简单了|拿来就用能的词云图代码
    1 词云简介 词云也叫文字云,是一种可视化的结果呈现,常用在爬虫数据分析中,原理就是统计文本中高频出现的词,过滤掉某些干扰词,将结果生成一张图片,直观的获取数据的重点信息。今天,我们一起来学习一下Python生成词云的常用库「wordclo...
    99+
    2023-09-21
    python 开发语言 中文分词
  • 通过Python的wordcloud库将单词生成词云(心形形状)
    文章目录 前言一、wordcloud库是什么?二、安装wordcloud库三、查看wordcloud库版本四、使用方法1.引入库2.定义图片路径3.定义需要分词的文本4.采用jieba搜索引擎...
    99+
    2023-09-07
    python 开发语言 人工智能 计算机视觉
  • python 生成18年写过的博客词云
    文章链接:https://mp.weixin.qq.com/s/NmJjTEADV6zKdT--2DXq9Q 回看18年,最有成就的就是有了自己的 博客网站,坚持记录,写文章,累计写了36篇了,从一开始的难以下手,到现在成为一种习惯,...
    99+
    2023-01-30
    写过 博客 python
  • wordcloud库生成词云的方法有哪些
    wordcloud库在Python中可以通过以下方法生成词云: 使用WordCloud类:通过导入WordCloud类,可以创建...
    99+
    2024-04-09
    wordcloud
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作