知乎上有一个问题:疫情结束后,你最想做的一件事是什么?

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

有人这样回答,最想见的人就是家楼下烧烤店的老板;最想做的事,就是来一扎啤酒,来几十个串,一个人慢慢悠悠地吃,然后看着周围的人热热闹闹地聊天。

一场疫情,终于不少人明白:原来摇晃的红酒杯,并不是生活的全部。平平淡淡的烟火气才是生活的真谛。

最近,带着烟火气的地摊经济,火了。

这一切都源于成都的一个尝试:3月,成都就出台政策,允许商户在规定区域内临时占道经营。一时间,烧烤摊、服装摊、小商品摊纷纷摆上了路边。

两个月后,成都公布数据显示,解决了10万就业,帮助中心城区餐饮店复工率超98%。原本一季度GDP同比下降3%的成都,一下子又恢复了活力。

人流回来了,城市的活力就回来了。

突然之间,地摊经济成了人们茶余饭后的谈资,许多人都已经开始筹划着摆摊卖什么了。曾经的城管不让摆,到今天的城管喊你来摆摊,地摊经济的时代真的到来了吗?今天我们就带你用数据盘一盘。

1、微博微热点数据

我们先看到微博微热点的数据:

来源:http://www.wrd.cn/goSearch.sht

全网热度指数趋势

从全网热度指数的变化趋势来看,地摊经济的热度在6月3日起逐步升温,6月4日9时达到了99.69的峰值。

全网关键词云图

再看到全网关键词云图,在与地摊经济相关的全部信息中, 提及频次最高的词语依次为"地摊经济"、"摆摊"和"全员"。

 2、B站视频弹幕数据

目前在B站上也涌现出许多关于地摊经济的视频。

我们看到其中这个关于成都地摊经济与文化的视频,目前该个视频在B站上播放量达到14.1万,收获了3856条弹幕。

地址:

https://www.bilibili.com/video/BV1Ft4y1y7iG?from=search&seid=12113765873623399312

那么这些弹幕中大家都在谈论些什么呢?我们对这些弹幕进行分析整理,让我们看到词云图。

弹幕词云图

可以看到大家讨论最多的就是除了"地摊"、"成都",还有就是"卫生"、"城管"、"利润"等内容。其中地摊"美食"、"小吃"、"烧烤"、"干净"也是大家十分关注的问题。

是否支持地摊经济弹幕投票

在视频结尾,也发起了你是否支持地摊经济的弹幕投票,支持的打数字1,不支持的打数字2,据统计共有1869条弹幕参与投票,其中91.44%的弹幕表示支持,不支持的仅占8.56%

3、微博评论话题数据

再让我们看到对地摊经济讨论呼声最高的微博。

首先看到微博话题:#你会考虑摆地摊吗#

我们共分析整理了3436条评论数据:

可以看到在考虑是否摆地摊时,大家考虑最多的就是"城管"的问题了,曾经的城管不让摆,到今天的城管喊你来摆摊,真是活久见啊。其次"经济"、"营业额"、"收入"等也是大家特别关心的焦点。

下面是 #如果摆地摊你会卖什么# 这个话题,目前该话题共有408.6万的阅读,共3934条讨论, 去重后我们得到3657条数据。

评论词云

通过分析词云可以发现,"贴膜"是许多人都想尝试的地摊项目。其次"烧烤"、"烤冷面"、"煎饼果子"等街头美食是许多人的选择。除了吃的,"卖花"、"饰品"、"袜子"等商品也是很多人想尝试的。有意思的是,"算命"也被多次提到。

再看到 #你的专业摆地摊儿能干啥# 我们共获取1641条讨论数据。

这里就比较有意思了:

我们可以看到比如新闻传播专业的小伙伴选择卖报纸、机械专业选择专业开锁、哲学专业选择看相算命等魔幻操作。

都是哪些人在参与地摊话题的讨论呢?我们对参与话题的微博用户进行了分析,共获得4875条条数据。

微博评论用户性别占比

可以看到,在参与话题的用户中,女性用户占比达到了71.62%,而男性用户仅占28.38%。在地摊经济的话题中,女性用户参与比例远超男性用户。

评论用户地区分布

参与话题的用户都来自哪些地区呢?经过分析整理可以看到,广东、北京、河南地区参与度最高,分布位居前三名。其次是江苏、也有不少参与话题的海外用户。

评论用户年龄分布

地摊经济的话题评论中,用户年龄分布又是怎样的呢?经过分析可见,90后的参与度最高,占比高达70.56%。其次是00后,占比12.58%。然后80后位居第三,占比为9.15%。

 

4、教你用Python分析微博数据

微博评论数据分析

我们使用Python获取了微博地摊经济话题的热门评论数据和B站热门视频弹幕数据,进行了处理和分析。B站弹幕的爬虫之前已经展示过,此处放上微博评论爬虫关键代码。

公众号后台回复关键字“地摊”获取完整数据。

01 数据获取

微博分为:微博网页端、微博手机端、以及微博移动端,此次我们选择手机端(https://m.weibo.cn/)进行数据的抓取。

我们要演示的网址如下:

https://weibo.com/5382520929/J4UtmkJUJ?type=comment#_rnd1591495913796

打开上面的网址之后,使用谷歌浏览器的抓包工具,将设备切换到手机端并再次刷新网页。

通过分析网页可以发现,评论的数据是通过动态js进行加载的,分析得到真实的数据请求地址:

https://m.weibo.cn/comments/hotflow?id=4511703964943057&mid=4511703964943057&max_id=140218361800408&max_id_type=0

参数说明如下:

id/mid:评论ID,抓包获取。

max_id/max_id_type: 前一页返回的response数据中。

我们使用requests获取数据,使用json进行解析并提取数据,关键代码如下:

# 导入包
import requests
import numpy as np
import pandas as pd
import re 
import time
import json
from faker import Factory def get_weibo_comment(ids, mid, max_page, max_id=0, max_id_type=0):
    """
    功能:获取指定微博的评论数据,数据接口由chrome切换到手机端抓包获取。
    注意事项:此程序每次获取的数量有限制,每次获取之后隔5分钟再抓取即可
    """
    max_id = max_id
    max_id_type = max_id_type     # 存储数据
    df_all = pd.DataFrame()     for i in range(1, max_page):
        # 打印进度
        print('我正在获取第{}页的评论信息'.format(i))         # 获取URL
        url = 'https://m.weibo.cn/comments/hotflow?id={}&mid={}&max_id={}&max_id_type={}'.format(ids, mid, max_id, max_id_type)         # 添加headers
        headers = {
            'User-Agent': Factory().create().user_agent(),
            'Referer': 'https://m.weibo.cn/detail/1591254045309',
            'cookie': '复制cookie信息',
            'X-Requested-With': 'XMLHttpRequest',
        }         # 发起请求
        try:
            r = requests.get(url, headers=headers, timeout=3)
        except Exception as e:
            print(e)
            r = requests.get(url, headers=headers, timeout=3)         if r.status_code==200:
            # 解析数据
            json_data = json.loads(r.text)             # 获取数据
            comment_data = json_data['data']['data']             created_time = [i.get('created_at') for i in comment_data]
            text = [i.get('text') for i in comment_data]
            user_id = [i['user'].get('id') for i in comment_data]
            screen_name = [i['user'].get('screen_name') for i in comment_data]
            reply_num = [i.get('total_number') for i in comment_data]
            like_count = [i.get('like_count') for i in comment_data]             # max_id
            max_id = json_data['data']['max_id']
            # max_id_type
            max_id_type = json_data['data']['max_id_type']             # 存储数据
            df_one = pd.DataFrame({
                'created_time': created_time,
                'text': text,
                'user_id': user_id,
                'screen_name': screen_name,
                'reply_num': reply_num,
                'like_count': like_count
            })             # 追加
            df_all = df_all.append(df_one, ignore_index=True)             # 休眠一秒
            time.sleep(np.random.uniform(2))         else:
            print('解析出错!打印最后一次的值', max_id, max_id_type)
            continue     return df_all # 运行函数
if __name__ == '__main__':
    # 获取一条微博评论
    df = get_weibo_comment(ids='4511703964943057', mid='4511703964943057', max_page=200)

获取到的数据以数据框的形式存储,包含评论时间、评论文本、评论用户id,回复数和点赞数。格式如下所示:

df.head()  

02 数据预处理

我们对获取的数据进行初步的处理,主要包含:

  1. 重复值处理

  2. created_time:提取时间信息

  3. text:初步清洗

  4. user_id:根据用户ID获取用户相关信息,步骤暂略。

# 重复值
df = df.drop_duplicates() # 转换字典
week_transform = {
    'Mon': '星期一',
    'Tue': '星期二',
    'Wed': '星期三',
    'Thu': '星期四',
    'Fri': '星期五',
    'Sat': '星期六',
    'Sun': '星期日'
} # 提取星期
df['day_week'] = df['created_time'].str.split(' ').apply(lambda x:x[0])
df['day_week'] = df['day_week'].map(week_transform)  # 提取日期时间
df['time'] = df['created_time'].str.split(' ').map(lambda x:x[-1]+'-'+x[1]+'-'+x[2]+' '+x[3])
df['time'] = df.time.str.replace('May', '05').str.replace('Jun', '06') # text 字段处理
pattern = '<span.*?</span>|<a.*?</a>' df['text'] = [re.sub(pattern, '', i) for i in df['text']] # 删除列
df = df.drop(['created_time', 'user_id', 'screen_name'], axis=1)  

经过清洗之后的数据格式如下:

df.head() 

03 数据可视化分析

我们使用pyecharts和stylecloud进行可视化分析,此处只展示部分代码。

#如果去摆地摊该做什么生意?#

def get_cut_words(content_series):
    # 读入停用词表
    stop_words = []      with open("stop_words.txt", 'r', encoding='utf-8') as f:
        lines = f.readlines()
        for line in lines:
            stop_words.append(line.strip())     # 添加关键词
    my_words = ['胸口碎大石', '烤冷面', '贴膜', '卖衣服', '套大鹅'] 
    for i in my_words:
        jieba.add_word(i)      # 定义停用词
    my_stop_words = ['信公号', '摆地摊', '摆摊', '地摊', '哈哈哈哈', '手机',
                    '这是', '这是哪', '哈哈哈', '真的', '一千', '专业',
                    '有人', '我要', '那种', '只能', '好吃', '喜欢', '城管',
                    '评论', '卖点', '有没有', '秘籍',
                    ]
    stop_words.extend(my_stop_words)                    # 分词
    word_num = jieba.lcut(content_series.str.cat(sep='。'), cut_all=False)     # 条件筛选
    word_num_selected = [i for i in word_num if i not in stop_words and len(i)>=2]     return word_num_selected

# 分词
text = get_cut_words(content_series=df.text) # 获取top10
shengyi_num = pd.Series(text)
num_top10 = shengyi_num.value_counts()[:10] # 条形图
bar1 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px')) 
bar1.add_xaxis(num_top10.index.tolist())
bar1.add_yaxis('', num_top10.values.tolist()) 
bar1.set_global_opts(title_opts=opts.TitleOpts(title='如果去摆地摊该做什么生意-Top10'),
                     visualmap_opts=opts.VisualMapOpts(max_=150)
                    ) 
bar1.render() 

# 绘制词云图
stylecloud.gen_stylecloud(text=' '.join(text), 
                          collocations=False,
                          font_path=r'‪C:\Windows\Fonts\msyh.ttc',   # 更换为本机的字体
                          icon_name='fas fa-pie-chart',
                          size=768,
                          output_name='如果去摆地摊该做什么生意.png')
Image(filename='如果去摆地摊该做什么生意.png') 

 

数据洞察 | Python解读地摊——你想好摆摊去卖什么了吗?的更多相关文章

  1. 基于微博数据用 Python 打造一颗“心”

    一年一度的虐狗节刚过去不久,朋友圈各种晒,晒自拍,晒娃,晒美食,秀恩爱的.程序员在晒什么,程序员在加班.但是礼物还是少不了的,送什么好?作为程序员,我准备了一份特别的礼物,用以往发的微博数据打造一颗“ ...

  2. 2017年排名前15的数据科学python库

    2017年排名前15的数据科学python库 2017-05-22 Python程序员 Python程序员 Python程序员 微信号 pythonbuluo 功能介绍 最专业的Python社区,有每 ...

  3. Spark处理Json格式数据(Python)

    前言   Spark能够自动推断出Json数据集的“数据模式”(Schema),并将它加载为一个SchemaRDD实例.这种“自动”的行为是通过下述两种方法实现的:   jsonFile:从一个文件目 ...

  4. Nature Biotechnology:人类基因研究走近平民 数据是基础解读更重要

    Nature Biotechnology:人类基因研究走近平民 数据是基础解读更重要 5万美元可以做什么?最近,美国斯坦福大学教授斯蒂芬·夸克在国际著名学术期刊<自然·生物技术>发表论文宣 ...

  5. 小白学 Python 爬虫(42):春节去哪里玩(系列终篇)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  6. AdMaster技术副总裁谈Hadoop、营销数据、Python和挖掘平台

    http://www.infoq.com/cn/news/2014/09/admaster-hadoop 卢亿雷是现任AdMaster技术副总裁,曾在联想研究院.百度基础架构部.Carbonite C ...

  7. (Python爬虫01)-本想给随笔加个序号才发现这么不方便

    本想给随机加个序号,才发现还得去返回看看文章的序号.好在cnblog能断点自动保存. 作为一个小程序员,点赞的同时还在想,谁知道咋实现这种实时保存呢?有知道的给个参考文档呗.太感激了! 重点在这里 有 ...

  8. 使用rdb文件进行redis数据迁移--python脚本

    查找了一些redis迁移的方法,一般做法就是 1. 从源数据库把rdb文件保存,然后传到新的主机上,启动新的redis即可 2. 把新的redis当做源数据库的slave,同步数据 今天开发提了一个测 ...

  9. faker生成器生成虚拟数据的Python模块

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:行哥 今天给大家介绍一个Faker模块,一款基于Python的测试数 ...

随机推荐

  1. 概率图模型(CPD)(二)

    CPD是conditional probability distribution的缩写,翻译成中文叫做 条件概率分布.在概率图中,条件概率分布是一个非常重要的概念.因为概率图研究的是随机变量之间的练习 ...

  2. Python之进程、线程、协程篇

    本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...

  3. Mysql and ORM

    本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 外键 增删改查表 权限 事务 索引 python 操作mysql ORM sql ...

  4. 普通list和树状list互转

    import java.util.ArrayList; import java.util.List; public class TreeNode { private String id; privat ...

  5. 使用 maven 创建项目模板

    前言 配置 demo 工程 生成模板 生成项目 上传模板到仓库 参看链接 前言 微服务的概念越来越流行,随着服务粒度越来越细,拆分的模块越来越明确,我们的工程项目也变得越来越多. 有时候一个项目搭建, ...

  6. linux : 新服务器部署项目要做的事

    环境:阿里云服务器两台,一台web,一台db,系统centos7. 用户用外网访问web server ,web server 再去访问db server. 1 阿里云控制台进入系统2 SSH进入系统 ...

  7. 跳过Google开机设置/验证/向导

    Google 的开机设置向导,亦或称作开机验证,对于刷机党来说最熟悉不过了.一般情况下,刷类原生或是原生系统,再刷 Gapps,开机就需要进行一些 Google 验证.这些验证,与国内的手机厂商所设置 ...

  8. Elasticsearch源码解析:环境搭建

    在之前学习Redis的过程中,我就是一边通过文档/视频学习,一边阅读源码.我发现两种方法可以相辅相成,互相补充.阅读文档可以帮助我们快速了解某个功能,阅读源码有助于我们更深入的理解这一功能的实现及思想 ...

  9. TeamViewer如何绑定谷歌二次验证码/谷歌身份验证?

    1.下载TeamViewer,找到谷歌二次验证界面 下载.注册TeamViewer后,点击右上角账户名-“编辑配置文件” [常规]-“双重验证”,点“启用”   进入[激活双重验证]界面,点“启动激活 ...

  10. humlbe bundle如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器?

    一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 humlbe bundle如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的 ...