不二如是 发表于 2021-2-18 11:28:53

【最新唐探三的数据】谁能做成最帅数据可视化??

本帖最后由 不二如是 于 2021-2-22 09:25 编辑



春节假期用代理写了一款爬虫(源码暂未公布),整理成 .csv 数据。

如果想看讲解,大家可以围观:用 Python 分析豆瓣上唐探3口碑【扑街??】

既然论坛上大佬那么多,那不如看谁能把这些数据加工成很棒的图表!
(后期会在鱼C官方视频中展示)

欢迎各显神通,基于 Python 库(Matplotlib、Pandas、词云...) + 提供的数据,挖掘出你认为最帅的样子!

数据包:

奖励:回复:晒图+代码,额外获得 20 鱼币(该类型第一位发出者获得)

小师妹的解法:用 Python 分析豆瓣上唐探3口碑【扑街??】


青出于蓝 发表于 2021-2-21 12:32:03

本帖最后由 青出于蓝 于 2021-2-22 07:47 编辑

水平有限,先展示两种~
1,词云
上代码
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from openpyxl import *
#导入需要的库


text="《唐人街探案3》2月12日上映"
wb = load_workbook("Ori.xlsx")
sheet = wb["Ori"]

for i in sheet['D']:
    text+=i.value
   
wordcloud = WordCloud(width=1000, #图片的宽度
                      height=860,#高度
                      margin=2, #边距
                      background_color='black'#可以选用其他颜色的背景
                      font_path='字体.ttf'
                      )
wordcloud.generate(text) #分词
wordcloud.to_file('唐人街探案3词云.jpg')


效果图

2,扇形统计图
代码
import matplotlib.pyplot as plt
import numpy as np
from openpyxl import *
#导入需要的库

wb = load_workbook("Ori.xlsx")
sheet = wb["Ori"]
#打开文件

one=0
two=0
three=0
four=0
five=0
data={"一星":1,"二星":2,"三星":3,"四星":4,"五星":5,"评论星级":0}
for i in sheet['B']:
    if data==1:
      one+=1
    if data==2:
      two+=1
    if data==3:
      three+=1
    if data==4:
      four+=1
    if data==5:
      five+=1

groups = ["1星","2星","3星","4星","5星"]
offsets =

# 生成数据
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
rng = np.random.RandomState(27)
sj=
plt.pie(sj, labels=groups,explode=offsets,autopct='%1.1f%%',startangle=90,shadow=True)# 显示阴影

plt.show()

#绘图并展示


效果图

小白水平有限,如有不足,请指出喔{:5_92:}


孤独的嫖客 发表于 2021-2-22 00:32:39

本帖最后由 孤独的嫖客 于 2021-2-23 12:54 编辑

先上图:

申明:采用图像仅用作美化词云展示效果,评论内容与图像无关!
更新2021年2月23日
[*]修改了目录结构,使其看起来更加清晰明了
[*]取消了jieba分词,让词云还原评论本质
[*]尝试使用pyecharts作图(TODO)未完成
功能实现:

[*]获取程序运行路径,方便服务器部署
[*]pandas 读取csv指定列保存到txt
[*]使用中文分词 jieba 对评论做语言处理
[*]使用停用词排除干扰
[*]使用 Worldcloud 创建词云
[*]使用自定义画像美化词云


注意:worldcloud 使用pip install 无法直接安装成功(macos,linux 未测试)安装worldcloud 需要whl文件,imgs文件夹中附带了适配win10 64位 python3.9版本的whl文件,相同环境可以直接使用 pip install 绝对路径+wordcloud-1.8.1-cp39-cp39-win_amd64.whl安装其他python版本的可以到这里下载whl文件 https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud最后建议脚本运行环境为python 3.8以上 因为脚本使用了3.8版本的新特性代码展示:from wordcloud import WordCloud
from imageio import imread
import pandas as pd
import os
import logging as log

# 设置停用词
stopword = ['什么', '没有', '真的', '这种', '那里',
            '就是', '可以', '一个', '还是', '最后',
            '这个', '但是', '总之', '不要', '这部',
            '一部', '故事', '这么', '出来', '应该',
            '电影', '不是', '为了', '还有', '你们',
            '系列', '觉得', '自己', '已经', '整个',
            '一直', '还是', '出来', '完全', '看到'
            '那个', '之后', '除了', '其中', '长泽雅美',
            '陈思诚', '妻夫木聪', '浅野忠信', '铃木保奈美',
            'the','world','大过年的','三浦友和']

# def fenci():
#   # 设置用户字典
#   jieba.load_userdict(parent_dir+"\\imgs\\自定义字典.txt")
#   with open(filepath, "r", encoding="utf8") as f:
#         file = f.read()
#
#   # 数据清洗
#   wordslist = jieba.lcut(file)
#   with open(parent_dir + "\\tmp\\分词结果.txt", "w", encoding="utf8") as f:
#         f.write(" ".join(wordslist))
#   log.info("数据分词完毕,开始清洗...")
#   regworld = list()
#   for i in wordslist:
#         if len(i) > 1:
#             regworld.append(i)
#
#
#   outworld = list()
#   for i in regworld:
#         if i not in stopword:
#             outworld.append(i)
#   with open(parent_dir+"\\tmp\\清洗结果.txt", "w", encoding="utf8") as f:
#         f.write(" ".join(outworld))
#   words = " ".join(outworld)
#   return words


def creatCiYun(words):
    log.info("数据清洗完毕,开始画图...")
    fontpath = parent_dir + "\\imgs\\Alibaba-PuHuiTi-Regular.ttf"
    bgpic = imread(parent_dir + "\\imgs\\3.png")
    wc = WordCloud(font_path=fontpath,stopwords=stopword,
                   mask=bgpic,scale=3,
                   background_color='white', )
    wc = wc.generate(words)
    wc.to_file(parent_dir + "\\tmp\\唐探3.png")


if __name__ == '__main__':
    # 日志初始化
    log.basicConfig(level=log.INFO, format='%(asctime)s - %(filename)s - %(levelname)s: %(message)s')
    # 获取相对路径
    parent_dir = os.path.dirname(os.path.abspath(__file__))
    log.debug(f"程序运行路径{parent_dir}")
    filepath = parent_dir + "\\tmp\\tempdata.txt"
    # 判断程序是否首次运行,是则读取csv,非首次运行不需要读取csv
    try:
      f = open(filepath, "r")
      f.close()
    except IOError:
      log.info("初始化中....")
      f = open(filepath, "w", encoding="utf8")
      f.close()
      # 读取评论
      df = pd.read_csv(parent_dir + '\\imgs\\Ori.csv', usecols=)
      # 提取所有评论写入txt,为分词做准备工作
      df.to_csv(filepath, sep="\t", index=False, header=None)
    # data = fenci()
    with open(parent_dir+"\\tmp\\tempdata.txt","r",encoding="utf8") as f:
      data = f.read()
    creatCiYun(data)

补充一下项目地址,不然没有图像,字体资源,程序无法直接运行https://gitee.com/Rt_hum/three-words-of-tang-tan
感谢论坛的活动,学习了词云可视化





hrp 发表于 2021-2-18 11:37:16

前排等大佬出现{:10_281:}

dzczxc 发表于 2021-2-18 11:41:15

等大佬

鱼C-小师妹 发表于 2021-2-18 11:46:54

坐等大佬一起合作出视频?

qq1151985918 发表于 2021-2-18 11:48:03

等一个大佬出现

Cool_Breeze 发表于 2021-2-18 18:53:18

等可视化大佬上线! 小甲鱼记得在视频中公布一下大佬ID哦!

Daniel_Zhang 发表于 2021-2-18 23:18:35

2020-2-18 23:17

已经有 7 位大佬下载了附件{:10_297:}

3553107168 发表于 2021-2-18 23:37:09

看我的!

crisfo 发表于 2021-2-19 10:05:46

{:10_256:}坐等大佬现身!

小伤口 发表于 2021-2-19 10:31:49

等待膜拜大佬

永恒的蓝色梦想 发表于 2021-2-19 11:15:54

这个唐人街探案3的广告我真的服了。。。。。。甚至能让广告干扰到剧情。。。。。。

私はり 发表于 2021-2-19 12:19:37

等大佬 顺便学习下

3102515355 发表于 2021-2-19 12:27:36

看我的!

Anderson_Cooper 发表于 2021-2-19 14:16:04

刚入编程的我,过来围观{:10_277:}

骑猪男孩 发表于 2021-2-19 23:11:30

路过

zhizh86 发表于 2021-2-20 10:42:05

看我的!

canfeng0522 发表于 2021-2-20 11:52:57

有大佬出现了么,等待大佬的出现

1908496509 发表于 2021-2-21 02:18:13

看我的!

青出于蓝 发表于 2021-2-21 12:34:12

本帖最后由 青出于蓝 于 2021-2-21 12:37 编辑

词云代码无法直接运行,代码里导入了一个网上下载的字体~
链接: https://pan.baidu.com/s/1wCRq8abt8PQnHFl4tv4qyQ 提取码: 3huc
页: [1] 2
查看完整版本: 【最新唐探三的数据】谁能做成最帅数据可视化??