数据可视化 订阅
数据可视化,是关于数据视觉表现形式的科学技术研究。其中,这种数据的视觉表现形式被定义为,一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。 [1]  它是一个处于不断演变之中的概念,其边界在不断地扩大。主要指的是技术上较为高级的技术方法,而这些技术方法允许利用图形、图像处理、计算机视觉以及用户界面,通过表达、建模以及对立体、表面、属性以及动画的显示,对数据加以可视化解释。与立体建模之类的特殊技术方法相比,数据可视化所涵盖的技术方法要广泛得多。 展开全文
数据可视化,是关于数据视觉表现形式的科学技术研究。其中,这种数据的视觉表现形式被定义为,一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。 [1]  它是一个处于不断演变之中的概念,其边界在不断地扩大。主要指的是技术上较为高级的技术方法,而这些技术方法允许利用图形、图像处理、计算机视觉以及用户界面,通过表达、建模以及对立体、表面、属性以及动画的显示,对数据加以可视化解释。与立体建模之类的特殊技术方法相比,数据可视化所涵盖的技术方法要广泛得多。
信息
外文名
Data visualization
研究起源
二十世纪50年代
中文名
数据可视化
发展阶段
科学可视、信息可视、数据可视
数据可视化概述
数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息。但是,这并不就意味着数据可视化就一定因为要实现其功能用途而令人感到枯燥乏味,或者是为了看上去绚丽多彩而显得极端复杂。为了有效地传达思想概念,美学形式与功能需要齐头并进,通过直观地传达关键的方面与特征,从而实现对于相当稀疏而又复杂的数据集的深入洞察。然而,设计人员往往并不能很好地把握设计与功能之间的平衡,从而创造出华而不实的数据可视化形式,无法达到其主要目的,也就是传达与沟通信息。数据可视化与信息图形、信息可视化、科学可视化以及统计图形密切相关。当前,在研究、教学和开发领域,数据可视化乃是一个极为活跃而又关键的方面。“数据可视化”这条术语实现了成熟的科学可视化领域与较年轻的信息可视化领域的统一。
收起全文
精华内容
下载资源
问答
  • 数据可视化

    千次阅读 2018-06-11 19:01:02
    我们本篇文章讲的数据可视化是面向开发人员的,是利用python中一些可视化库如:matplotlib或是seaborn通过对数据可视化,来分析数据表格中各维度间的关系或是数据分布的特性,从而有助于我们更好的理解数据,帮助...

    作者:Walker

    我们本篇文章讲的数据可视化是面向开发人员的,是利用python中一些可视化库如:matplotlib或是seaborn通过对数据可视化,来分析数据表格中各维度间的关系或是数据分布的特性,从而有助于我们更好的理解数据,帮助我们进行下一步数据分析或是为数据建模提供方向。本篇文章的方法并非是面向用户做数据展示或面向企业做数据可视化,这种情况下大家可以尝试使用Echarts或Tableau等数据展示工具。本文将分为matplotlib可视化和seaborn可视化两个部分。

    一、Matplotlib数据可视化:

    Matplotlib是一个Python的2D绘图库,开发者使用Matplotlib仅需要几行代码便可以轻松绘图,生成柱状图、散点图、折线图、盒图、琴图等。

    首先,matplotlib的安装非常的简单,Windows环境下我们可以通过pip install matplotlib直接完成安装,而Linux环境可以使用sudo pip install matplotlib完成安装。接着我们使用import matplotlib.pyplot as plt导入matplotlib库,便可以开始绘图了。

    完整的绘图程序如下所示,包括图例、坐标轴、取值范围、刻度值、标题、注解等内容。

    程序1:

    import numpy as np
    import matplotlib.pyplot as plt
    from pylab import *

    定义数据部分

    x = np.arange(0., 10, 0.2)
    y1 = np.cos(x)
    y2 = np.sin(x)
    y3 = np.sqrt(x)

    绘制 3 条函数曲线

    plt.plot(x, y1, color=’blue’, linewidth=1.5, linestyle=’-‘, marker=’.’, label=r’y=cosx’)
    plt.plot(x, y2, color=’green’, linewidth=1.5, linestyle=’-‘, marker=’*’, label=r’y=sinx’)
    plt.plot(x, y3, color=’m’, linewidth=1.5, linestyle=’-‘, marker=’x’, label=r’y=x’)

    坐标轴上移

    ax = plt.subplot(111)
    ax.spines[‘right’].set_color(‘none’) # 去掉右边的边框线
    ax.spines[‘top’].set_color(‘none’) # 去掉上边的边框线

    移动下边边框线,相当于移动 X 轴

    ax.xaxis.set_ticks_position(‘bottom’)
    ax.spines[‘bottom’].set_position((‘data’, 0))

    移动左边边框线,相当于移动 y 轴

    ax.yaxis.set_ticks_position(‘left’)
    ax.spines[‘left’].set_position((‘data’, 0))

    设置 x, y 轴的取值范围

    plt.xlim(x.min()*1.1, x.max()*1.1)
    plt.ylim(-1.5, 4.0)

    设置 x, y 轴的刻度值

    plt.xticks([2, 4, 6, 8, 10], [r’2’, r’4’, r’6’, r’8’, r’10’])
    plt.yticks([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0],
    [r’-1.0’, r’0.0’, r’1.0’, r’2.0’, r’3.0’, r’4.0’])

    添加文字

    plt.text(4, 1.68, r’x[0.0, 10.0]’, color=’k’, fontsize=15)
    plt.text(4, 1.38, r’y[1.0, 4.0]’, color=’k’, fontsize=15)

    特殊点添加注解

    plt.scatter([8,],[np.sqrt(8),], 50, color =’m’) # 使用散点图放大当前点
    plt.annotate(r’22’, xy=(8, np.sqrt(8)), xytext=(8.5, 2.2), fontsize=16, color=’#090909’, arrowprops=dict(arrowstyle=’->’, connectionstyle=’arc3, rad=0.1’, color=’#090909’))

    设置标题、x轴、y轴

    plt.title(r’the function figure of cos(), sin() and sqrt()’, fontsize=19)
    plt.xlabel(r’the input value of x’, fontsize=18, labelpad=88.8)
    plt.ylabel(r’y=f(x)’, fontsize=18, labelpad=12.5)

    设置图例及位置

    plt.legend(loc=’up right’)

    plt.legend([‘cos(x)’, ‘sin(x)’, ‘sqrt(x)’], loc=’up right’)

    显示网格线

    plt.grid(True)

    显示绘图

    plt.show()

    散点图、曲线图、折线图、灰度图、饼状图、箱图、琴图等常用图形的绘制,也非常的简单,程序如下所示:

    程序2:

    散点图,是用来展示两个维度间的相关性

    x = np.random.normal(size=1000)
    y = np.random.normal(size=1000)
    plt.scatter(x,y)

    程序3:

    曲线图,观察某个变量的走势

    x = np.arange(-5,5,0.1)
    y = x ** 2
    plt.plot(x,y)y = np.random.normal(size=1000)

    程序4:

    灰度图,查看某个维度的数据状况

    x = np.random.normal(size=1000)
    plt.hist(x, bins=100)

    程序5:

    饼图,显示一个系列中各项的大小以及各项所占总和的比例

    import numpy as np
    import matplotlib.pyplot as plt

    x为数据, 根据数据在所有数据中所占的比例显示结果

    labels设置每个数据的标签

    autoper 设置每一块所占的百分比

    explode 设置某一块或者很多块突出显示出来, 由上面定义的explode数组决定

    shadow 设置阴影,这样显示的效果更好

    labels = [“SH”, “BI”, “SZ”, “GD”]
    facts = [20, 10, 30, 40]
    explode = [0, 0, 0.02, 0]
    plt.axes(aspect = 1)
    plt.pie(x = facts, labels = labels, explode= explode, shadow= True)
    plt.show()

    程序6:

    箱图

    上边缘(Q3+1.5IQR)、下边缘(Q1-1.5IQR)、IQR=Q3-Q1

    上四分位数(Q3)、下四分位数(Q1)

    中位数

    异常值

    处理异常值时与3σσ标准的异同:统计边界是否受异常值影响、容忍度的大小

    plt.boxplot(y)

    二、Seaborn数据可视化:
    Seaborn相较于matplotlib更加的方便、简单。因为Seaborn中自带了一些统计的包,它在画图的同时,会完成统计的拟合。而且Seaborn画图时的参数也更多,这样matplotlib可能很多行的代码,seaborn仅仅需要间的几行就能实现同样的效果。
    Seaborn的安装也非常的简单,使用pip install seaborn直接安装即可,首先我们来介绍一些Seaborn中的基本绘图函数:折线图:plot()、散点图:lmplot()、柱状图:barplot()、联合分布图:jointplot()、琴图:violinplot()、箱式图:boxplot()、比较图:pairplot()等。常用的属性有hue:对数据按照不同的类型先做分组,再分别对每组数据绘图;col:用于多列数据都出现分组时;markers:用哪种符号对数据进行标注,Ci:是否开启置信区间;color、data、x、y等。
    接下来我们通过两个案例来直观的比较一下seaborn和matplotlib的不同。
    案例一:给定数据集航班乘客变化分析data = sns.load_dataset(“flights”),利用柱状图分析乘客在一年中各月份的分布情况。
    Matplotlib版本:

    per_month_distribute = data.groupby(‘month’).agg([np.mean, np.std])[‘passengers’]
    _,axe=plt.subplots()
    plt.rcParams[“figure.figsize”] = (12,8)
    print(per_month_distribute)
    plt.bar(range(12), per_month_distribute[‘mean’],color=’cadetblue’,label=’average’)

    yerr:y坐标对应误差的正负值,ls=linestyle,lw=linewidth

    plt.errorbar(range(12), per_month_distribute[‘mean’],yerr=per_month_distribute[‘std’],ls=’none’,color=’darkslategray’, lw=5, label=’error’)
    plt.xticks(range(12),per_month_distribute.index,fontsize=15,rotation=45)#把X轴上的字体旋转45度,以免重叠
    plt.xlabel(‘Month of Year’,fontsize=20)
    plt.ylabel(‘Passengers’,fontsize=20)
    plt.legend([u”乘客量均值”, u”乘客量标准差”],fontsize=15) #把label标注的内容显示出来
    plt.title(u’乘客在一年中各月份的分布’,fontsize=25)
    axe.spines[‘top’].set_color(None)
    axe.spines[‘right’].set_color(None)
    plt.scatter(x,y)

    Seaborn版本:

    import seaborn as sns
    sns.factorplot(x='month',y='passengers',data=data, kind='bar',size=8)

    效果图:

    案例二:给定数据集餐厅收取小费的情况:data = sns.load_dataset(“tips”),绘制分组柱状图分析性别+抽烟的组合因素对慷慨度的影响。
    Matplotlib版本:

    tmp_data=data.groupby([‘sex’,’smoker’])[‘tip’].agg([np.mean,np.std])
    width = 0.2
    _,axe=plt.subplots()
    plt.bar([1,2],tmp_data[‘mean’].loc[‘Male’],width=width, label=’Male’)
    plt.errorbar([1,2],tmp_data[‘mean’].loc[‘Male’],
    yerr = tmp_data[‘std’].loc[‘Male’], ls =’none’,lw=4,color=’darkblue’,label=None)

    画女性抽烟柱状图,X+0.2

    plt.bar([x+width for x in [1,2]],tmp_data[‘mean’].loc[‘Female’],width=width,label=’Female’,color=’salmon’)
    plt.errorbar([x+width for x in [1,2]],tmp_data[‘mean’].loc[‘Female’],
    yerr=tmp_data[‘std’].loc[‘Female’],ls=’none’,lw=4,color=’darkred’,label=None)
    plt.setp(axe, xticks=[1.1,2.1], xticklabels=[‘Yes’,’No’]) #设置横坐标参数
    plt.legend(fontsize=15)
    plt.xlabel(‘Smoker’,fontsize=15)
    plt.ylabel(‘Tip’,fontsize=15)
    plt.axis([0.7,2.7,0,5]) #移动坐标轴,[left,right,bottom,top],距离左右,上下边框的距离
    plt.title(u’性别+抽烟的组合因素对慷慨度的影响’)

    Seaborn版本:

    sns.barplot(x='smoker',y='tip',data=tips,hue='sex')

    效果图:

    总结:通过上边的案例我们分别通过matplotlib和seaborn完成了数据可视化的操作,我么可以看到Seaborn封装的更好,使用起来更简单;但Matplotlib灵活性更高、功能也更加强大。学习Matplotlib和Seaborn更多的函数、图形的绘制,欢迎大家学习它们的官方手册,这里小编只是做了一个简单的常用整理。Matplotlib官方文档:http://www.matplotlib.org

    Seaborn官方手册:http://seaborn.pydata.org

     

    展开全文
  • 大屏数据可视化案例

    万次阅读 多人点赞 2018-06-25 18:07:38
    数据可视化:把相对复杂的、抽象的数据通过可视的、交互的方式进行展示,从而形象直观地表达数据蕴含的信息和规律。 数据可视化是数据空间到图形空间的映射,是抽象数据的具象表达。 数据可视化交互的基本原则:总...

    数据可视化:把相对复杂的、抽象的数据通过可视的、交互的方式进行展示,从而形象直观地表达数据蕴含的信息和规律。
    数据可视化是数据空间到图形空间的映射,是抽象数据的具象表达。
    数据可视化交互的基本原则:总览为先,缩放过滤按需查看细节。

    大屏数据可视化是当前可视化领域的一项热门应用,通常可以分为信息展示类、数据分析类及监控预警类。
    大屏数据可视化应用的难点并不在于图表类型的多样化,而在于如何能在简单的一页之内让用户读懂数据之间的层次与关联,这就关系到布局、色彩、图表、动效的综合运用。如排版布局应服务于业务,避免为展示而展示;配色一般以深色调为主,注重整体背景和单个视觉元素背景的一致性。
    制作可视化大屏,最便捷有效的方式是使用DataV、帆软等报表工具,而本示例项目则使用ECharts自行开发。

    项目案例 - 上市公司全景概览
    在这里插入图片描述

    地图数据可视化 - 基于ECharts Geo
    这里写图片描述

    3D图表展示 - 基于ECharts GL
    这里写图片描述

    热力图展示 - 基于ECharts & 百度地图
    这里写图片描述

    ECharts扩展示例
    这里写图片描述

    旭日图 - 基于ECharts V4.2
    在这里插入图片描述

    地理信息数据 - ECharts & Baidu Map
    在这里插入图片描述

    项目Git地址:https://github.com/yyhsong/iDataV
    演示地址:https://yyhsong.github.io/iDataV

    后记:
    除自行开发可视化大屏外,还可以通过第三方服务来快速实现,如阿里云DataV、腾讯云图、百度Sugar等,具体可参考:https://blog.csdn.net/hwhsong/article/details/83097924

    展开全文
  • Python爬虫与数据可视化

    万次阅读 多人点赞 2019-06-12 20:57:09
    数据可视化这里特别强调,pyecharts包千万别装新版的,我这里装的是0.5.9版的其次如果要做地理坐标图,热力图啥的,必须安装地图包,比如世界地图包,中国地图包,城市地图包啥的 1.数据挖掘 代码所需包 # -*- ...

    之前写过篇爬取前程无忧职位信息并保存到Excel的博客,
    这里仔细的讲讲并且增加可视化内容

    1.数据挖掘

    代码所需包

    import urllib.request
    import xlwt
    import re
    import urllib.parse
    import time
    

    进入前程无忧官网
    我这里以搜索大数据职位信息
    在这里插入图片描述
    打开开发者模式
    Request Headers 里面是我们用浏览器访问网站的信息,有了信息后就能模拟浏览器访问
    这也是为了防止网站封禁IP,不过前程无忧一般是不会封IP的。
    在这里插入图片描述
    模拟浏览器

    header={
        'Host':'search.51job.com',
        'Upgrade-Insecure-Requests':'1',
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    }
    

    在这里插入图片描述
    这些基本数据都可以爬取:
    为了实现交互型爬取,我写了一个能够实现输入想了解的职位就能爬取相关内容的函数

    def getfront(page,item):       #page是页数,item是输入的字符串,见后文
         result = urllib.parse.quote(item)					#先把字符串转成十六进制编码
         ur1 = result+',2,'+ str(page)+'.html'
         ur2 = 'https://search.51job.com/list/000000,000000,0000,00,9,99,'
         res = ur2+ur1															#拼接网址
         a = urllib.request.urlopen(res)
         html = a.read().decode('gbk')          # 读取源代码并转为unicode
         return html
    
    def getInformation(html):
        reg = re.compile(r'class="t1 ">.*? <a target="_blank" title="(.*?)" href="(.*?)".*? <span class="t2"><a target="_blank" title="(.*?)" href="(.*?)".*?<span class="t3">(.*?)</span>.*?<span class="t4">(.*?)</span>.*?<span class="t5">(.*?)</span>.*?',re.S)#匹配换行符
        items=re.findall(reg,html)
        return items
    

    这里我除了爬取图上信息外,还把职位超链接后的网址,以及公司超链接的网址爬取下来了。
    这里先不讲,后面后面会说到,
    接下来就需要储存信息,这里使用Excel,虽然比较麻烦,不过胜在清晰直观

    #新建表格空间
    excel1 = xlwt.Workbook()
    # 设置单元格格式
    sheet1 = excel1.add_sheet('Job', cell_overwrite_ok=True)
    sheet1.write(0, 0, '序号')
    sheet1.write(0, 1, '职位')
    sheet1.write(0, 2, '公司名称')
    sheet1.write(0, 3, '公司地点')
    sheet1.write(0, 4, '公司性质')
    sheet1.write(0, 5, '薪资')
    sheet1.write(0, 6, '学历要求')
    sheet1.write(0, 7, '工作经验')
    sheet1.write(0, 8, '公司规模')
    sheet1.write(0, 9, '公司类型')
    sheet1.write(0, 10,'公司福利')
    sheet1.write(0, 11,'发布时间')
    

    爬取代码如下,这里就能利用双层循环来实现换页爬取与换行输出
    我这里为了获得大量数据所以爬取了1000页,调试时可以只爬取几页

    number = 1
    item = input()
    for j in range(1,10000):   #页数自己随便改
        try:
            print("正在爬取第"+str(j)+"页数据...")
            html = getfront(j,item)      #调用获取网页原码
            for i in getInformation(html):
                try:
                    url1 = i[1]          #职位网址
                    res1 = urllib.request.urlopen(url1).read().decode('gbk')
                    company = re.findall(re.compile(r'<div class="com_tag">.*?<p class="at" title="(.*?)"><span class="i_flag">.*?<p class="at" title="(.*?)">.*?<p class="at" title="(.*?)">.*?',re.S),res1)
                    job_need = re.findall(re.compile(r'<p class="msg ltype".*?>.*?&nbsp;&nbsp;<span>|</span>&nbsp;&nbsp;(.*?)&nbsp;&nbsp;<span>|</span>&nbsp;&nbsp;(.*?)&nbsp;&nbsp;<span>|</span>&nbsp;&nbsp;.*?</p>',re.S),res1)
                    welfare = re.findall(re.compile(r'<span class="sp4">(.*?)</span>',re.S),res1)
                    print(i[0],i[2],i[4],i[5],company[0][0],job_need[2][0],job_need[1][0],company[0][1],company[0][2],welfare,i[6])
                    sheet1.write(number,0,number)
                    sheet1.write(number,1,i[0])
                    sheet1.write(number,2,i[2])
                    sheet1.write(number,3,i[4])
                    sheet1.write(number,4,company[0][0])
                    sheet1.write(number,5,i[5])
                    sheet1.write(number,6,job_need[1][0])
                    sheet1.write(number,7,job_need[2][0])
                    sheet1.write(number,8,company[0][1])
                    sheet1.write(number,9,company[0][2])
                    sheet1.write(number,10,("  ".join(str(i) for i in welfare)))
                    sheet1.write(number,11,i[6])
                    number+=1
                    excel1.save("51job.xls")
                    time.sleep(0.3) #休息间隔,避免爬取海量数据时被误判为攻击,IP遭到封禁
                except:
                    pass
        except:
            pass
    

    结果如下:
    在这里插入图片描述
    在这里插入图片描述

    2.数据清洗

    首先要打开文件

    #coding:utf-8
    import pandas as pd
    import re
    #除此之外还要安装xlrd包
    
    data = pd.read_excel(r'51job.xls',sheet_name='Job')
    result = pd.DataFrame(data)
    

    清洗思路:
    1、出现有空值(NAN)得信息,直接删除整行

    a = result.dropna(axis=0,how='any')
    pd.set_option('display.max_rows',None)     #输出全部行,不省略
    

    2、职位出错(很多职位都是与大数据无关的职业)
    在这里插入图片描述

    b = u'数据'
    number = 1
    li = a['职位']
    for i in range(0,len(li)):
        try:
            if b in li[i]:
                #print(number,li[i])
                number+=1
            else:
                a = a.drop(i,axis=0)
        except:
            pass
    

    3、其他地方出现的信息错位,比如在学历里出现 ‘招多少人’
    在这里插入图片描述

    b2= u'人'
    li2 = a['学历要求']
    for i in range(0,len(li2)):
        try:
            if b2 in li2[i]:
                #print(number,li2[i])
                number+=1
                a = a.drop(i,axis=0)
        except:
            pass
    

    4、转换薪资单位
    如上图就出现单位不一致的情况

    b3 =u'万/年'
    b4 =u'千/月'
    li3 = a['薪资']
    #注释部分的print都是为了调试用的
    for i in range(0,len(li3)):
        try:
            if b3 in li3[i]:
                x = re.findall(r'\d*\.?\d+',li3[i])
                #print(x)
                min_ = format(float(x[0])/12,'.2f')              #转换成浮点型并保留两位小数
                max_ = format(float(x[1])/12,'.2f')
                li3[i][1] = min_+'-'+max_+u'万/月'
            if b4 in li3[i]:
                x = re.findall(r'\d*\.?\d+',li3[i])
                #print(x)
                #input()
                min_ = format(float(x[0])/10,'.2f')
                max_ = format(float(x[1])/10,'.2f')
                li3[i][1] = str(min_+'-'+max_+'万/月')
            print(i,li3[i])
    
        except:
            pass
    

    保存到另一个Excel文件

    a.to_excel('51job2.xls', sheet_name='Job', index=False)
    

    这里只是简单的介绍了一些数据清理的思路,并不是说只要清理这些就行了
    有时候有的公司网页并不是前程无忧类型的,而是他们公司自己做的网页,这也很容易出错
    不过只要有了基本思路,这些都不难清理

    3.数据可视化

    数据可视化可以说是很重要的环节,如果只是爬取数据而不去可视化处理,那么可以说数据的价值根本没有发挥
    可视化处理能使数据更加直观,更有利于分析
    甚至可以说可视化是数据挖掘最重要的内容

    同样的我们先看代码需要的包

    # -*- coding: utf-8 -*-
    import pandas as pd
    import re
    from pyecharts import Funnel,Pie,Geo
    import matplotlib.pyplot as plt
    

    这里特别强调,pyecharts包千万别装新版的,我这里装的是0.5.9版的

    在这里插入图片描述

    其次如果要做地理坐标图,热力图啥的,必须安装地图包,比如世界地图包,中国地图包,城市地图包啥的

    在这里插入图片描述
    接下来就是正戏
    一样的先要打开文件

    file = pd.read_excel(r'51job2.xls',sheet_name='Job')
    f = pd.DataFrame(file)
    pd.set_option('display.max_rows',None)
    

    1、创建多个列表来单独存放【‘薪资’】【‘工作经验’】【‘学历要求’】【‘公司地点’】等信息

    add = f['公司地点']
    sly = f['薪资']
    edu = f['学历要求']
    exp = f['工作经验']
    address =[]
    salary = []
    education = []
    experience = []
    for i in range(0,len(f)):
        try:
            a = add[i].split('-')
            address.append(a[0])
            #print(address[i])
            s = re.findall(r'\d*\.?\d+',sly[i])
            s1= float(s[0])
            s2 =float(s[1])
            salary.append([s1,s2])
            #print(salary[i])
            education.append(edu[i])
            #print(education[i])
            experience.append(exp[i])
            #print(experience[i])
        except:
           pass
    

    2、matploblib库生成 工作经验—薪资图 与 学历—薪资图

    min_s=[]							#定义存放最低薪资的列表
    max_s=[]							#定义存放最高薪资的列表
    for i in range(0,len(experience)):
        min_s.append(salary[i][0])
        max_s.append(salary[i][0])
    
    my_df = pd.DataFrame({'experience':experience, 'min_salay' : min_s, 'max_salay' : max_s})				#关联工作经验与薪资
    data1 = my_df.groupby('experience').mean()['min_salay'].plot(kind='line')
    plt.show()
    my_df2 = pd.DataFrame({'education':education, 'min_salay' : min_s, 'max_salay' : max_s})				#关联学历与薪资
    data2 = my_df2.groupby('education').mean()['min_salay'].plot(kind='line')
    plt.show()
    

    在这里插入图片描述
    在这里插入图片描述
    3、学历要求圆环图

    def get_edu(list):
        education2 = {}
        for i in set(list):
            education2[i] = list.count(i)
        return education2
    dir1 = get_edu(education)
    # print(dir1)
    
    attr= dir1.keys()
    value = dir1.values()
    pie = Pie("学历要求")
    pie.add("", attr, value, center=[50, 50], is_random=False, radius=[30, 75], rosetype='radius',
            is_legend_show=False, is_label_show=True,legend_orient='vertical')
    pie.render('学历要求玫瑰图.html')
    

    在这里插入图片描述
    在这里插入图片描述
    4、大数据城市需求地理位置分布图

    def get_address(list):
        address2 = {}
        for i in set(list):
            address2[i] = list.count(i)
        address2.pop('异地招聘')
        # 有些地名可能不合法或者地图包里没有可以自行删除,之前以下名称都会报错,现在好像更新了
        #address2.pop('山东')
        #address2.pop('怒江')
        #address2.pop('池州')
        return address2
    dir2 = get_address(address)
    #print(dir2)
    
    geo = Geo("大数据人才需求分布图", title_color="#2E2E2E",
              title_text_size=24,title_top=20,title_pos="center", width=1300,height=600)
    attr2 = dir2.keys()
    value2 = dir2.values()
    geo.add("",attr2, value2, type="effectScatter", is_random=True, visual_range=[0, 1000], maptype='china',symbol_size=8, effect_scale=5, is_visualmap=True)
    geo.render('大数据城市需求分布图.html')
    

    在这里插入图片描述
    在这里插入图片描述
    5、工作经验要求漏斗图

    def get_experience(list):
        experience2 = {}
        for i in set(list):
             experience2[i] = list.count(i)
        return experience2
    dir3 = get_experience(experience)
    #print(dir3)
    
    attr3= dir3.keys()
    value3 = dir3.values()
    funnel = Funnel("工作经验漏斗图",title_pos='center')
    funnel.add("", attr3, value3,is_label_show=True,label_pos="inside", label_text_color="#fff",legend_orient='vertical',legend_pos='left')
    funnel.render('工作经验要求漏斗图.html')
    

    在这里插入图片描述
    在这里插入图片描述
    当然,pyecharts里面的图还有很多种,就靠大家去自己发掘了。

    【反馈】

    接到部分人反应的乱码情况,主要可能是因为网站规则变动。我去重新更新了一下代码,并且改进了一些地方,如果遇到爬取过程中途停下的情况,可能是网络问题或者陷入阻塞,可以重新运行一次代码

    所有代码如下:

    # -*- coding:utf-8 -*-
    import urllib.request
    import xlwt
    import re
    import urllib.parse
    import time
    header={
        'Host':'search.51job.com',
        'Upgrade-Insecure-Requests':'1',
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    }
    def getfront(page,item):       #page是页数,item是输入的字符串
         result = urllib.parse.quote(item)					#先把字符串转成十六进制编码
         ur1 = result+',2,'+ str(page)+'.html'
         ur2 = 'https://search.51job.com/list/000000,000000,0000,00,9,99,'
         res = ur2+ur1															#拼接网址
         a = urllib.request.urlopen(res)
         html = a.read().decode('gbk')          # 读取源代码并转为unicode
         return html
    def getInformation(html):
        reg = re.compile(r'class="t1 ">.*? <a target="_blank" title="(.*?)" href="(.*?)".*? <span class="t2"><a target="_blank" title="(.*?)" href="(.*?)".*?<span class="t3">(.*?)</span>.*?<span class="t4">(.*?)</span>.*?<span class="t5">(.*?)</span>.*?',re.S)#匹配换行符
        items=re.findall(reg,html)
        return items
    #新建表格空间
    excel1 = xlwt.Workbook()
    # 设置单元格格式
    sheet1 = excel1.add_sheet('Job', cell_overwrite_ok=True)
    sheet1.write(0, 0, '序号')
    sheet1.write(0, 1, '职位')
    sheet1.write(0, 2, '公司名称')
    sheet1.write(0, 3, '公司地点')
    sheet1.write(0, 4, '公司性质')
    sheet1.write(0, 5, '薪资')
    sheet1.write(0, 6, '学历要求')
    sheet1.write(0, 7, '工作经验')
    sheet1.write(0, 8, '公司规模')
    sheet1.write(0, 9, '公司类型')
    sheet1.write(0, 10,'公司福利')
    sheet1.write(0, 11,'发布时间')
    number = 1
    item = input()
    for j in range(1,10000):   #页数自己随便改
        try:
            print("正在爬取第"+str(j)+"页数据...")
            html = getfront(j,item)      #调用获取网页原码
            for i in getInformation(html):
                try:
                    url1 = i[1]          #职位网址
                    res1 = urllib.request.urlopen(url1).read().decode('gbk')
                    company = re.findall(re.compile(r'<div class="com_tag">.*?<p class="at" title="(.*?)"><span class="i_flag">.*?<p class="at" title="(.*?)">.*?<p class="at" title="(.*?)">.*?',re.S),res1)
                    job_need = re.findall(re.compile(r'<p class="msg ltype".*?>.*?&nbsp;&nbsp;<span>|</span>&nbsp;&nbsp;(.*?)&nbsp;&nbsp;<span>|</span>&nbsp;&nbsp;(.*?)&nbsp;&nbsp;<span>|</span>&nbsp;&nbsp;.*?</p>',re.S),res1)
                    welfare = re.findall(re.compile(r'<span class="sp4">(.*?)</span>',re.S),res1)
                    print(i[0],i[2],i[4],i[5],company[0][0],job_need[2][0],job_need[1][0],company[0][1],company[0][2],welfare,i[6])
                    sheet1.write(number,0,number)
                    sheet1.write(number,1,i[0])
                    sheet1.write(number,2,i[2])
                    sheet1.write(number,3,i[4])
                    sheet1.write(number,4,company[0][0])
                    sheet1.write(number,5,i[5])
                    sheet1.write(number,6,job_need[2][0])
                    sheet1.write(number,7,job_need[1][0])
                    sheet1.write(number,8,company[0][1])
                    sheet1.write(number,9,company[0][2])
                    sheet1.write(number,10,("  ".join(str(i) for i in welfare)))
                    sheet1.write(number,11,i[6])
                    number+=1
                    excel1.save("51job.xls")
                    time.sleep(0.3) #休息间隔,避免爬取海量数据时被误判为攻击,IP遭到封禁
                except:
                    pass
        except:
            pass
    
    #coding:utf-8
    import pandas as pd
    import re
    
    data = pd.read_excel(r'51job.xls',sheet_name='Job')
    result = pd.DataFrame(data)
    
    a = result.dropna(axis=0,how='any')
    pd.set_option('display.max_rows',None)     #输出全部行,不省略
    
    b = u'数据'
    number = 1
    li = a['职位']
    for i in range(0,len(li)):
        try:
            if b in li[i]:
                #print(number,li[i])
                number+=1
            else:
                a = a.drop(i,axis=0)  #删除整行
        except:
            pass
    
    b2 = '人'
    li2 = a['学历要求']
    for i in range(0,len(li2)):
        try:
            if b2 in li2[i]:
                # print(number,li2[i])
                number += 1
                a = a.drop(i, axis=0)
        except:
            pass
    
    b3 =u'万/年'
    b4 =u'千/月'
    li3 = a['薪资']
    #注释部分的print都是为了调试用的
    for i in range(0,len(li3)):
        try:
            if b3 in li3[i]:
                x = re.findall(r'\d*\.?\d+',li3[i])
                #print(x)
                min_ = format(float(x[0])/12,'.2f')              #转换成浮点型并保留两位小数
                max_ = format(float(x[1])/12,'.2f')
                li3[i][1] = min_+'-'+max_+u'万/月'
            if b4 in li3[i]:
                x = re.findall(r'\d*\.?\d+',li3[i])
                #print(x)
                #input()
                min_ = format(float(x[0])/10,'.2f')
                max_ = format(float(x[1])/10,'.2f')
                li3[i][1] = str(min_+'-'+max_+'万/月')
            print(i,li3[i])
    
        except:
            pass
    a.to_excel('51job2.xls', sheet_name='Job', index=False)
    #############################################################################################
    import pandas as pd
    import re
    from pyecharts import Funnel,Pie,Geo
    import matplotlib.pyplot as plt
    
    file = pd.read_excel(r'51job2.xls',sheet_name='Job')
    f = pd.DataFrame(file)
    pd.set_option('display.max_rows',None)
    
    add = f['公司地点']
    sly = f['薪资']
    edu = f['学历要求']
    exp = f['工作经验']
    address =[]
    salary = []
    education = []
    experience = []
    for i in range(0,len(f)):
        try:
            a = add[i].split('-')
            address.append(a[0])
            #print(address[i])
            s = re.findall(r'\d*\.?\d+',sly[i])
            s1= float(s[0])
            s2 =float(s[1])
            salary.append([s1,s2])
            #print(salary[i])
            education.append(edu[i])
            #print(education[i])
            experience.append(exp[i])
            #print(experience[i])
        except:
           pass
    
    min_s=[]							#定义存放最低薪资的列表
    max_s=[]							#定义存放最高薪资的列表
    for i in range(0,len(experience)):
        min_s.append(salary[i][0])
        max_s.append(salary[i][0])
    #matplotlib模块如果显示不了中文字符串可以用以下代码。
    plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
    plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
    
    my_df = pd.DataFrame({'experience':experience, 'min_salay' : min_s, 'max_salay' : max_s})				#关联工作经验与薪资
    data1 = my_df.groupby('experience').mean()['min_salay'].plot(kind='line')
    plt.show()
    my_df2 = pd.DataFrame({'education':education, 'min_salay' : min_s, 'max_salay' : max_s})				#关联学历与薪资
    data2 = my_df2.groupby('education').mean()['min_salay'].plot(kind='line')
    plt.show()
    
    def get_edu(list):
        education2 = {}
        for i in set(list):
            education2[i] = list.count(i)
        return education2
    dir1 = get_edu(education)
    # print(dir1)
    
    attr= dir1.keys()
    value = dir1.values()
    pie = Pie("学历要求")
    pie.add("", attr, value, center=[50, 50], is_random=False, radius=[30, 75], rosetype='radius',
            is_legend_show=False, is_label_show=True,legend_orient='vertical')
    pie.render('学历要求玫瑰图.html')
    
    def get_address(list):
        address2 = {}
        for i in set(list):
            address2[i] = list.count(i)
        address2.pop('异地招聘')
        # 有些地名可能不合法或者地图包里没有可以自行删除,之前以下名称都会报错,现在好像更新了
        #address2.pop('山东')
        #address2.pop('怒江')
        #address2.pop('池州')
        return address2
    dir2 = get_address(address)
    #print(dir2)
    
    geo = Geo("大数据人才需求分布图", title_color="#2E2E2E",
              title_text_size=24,title_top=20,title_pos="center", width=1300,height=600)
    attr2 = dir2.keys()
    value2 = dir2.values()
    geo.add("",attr2, value2, type="effectScatter", is_random=True, visual_range=[0, 1000], maptype='china',symbol_size=8, effect_scale=5, is_visualmap=True)
    geo.render('大数据城市需求分布图.html')
    
    def get_experience(list):
        experience2 = {}
        for i in set(list):
             experience2[i] = list.count(i)
        return experience2
    dir3 = get_experience(experience)
    #print(dir3)
    
    attr3= dir3.keys()
    value3 = dir3.values()
    funnel = Funnel("工作经验漏斗图",title_pos='center')
    funnel.add("", attr3, value3,is_label_show=True,label_pos="inside", label_text_color="#fff",legend_orient='vertical',legend_pos='left')
    funnel.render('工作经验要求漏斗图.html')
    
    

    在这里插入图片描述
    HTML文件最好用谷歌浏览器打开,如果点开没反应可以在文件夹里找到该文件然后打开
    在这里插入图片描述

    最近比较多人说爬取数据没有动静,我去看了下,其实不是什么问题,就是网页源码有更改,之前python爬取到的信息是用HTML写的,而现在数据那里是JavaScript写的,这样的话正则肯定就不匹配了。我也花时间改了改。有些东西也去的去,加的加,不过不影响后面数据可视化。

    # -*- coding:utf-8 -*-
    import urllib.request
    import xlwt
    import re
    import urllib.parse
    import time
    header={
        'Host':'search.51job.com',
        'Upgrade-Insecure-Requests':'1',
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    }
    def getfront(page,item):       #page是页数,item是输入的字符串
         result = urllib.parse.quote(item)					#先把字符串转成十六进制编码
         ur1 = result+',2,'+ str(page)+'.html'
         ur2 = 'https://search.51job.com/list/000000,000000,0000,00,9,99,'
         res = ur2+ur1    #拼接网址
         a = urllib.request.urlopen(res)
         html = a.read().decode('gbk')      # 读取源代码并转为unicode
         html = html.replace('\\','')       # 将用于转义的"\"替换为空
         html = html.replace('[', '')
         html = html.replace(']', '')
         #print(html)
         return html
    
    def getInformation(html):
        reg = re.compile(r'\{"type":"engine_search_result","jt":"0".*?"job_href":"(.*?)","job_name":"(.*?)".*?"company_href":"(.*?)","company_name":"(.*?)","providesalary_text":"(.*?)".*?"updatedate":"(.*?)".*?,'
                         r'"companytype_text":"(.*?)".*?"jobwelf":"(.*?)".*?"attribute_text":"(.*?)","(.*?)","(.*?)","(.*?)","companysize_text":"(.*?)","companyind_text":"(.*?)","adid":""},',re.S)#匹配换行符
        items=re.findall(reg,html)
        print(items)
        return items
    
    #新建表格空间
    excel1 = xlwt.Workbook()
    # 设置单元格格式
    sheet1 = excel1.add_sheet('Job', cell_overwrite_ok=True)
    sheet1.write(0, 0, '序号')
    sheet1.write(0, 1, '职位')
    sheet1.write(0, 2, '公司名称')
    sheet1.write(0, 3, '公司地点')
    sheet1.write(0, 4, '公司性质')
    sheet1.write(0, 5, '薪资')
    sheet1.write(0, 6, '学历要求')
    sheet1.write(0, 7, '工作经验')
    sheet1.write(0, 8, '公司规模')
    #sheet1.write(0, 9, '公司类型')
    sheet1.write(0, 9,'公司福利')
    sheet1.write(0, 10,'发布时间')
    number = 1
    item = input()
    
    for j in range(1,10):   #页数自己随便改
        try:
            print("正在爬取第"+str(j)+"页数据...")
            html = getfront(j,item)      #调用获取网页原码
            for i in getInformation(html):
                try:
                    #url1 = i[1]          #职位网址
                    #res1 = urllib.request.urlopen(url1).read().decode('gbk')
                    #company = re.findall(re.compile(r'<div class="com_tag">.*?<p class="at" title="(.*?)"><span class="i_flag">.*?<p class="at" title="(.*?)">.*?<p class="at" title="(.*?)">.*?',re.S),res1)
                    #job_need = re.findall(re.compile(r'<p class="msg ltype".*?>.*?&nbsp;&nbsp;<span>|</span>&nbsp;&nbsp;(.*?)&nbsp;&nbsp;<span>|</span>&nbsp;&nbsp;(.*?)&nbsp;&nbsp;<span>|</span>&nbsp;&nbsp;.*?</p>',re.S),res1)
                    #welfare = re.findall(re.compile(r'<span class="sp4">(.*?)</span>',re.S),res1)
                    #print(i[0],i[2],i[4],i[5],company[0][0],job_need[2][0],job_need[1][0],company[0][1],company[0][2],welfare,i[6])
                    sheet1.write(number,0,number)
                    sheet1.write(number,1,i[1])
                    sheet1.write(number,2,i[3])
                    sheet1.write(number,3,i[8])
                    sheet1.write(number,4,i[6])
                    sheet1.write(number,5,i[4])
                    sheet1.write(number,6,i[10])
                    sheet1.write(number,7,i[9])
                    sheet1.write(number,8,i[12])
                    #sheet1.write(number,9,i[7])
                    sheet1.write(number,9,i[7])
                    sheet1.write(number,10,i[5])
                    number+=1
                    excel1.save("51job.xls")
                    time.sleep(0.3) #休息间隔,避免爬取海量数据时被误判为攻击,IP遭到封禁
                except:
                    pass
        except:
            pass
    

    顺便放上源码:https://github.com/haohaizhi/51job_spiders

    展开全文
  • Python数据可视化教程:基于Plotly的动态可视化绘图

    万次阅读 多人点赞 2019-06-13 15:27:44
    Plotly是一个非常著名且强大的开源数据可视化框架,它通过构建基于浏览器显示的web形式的可交互图表来展示信息,可创建多达数十种精美的图表和地图, 下面我们以jupyter notebook为开发工具数据分析。Matplotlib存在...

    1. plotly 介绍

    Plotly是一个非常著名且强大的开源数据可视化框架,它通过构建基于浏览器显示的web形式的可交互图表来展示信息,可创建多达数十种精美的图表和地图,
    下面我们以jupyter notebook为开发工具数据分析。Matplotlib存在不够美观、静态性、不易分享等缺点,限制了Python在数据可视化中的发展。为了解决这个问题,新型的动态可视化开源模块Plotly应运而生。
    由于Plotly具有动态、美观、易用、种类丰富等特性。

    可以说,plotly 在Python 绘制图表的时候,是一种顶层的绘制方式。

    我们首先通过plotly官方网站看看数据可视化效果图,这里截取了一部分的效果,发现真是无比强大,并且还支持数据/图片在线编辑


    2. plotly 两种方式绘制图表
    Plotly是集成了在线通过菜单操作绘图与离线通过代码绘图多种绘图方式的绘图系统。如果使用在线方式,在使用plotly的时候,需要在官网注册一个个人账号,设置个人密码。

    在线:将你的可视化图像保存到网站上,便于共享和保存。
    离线:直接在本地生成可视化图像,便于使用。(推荐使用离线方式,方便查看和阅读)

    下面主要从Python的角度来分析plotly的绘图原理及方法:

    3. plotly绘图

    基本图表:20种
    统计和海运方式图:12种
    科学图表:21种
    财务图表:2种
    地图:8种
    3D图表:19种
    报告生成:4种
    连接数据库:7种
    拟合工具:3种
    流动图表:4种
    JavaScript添加自定义控件:13种

     



    4. 第一个Python 的plotly ,带你入门

     

    import matplotlib.pyplot as plt
    %matplotlib inline
    import plotly
    import plotly.graph_objs as go
    from plotly.offline import init_notebook_mode,iplot
    init_notebook_mode(connected=True)
    import warnings
    warnings.filterwarnings('ignore')
    import numpy as np
    import pandas as pd
    plotly.__version__
    



    接下来我们可以绘制一个plotly的程序,看看到底是什么效果
     

    x = [1,2,3,4]
    y = [10,15,13,17]
    trace0 = go.Scatter(
        x = x,
        y = y
    )
    print(trace0)
    
    data = [trace0]
    print(data)
    
    iplot(data)



    5. 可视化图表数据案例

    本案例使用的数据介绍: 泰坦尼克号数据、鸢尾花数据、航班数据、金融类数据。 通过这些实际数据分析,可以快速 让大家掌握plotly 在实际工作中是如何进行数据分析的。

     

    6. 金融数据 时序图案例

    通过可以通过时序图 每个时间点的变化,例如: 金融领域,可以通过该方法来了解一下股价 变了的趋势
    统计金融数据每天股价的变化趋势进行分析

    data = [
        
        go.Scatter(
            x=finance['Date'],
            y=finance['AAPL.High'],
            name = 'AAPL.High'
        ),
         go.Scatter(
            x=finance['Date'],
            y=finance['AAPL.Low'],
            name = 'AAPL.Low'
        )
    ]
    
    layout = go.Layout(
        title = '金融股价的变化趋势'
    )
    
    fig = go.Figure(data = data,layout=layout)
    iplot(fig)

    我们来看看绘制的图形

    专注于使用Plotly 进行动态的数据分析,进一步的数据分析,如果大家有兴趣,可以参考一下内容学习:

    欢迎关注,一起交流讨论!

    Python 数据可视化库Plotly 主要知识点如下:

    针对使用Python plotly 绘制的部分图表如下: 

     

     

     

     

     

     

    展开全文
  • Python数据可视化
  • 数据可视化』基于Python的数据可视化工具

    万次阅读 多人点赞 2017-10-27 09:58:13
    如何做Python 的数据可视化? pyecharts 是一个用于生成 Echarts 图表的类库。 Echarts 是百度开源的一个数据可视化 JS 库。主要用于数据可视化。 一、安装 pyecharts 兼容 Python2 和 Python3。目前版本为 ...
  • 数据可视化视频精讲

    千人学习 2018-04-12 17:30:26
    本节人工智能视频涉及: (1)数据可视化的基本处理流程 (2)数据分析及其可视化的选择 (3)数据可视化结果的分析解读 (4)数据可视化的一些实际案例
  • 本篇文章翻译自数据可视化入门教程 数据可视化(Data Visualization)和信息可视化(Infographics)是两个相近的专业领域名词。 狭义上的数据可视化指的是数据用统计图表方式呈现,而信息可视化则是将非数字的信息...
  • 【项目实战】数据爬虫 + 数据清洗 + 数据可视化

    万次阅读 多人点赞 2020-05-11 10:37:08
    自己亲手全手打了一套系统的代码,帮助朋友完成设计,做了贵阳市几个区的房屋价格爬取以及数据清洗和可视化操作,代码细细道来: 上图镇楼,接下来细说。 一:数据挖掘 我选用了链家网做数据爬取场所(不得不唠叨...
  • Python数据可视化库Seaborn

    千人学习 2019-05-20 15:45:24
    Python数据可视化库Seaborn,通过学习本教程,可以快速掌握Seaborn可视化操作。本案例中结合泰坦尼克号,鸢尾花数据,国际航班飞行数据 Python数据可视化库Seaborn,通过学习本教程,可以快速掌握Seaborn可视化操作...
  • 数据可视化概览

    万次阅读 2017-12-07 12:08:07
    科学可视化(Scientific Visualization)、 信息可视化(Information Visualization)和可视分析学(Visual Analytics)三个...而将这三个分支整合在一起形成的新学科 “数据可视化”,这是可视化研究领域的新起点。
  • 基于Python的数据可视化杨凯利[1];山美娟[2]【期刊名称】《《现代信息科技》》【年(卷),期】2019(000)005【摘要】在大数据快速发展的今天,Python丰富的工具包在科学计算、文件处理、数据可视化等领域越来越凸显其...
  • 大屏数据可视化模板

    万次阅读 多人点赞 2019-04-30 17:20:52
    在开发大屏数据可视化项目时,除了各类报表的开发外,大屏的风格设计也是一项十分重要且耗时的工作。 本文推荐的几款大屏模板,旨在帮助那些有大屏数据可视化开发需求的同学能够快速上手,把更多的时间、精力放在...
  • 数据可视化概述

    千次阅读 2019-08-04 17:25:22
    数据可视化是什么 经典案例 数据可视化价值 数据可视化工具 数据可视化是什么 借助图形化手段,清晰有效传达与沟通信息 信息可视化、科学可视化、可视化分析 经典案例 数据可视化价值 ...
  • 大屏数据可视化设计指南

    万次阅读 2019-01-03 14:25:31
    把相对复杂、抽象的数据通过可视的方式以人们更易理解的形式展示出来的一系列手段叫做数据可视化数据可视化是为了更形象地表达数据内在的信息和规律,促进数据信息的传播和应用。 在当前新技术支持下,数据可视化...
  • 独立的数据毫无意义,能...使用数据可视化工具进行数据可视化分析非常简单,经过简单的配置,使用者只需在B/S端简单拖拽目标数据及相关维度,即可得到从不同维度分析的结果,提升数据可视化程度,帮助决策层做出准...
  • 数据可视化数据可视化分类

    千次阅读 2015-06-01 22:03:10
    数据可视化分为:科学可视化、信息可视化,可视化分析学这三个主要分支。  科学可视化,处理科学数据,面向科学和工程领域的科学可视化,研究带有空间坐标和几何信息的三维空间测量数据、计算模拟数据和医疗影像...
  • 数据可视化都有一个共同的目的,那就是准确而高效、精简而全面地传递信息和知识。可视化能将不可见的数据现象转化为可见的图形符号,能将错综复杂、看起来没法解释和关联的数据,建立起联系和关联,发现规律和特征,...
  • Python数据可视化库 在数据分析中最好展示数据的方式就是形象地绘制对应的图像,让人能够更好地理解数据。什么样的数据、什么样的场景用什么样的图表都是有一定的规定的。(这个以后写一篇博客来记录一下。当然我...
  • python pyecharts地理数据可视化 绘制地理图表

    千次阅读 多人点赞 2020-08-20 07:53:15
    介绍了Pyecharts及其安装,然后利用pyecharts实现世界地图数据可视化,国家地图数据可视化(涟漪散点图,动态轨迹图),省市地图数据可视化(包括绘制热力图,添加地址、经纬度信息,地理数据可视化在地图上)。
  • python数据爬取及数据可视化分析

    千次阅读 多人点赞 2021-01-06 21:54:47
    本博客是一篇集数据爬取,存储为excel表格,将数据可视化为一体的博文,数据爬取采用request等方法,数据可视化会使用图表进行展示,有改进的地方还请大家多多指教。 目录电影网站数据分析及可视化研究数据爬取环境...
  • 数据可视化是什么? 数据图形可视化,就是用富有色彩、图形的形式来表现数据,让人一眼望去就能概览数据,让数据更直观,让审查数据的工作更人性化。 为什么要用视觉图形来表现数据? 因为数据是无形的,而目前...
  • 数据可视化的意义是帮助人更好的分析数据,信息的质量很大程度上依赖于其表达方式。对数字罗列所组成的数据中所包含的意义进行分析,使分析结果可视化。 其实数据可视化的本质就是视觉对话。数据可视化将技术与艺术...
  • 22个免费的数据可视化和分析工具推荐 &nbsp;&nbsp;本文总结推荐22个免费的数据可视化和分析工具。列表如下: 数据清理(Data cleaning) &nbsp;&nbsp;当你分析和可视化数据前,常需要“清理”...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,640
精华内容 35,856
关键字:

数据可视化