基于Python的微信朋友圈数据可视化分析之地点

前提

朋友圈的相关数据请参照上一篇文章《基于Python的微信朋友圈数据可视化分析之个性签名》获取,本篇文章默认需要的数据已经下载保存至本地的 csv 文件中了。

将好友的地点按照省份进行统计

import pandas as pd
from collections import Counter
from pyecharts import Map

wechat_info = pd.read_csv("wechat_friends_info.csv", encoding="gbk")
province = wechat_info['Province']
province_list = []
for i in list(province):
    if isinstance(i, str):
        if ' ' in i or i.encode( 'UTF-8' ).isalpha():  # 如果是英文城市,则代表不是国内的城市,暂不做处理
            continue
        province_list.append(i)

friends_address = list(Counter(province_list).keys())
friends_count = list(Counter(province_list).values())

map = Map("我的微信好友分布", "@高正杰", width=1200, height=600)
map.add("", friends_address, friends_count, maptype='china',
        is_visualmap=True, is_piecewise=True,
        visual_text_color="#000",
        visual_range_text=["", ""],
        pieces=[
            {"max": 160, "min": 70, "label": "高数值"},
            {"max": 69, "min": 0, "label": "低数值"},
        ])
map.render('province.html')

生成的结果截图如下所示,体验地址
将好友的地点按照省份进行统计

将好友的地点按照城市进行统计

import pandas as pd
from collections import Counter
from pyecharts import Geo
from pyecharts.datasets.coordinates import get_coordinate

wechat_info = pd.read_csv("wechat_friends_info.csv", encoding="gbk")
city = wechat_info['City']
city_list = []
for i in list(city):
    if isinstance(i, str):
        if ' ' in i or i.encode( 'UTF-8' ).isalpha():  # 如果是英文城市,则代表不是国内的城市,暂不做处理
            continue
        if get_coordinate(i) is None:
            if get_coordinate(i+'市') is not None:
                i = i + '市'
            elif get_coordinate(i+'区') is not None:
                i = i + '区'
        city_list.append(i)

def geo_formatter(params):
    return params.name + ' : ' + params.value[2]

geo = Geo(
    "我的微信好友分布",
    "@高正杰",
    title_color="#fff",
    title_pos="center",
    width=1200,
    height=600,
    background_color="#404a59",
)
attr, value = geo.cast(Counter(city_list))
geo.add(
    "",
    attr,
    value,
    visual_range=[0, 91],
    tooltip_formatter=geo_formatter,    # 重点在这里,将函数直接传递为参数。
    visual_text_color="#fff",
    symbol_size=15,
    is_visualmap=True,
)
geo.render('city.html')

生成的结果截图如下所示,体验地址
将好友的地点按照城市进行统计

遇到的问题

现象

Jupyter notebook 中显示空白,生成的 HTML 文件打开只显示南海诸岛,不显示其他内容。

原因

自从 v0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表,则需要自行安装对应的地图文件包。

解决办法

将以下几个文件包全包安装,关于这些包的含义,可以参考《自定义地图

pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg

注意:如果安装完成后,在 Jupyter Notebook 中生成的图形还是无法查看,则需要重启 Jupyter Notebook 即可解决问题。

参考文献

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风醉雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值