数据可视化 pycharts实现中国各省市地图数据可视化

自用版

数据格式如下:

运行效果如下:


python 复制代码
import pandas as pd
from pyecharts.charts import Map, TreeMap, Timeline, Page, WordCloud
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType
import jieba
import jieba.analyse
import codecs
import math

#存成csv格式
data_path =r"lyjd.csv"
df = pd.read_csv(data_path)

####数据预处理
#按照·进行分隔
df0 = df['省/市/区'].str.split('·', expand=True)

#存入对应的df中
df0.columns=['省', '市', '区','无']
df['省'] = df0['省']
df['市'] = df0['市']
df['区'] = df0['区']

#对不同分类依据进行计数
dfCitySale = df.groupby(['市'])['销量'].sum().reset_index(name='总销量')
dfParkSale = df.groupby(['名称'])['销量'].sum().reset_index(name='景区总销量')
dfParkSale = dfParkSale.sort_values(by='景区总销量', ascending=False)

## 1、	全国销量Top20的热门景点
print(dfParkSale.head(20));

## 2、	全国各省市4A-5A景区数量;(景点分布情况)(可选)
#利用Map进行绘制
def c1() ->Map:
    #dfCityCount记录各省市4A-5A的景区数量
    dfCityCount = df[df['星级'].isin(['4A','5A'])].groupby(['市'])['名称'].count().reset_index(name='景区总数');
    data_city_count = list(zip(dfCityCount['市'],dfCityCount['景区总数']))
    #开始绘图
    china_city2 = (
        Map()
        .add(
            "景区总数",
            data_city_count,
            "china-cities",
            label_opts=opts.LabelOpts(is_show=False),
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="lxy全国各省市4A-5A景区数量"),
            visualmap_opts=opts.VisualMapOpts(
                min_=1,
                max_=20,
                is_piecewise=True
            ),
        )
        #.render("全国各省市4A-5A景区数量.html")
    )
    return china_city2

## 3、	全国各省市假期出行数据在地图上的分布;(出游分析及建议)(必做)
def c2() ->Map:
    data_city_sale = list(zip(dfCitySale['市'],dfCitySale['总销量']))
    china_city3 = (
        Map()
        .add(
            "景区销量",
            data_city_sale,
            "china-cities",
            label_opts=opts.LabelOpts(is_show=False),
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="lxy全国各省市假期出行数据在地图上的分布"),
            visualmap_opts=opts.VisualMapOpts(
                min_=1,
                max_=5000,
                is_piecewise=True
            ),
        )
        #.render("全国各省市假期出行数据在地图上的分布.html")
    )
    return china_city3

def c3() ->WordCloud :
    ##4、全国各景点简介文本统计词云图;(景点主要特色)(必做)
    rows = pd.read_csv(data_path)
    counts = {}  # 通过键值对的形式存储词语及其出现的次数
    for index, row in rows.iterrows():
        content = row['简介']
        if pd.isna(content):#如果简介是空值就跳过
            continue
        #分词
        test_list = jieba.lcut(content, cut_all=True)
        for word in test_list:
            if len(word) == 1:  # 单个词语不计算在内
                continue
            else:
                counts[word] = counts.get(word, 0) + 1  # 遍历所有词语,每出现一次其对应的值加 1
     
    items = list(counts.items())  # 将键值对转换成列表
    items.sort(key=lambda x: x[1], reverse=True)  # 根据词语出现的次数进行从大到小排序

    # for i in items:
    #     word, count = i
    #     print("{0:<5}{1:>5}".format(word, count))

    c = (
        WordCloud()
        .add("", items, word_size_range=[20, 100])
        .set_global_opts(title_opts=opts.TitleOpts(title="lxy景区简介词云图"))
        #.render("词云图.html")
    )
    return c


###利用Page函数将三张图绘制在一张页面上
def creatPage():
    page=Page(layout=Page.DraggablePageLayout)
    page.add(
        c1(),
        c2(),
        c3()
        )
    page.render("数据可视化.html")

if __name__ == "__main__":
    creatPage()
相关推荐
Angeldream1237 分钟前
第 10 章 医学影像伦理与安全
图像处理·人工智能·python·安全·机器学习·医学影像
勤奋的大熊猫21 分钟前
Python 双层 enumerate 循环选取最后一层循环的优雅写法
python
SelectDB27 分钟前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
JYCJ_28 分钟前
星愿池·子项清单
python
Wang's Blog30 分钟前
Java 项目实战: 交友项目 - 动态查询开工:昨日回顾与今日任务
java·python·交友
2601_9679791232 分钟前
0 到 1 学爬虫:用 Python 爬取网页数据指南一(附实战案例)
爬虫·python·实战案例·html解析·网页数据
云和数据.ChenGuang42 分钟前
光哥说Python 异常深度解析:从异常模型到工程化实践
java·前端·人工智能·python·langchain
SelectDB1 小时前
云数仓月度账单总是超预算:Apache Doris 与 Snowflake 五类成本项拆解与对账脚本
python
迪菲赫尔曼1 小时前
【基础篇 12】把环境与源码接起来:检查 GPU,再安装服务器上的项目
运维·服务器·开发语言·人工智能·python·yolo·目标检测
2601_962885721 小时前
2026 Python 股票数据接口选型指南(横评 + 决策树)
开发语言·python·区块链