数据可视化当中数据缺失

下面的代码也是我从别处拿来,准备做一个实训的,结果不能实现地图上面的显示

结果是下面的问题

import re
import numpy as np
import pandas as pd
from pyecharts.charts import Map


df = pd.read_excel("月饼.xlsx")
print(df.head(10))
df.shape
df.drop_duplicates(inplace=True)
print(df.shape)
# 共有4520条数据,去重后还有1885条数据(某宝一个店铺会在不同页面推荐,导致重复数据比较多)
# 付款人数超过10000后会直接用"万"替代,这里我们需要将其恢复:
print(df[df['付款情况'].str.contains("万")])
 
# 提取数值
df['num'] = [re.findall(r'(\d+\.{0,1}\d*)', i)[0] for i in df['付款情况']]
df['num'] = df['num'].astype('float')
# 提取单位(万)
df['unit'] = [''.join(re.findall(r'(万)', i)) for i in df['付款情况']]
df['unit'] = df['unit'].apply(lambda x:10000 if x=='万' else 1)
# 计算销量
df['销量'] = df['num'] * df['unit']
df = df[df['地址'].notna()]
df['省份'] = df['地址'].str.split(' ').apply(lambda x:x[0])
# 删除多余的列
df.drop(['付款情况', 'num', 'unit'], axis=1, inplace=True)
# 重置索引
df = df.reset_index(drop=True)
print(df.head(20))
# df.to_csv('yuebing2.csv', index=False)
# df2=pd.read_csv('yuebing2.csv')
# print(df2.head(10))
 
def create_map() -> Map:
    # 线性渐变
    color_js = """new echarts.graphic.LinearGradient(0, 0, 1, 0,
        [{offset: 0, color: '#009ad6'}, {offset: 1, color: '#ed1941'}], false)"""
    province_num = df.groupby('省份')['销量'].sum().sort_values(ascending=False)
    map_chart = Map(init_opts=opts.InitOpts(theme='light',
                                            width='800px',
                                            height='600px'))
    map_chart.add('',
                [list(z) for z in zip(province_num.index.tolist(), province_num.values.tolist())],
                maptype='china',
                is_map_symbol_show=False,
                itemstyle_opts={
                    'normal': {
                        'shadowColor': 'rgba(0, 0, 0, .5)',  # 阴影颜色
                        'shadowBlur': 5,  # 阴影大小
                        'shadowOffsetY': 0,  # Y轴方向阴影偏移
                        'shadowOffsetX': 0,  # x轴方向阴影偏移
                        'borderColor': '#fff'
                    }
                }
                )
    map_chart.set_global_opts(
        visualmap_opts=opts.VisualMapOpts(
            is_show=True,
            is_piecewise=True,
            min_ = 0,
            max_ = 1,
            split_number = 5,
            series_index=0,
            pos_top='70%',
            pos_left='10%',
            range_text=['销量(份):', ''],
            pieces=[
                {'max':2000000, 'min':200000, 'label':'> 200000', 'color': '#990000'},
                {'max':200000, 'min':100000, 'label':'100000-200000', 'color': '#CD5C5C'},
                {'max':100000, 'min':50000, 'label':'50000-100000', 'color': '#F08080'},
                {'max':50000, 'min':10000, 'label':'10000-50000', 'color': '#FFCC99'},
                {'max':10000, 'min':0, 'label':'0-10000', 'color': '#FFE4E1'},
            ],
        ),
        legend_opts=opts.LegendOpts(is_show=False),
        tooltip_opts=opts.TooltipOpts(
            is_show=True,
            trigger='item',
            formatter='{b}:{c}'
        ),
        title_opts=dict(
            text='全国各地区月饼销量',
            left='center',
            top='5%',
            textStyle=dict(
                color='#DC143C'))
    )
    return map_chart
if __name__ == "__main__":
    chart = create_map()
    chart.render("map_chart.html")
 这里没有其他的问题,只是数据文件中的省份名称和pyecharts中的地图名称不匹配导致的空值

只需要创建一个字典

# 创建一个字典,用于将数据文件中的省份名称映射到Pyecharts中的地图名称
name_map = {
    '北京': '北京市',
    '天津': '天津市',
    '河北': '河北省',
    '山西': '山西省',
    '内蒙古': '内蒙古自治区',
    '辽宁': '辽宁省',
    '吉林': '吉林省',
    '黑龙江': '黑龙江省',
    '上海': '上海市',
    '江苏': '江苏省',
    '浙江': '浙江省',
    '安徽': '安徽省',
    '福建': '福建省',
    '江西': '江西省',
    '山东': '山东省',
    '河南': '河南省',
    '湖北': '湖北省',
    '湖南': '湖南省',
    '广东': '广东省',
    '广西': '广西壮族自治区',
    '海南': '海南省',
    '重庆': '重庆市',
    '四川': '四川省',
    '贵州': '贵州省',
    '云南': '云南省',
    '西藏': '西藏自治区',
    '陕西': '陕西省',
    '甘肃': '甘肃省',
    '青海': '青海省',
    '宁夏': '宁夏回族自治区',
    '新疆': '新疆维吾尔自治区',
    '台湾': '台湾省',
    '香港': '香港特别行政区',
    '澳门': '澳门特别行政区'
}
# 使用map()方法将数据文件中的省份名称映射为Pyecharts中的地图名称
df2['省份'] = df2['省份'].map(name_map)

来匹配pyecharts里面的省份就行了

如有侵权,请私信我!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值