Dexplot:建议准备学matplotlib和seaborn的数据可视化新手或者数据可视化爱好者食用

适用于长数据 比如网站用户留言的统计 特色是不用matplotlib 而用pandas导入数据(多为csv格式文件)

而且模块极其轻量 适用于核心的大数据统计分析与可视化展示 可在3个小时内熟练掌握

示例data和源代码在下方的GitHub里 建议在jupyter notebook中运行

https://github.com/gcywcsyxx/Dexplot.Tutorial

总体来说大致能画两种图:

Aggregation:bar line scatter count

Distribution:box violin hist kde

上面是一些图表类型 在seaborn中也都有 如果没见过也没关系 下面会进行代码和图形的演示

1.1下载

pip install dexplot#非常非常小的package 三秒内就能下完#如果已经有jupyter notebook 可忽略这一步
pip install jupyter
jupyter notebook#输入回车后自动弹出浏览器界面

1.2 import(下同)

import dexplot as dxp
import pandas as pd
airbnb = pd.read_csv("airbnb.csv")#用pandas载入数据 这一步是以后导入数据的基础
#此文件需要与jupyter notebook的ipynb文件在同一个文件夹中
airbnb.head()#默认展示前5行 airbub.head(10):展示前10行

​​本教程的用例是一个很多社区的很多住房构成的数据表 上面记载了不同的社区中的不同住房的各种属性(如社区 房子种类 卧室数目 价格 打扫费 分数等等)

我们围绕这些属性来进行分析 来找到数据间的联系 并绘制图表

airbnb.shape#数据大小(行数,列数)
(4581, 12)#4581个住房 一共有12个分类指标

2.1使用说明

Dexplot 提供了少量功能强大的功能,所有功能的工作方式都类似。大多数绘图函数具有以下签名:

dxp.plotting_func(x, y, data, aggfunc, split, row, col, orientation, ...)

  • x- 沿 x 轴的列名称
  • y- 列名称 y 轴
  • data- pandas数据帧
  • aggfunc- pandas聚合函数的字符串,"最小","最大","平均"等...
  • split- 将数据拆分为不同组列名称
  • row- 列名称,用于将数据拆分为不同的子图行
  • col- 列名称,用于将数据拆分为不同的子图列
  • orientation- 垂直 () 或水平 ()。大多数图的默认值为垂直。'v''h'

2.2单一变量的聚类柱状图

2.2.1柱状图

dxp.plotting_func(x, y, data, aggfunc, split, row, col, orientation, ...)
2.1.1
dxp.bar(x='neighborhood', y='price', data=airbnb, aggfunc='median')
#:aggfunc="median"取中位数  aggfunc="mean":取平均数

上图柱状图比较了不同社区房子价格的中位数大小 我们也可以比较其平均数大小 即:aggfunc="mean"

2.1.2折线图、散点图

我们还可以将其画成折线图或者散点图 只需

dxp.line(x='neighborhood', y='price', data=airbnb, aggfunc='median')
dxp.scatter(x='neighborhood', y='price', data=airbnb, aggfunc='median')​​

2.1.3组聚合

无论在设置参数时,您都执行了分组聚合,聚合始终由三个组件组成:aggfunc

  • 分组列 - 此列的唯一值组成独立组(邻域)
  • 聚合列 - 将用单个值(价格)汇总的列
  • 聚合函数 - 返回单个值(中位数)的函数
airbnb.groupby('neighborhood').agg({'price': 'median'})
#只统计特定的参数(price) 减少占用空间

2.1.4

dxp.bar(x='neighborhood', y='response_time', data=airbnb, aggfunc='countna')
#'csv文件中有时出现missing value 即数据丢失 countna':数据丢失个数'percna':数据丢失百分比(percent)

2.1.5 sorting(排序)

dxp.bar(x='neighborhood', y='price', data=airbnb, aggfunc='median', sort_values='asc')

sort_values='asc':升序排序

sort_values="desc" 按照降序排序

None:按照字母顺序

2.1.6 filter 过滤器

dxp.bar(x='neighborhood', y='price', data=airbnb, aggfunc='median',
x_order=['Dupont Circle', 'Edgewood', 'Union Station'])
#x_order=   部分显示内容:【】里是筛选条件

dxp.bar(x='neighborhood', y='price', data=airbnb, aggfunc='median',x_order='top 4')
#“top 4”:只筛选出数量大小排前四名的项目显示

airbnb['neighborhood'].value_counts()
Columbia Heights    773
Union Station       713
Capitol Hill        654
Edgewood            610
Dupont Circle       549
Shaw                514
Brightwood Park     406
Kalorama Heights    362
Name: neighborhood, dtype: int64

2.1.7水平柱状图

dxp.bar(x='price', y='neighborhood', data=airbnb, aggfunc='median', orientation='h', sort_values='desc')# orientation='h':水平显示      

对于折线图也是一样

2.1.8分裂(split)柱状图

dxp.bar(x='neighborhood', y='price', data=airbnb, aggfunc='median', split='superhost')
#split=“某一列标题(通常此列只有10种以内填充样式 方便画图例)”

相当于增加了一个维度
airbnb.pivot_table(index='superhost', columns='neighborhood', values='price', aggfunc='median')

分裂柱状图的表格形式 本质相同
dxp.bar(x='neighborhood', y='price', data=airbnb, aggfunc='median', split='property_type', split_order='bottom 2')
#split_order='bottom 2':只画数数目的两种property_type   top3:只画数目前三名的 起到过滤显示作用

2.1.9 堆积柱状图

dxp.bar(x='neighborhood', y='price', data=airbnb, aggfunc='median', split='superhost', split_order=['Yes', 'No'], stacked=True)
#堆积效果:stack=True     图例和柱子摆放顺序:split_order

2.1.10多个分裂图(升一维col)

dxp.bar(x='neighborhood', y='price', data=airbnb, aggfunc='median', split='superhost', col='property_type')
#col指的是每个subplot的对应种类 col:左右排开 分成若干列

dxp.bar(x='neighborhood', y='price', data=airbnb, aggfunc='median', split='superhost', col='property_type', wrap=2, col_order='desc')
#wrap:如果一行摆放不开 就规定一行最多2个表格 于是wrap=2     按照字母降序排列subplot

dxp.bar(x='neighborhood', y='price', data=airbnb, aggfunc='median',split='superhost', col='property_type', col_order=['House', 'Condominium'])
#col_order=['House', 'Condominium']  :filter 筛选出想看的 其他不展示

dxp.bar(x='neighborhood', y='price', data=airbnb, aggfunc='median', split='superhost', col='property_type', col_order=['House', 'Condominium', 'Apartment'],row='bedrooms', row_order=[1, 2, 3])
#又升了一维:bedrooms

图表是二维的 加上split是三维 一行表格是四维 一个矩阵的表格是五维

维数=变量数,上图的自变量有:neighbor、superhost、property_type、bedrooms

因变量是price。数据分析的本质就是看数据间不同指标之间的关系,来推测未来的走势

2.3分布图(Distribution plots - box, violin, histogram, kde)

2.3.1盒图Box plots

dxp.box(x='price', y='neighborhood', data=airbnb, split='superhost', split_order=['Yes', 'No'],split_order='desc')
#从左到右:最小值,四分之一,中位值,四分之三,最大值

dxp.box(x='price', y='neighborhood', data=airbnb, split='superhost', x_order=[50, 250])
#x_order=[50, 250]  :限定数据的范围(范围外的数据不画,从而排除了偶然误差 确保数据更加集中)

dxp.box(x='neighborhood', y='price', data=airbnb, orientation='v',split='property_type', split_order='top 2')
#orientation='v':垂直过来;split_order='top 2':只取数量排在前两名的parameters

2.3.2小提琴图(Violin plots):反映数据密集处

dxp.violin(x='price', y='neighborhood', data=airbnb, split='superhost', split_order=['Yes', 'No'])

dxp.box(x='price', y='neighborhood', data=airbnb,split='superhost', col='property_type', col_order=['House', 'Condominium', 'Apartment'],row='bedrooms', row_order=[1, 2])
#同上Splitting by rows and columns is possible as well with distribution plots.

2.3.3直方图Histograms

dxp.hist(val='price', data=airbnb)
#val:parameter 默认分成20块 bins=20 

dxp.hist(val='price', data=airbnb, orientation='h', split='superhost', bins=15)
# orientation='h':柱子水平放置;共15个柱子

dxp.hist(val='price', data=airbnb, split='bedrooms', split_order=[1, 2, 3], bins=30, density=True, histtype='step', cumulative=True)
#cumulative=True:累加图   the outline of the bars ('step')

2.3.4 核密度估计图(KDE Plots)

#Two-dimensional KDE's
dxp.kde(x='price', y='cleaning_fee', data=airbnb)

最好玩的、最有价值的当属KDE Plots 直截了当反映两组数据之间的关系
dxp.kde(x='price', y='cleaning_fee', data=airbnb, row='neighborhood', wrap=3)
#四维图 因为现实只有二维 所以用矩阵图表示 数据两两之间的关系

2.3.5 计数图(count plots)

dxp.count(val='neighborhood', data=airbnb)#一般是从大到小

pandas中的经典功能
dxp.count(val='neighborhood', data=airbnb, normalize=True)
#normalize=True :将数字改为占比

2.3.6散点图(scatter)

dxp.scatter(x='longitude', y='latitude', data=airbnb, split='neighborhood', col='bedrooms', col_order=[2, 3])
#轻松实现地图绘制 反映了不同村庄住房的经纬度地理位置关系!

2.3.7已经聚合过得数据可以直接绘制

df = airbnb.pivot_table(index='neighborhood', columns='property_type', values='price', aggfunc='mean')
dxp.bar(data=df, orientation='h')

2.3.8Time series(适用于时序数据库)

stocks=pd.read_csv('../data/stocks10.csv',parse_dates=['date'],index_col='date')
stocks.head()
#自动识别时间(年月日格式自动识别)

dxp.line(data=stocks.head(500))#可广泛应用于金融市场(量化)还有时序数据库(TDengine)

3.1 总结

正如开头所说,dexplot的特点就是轻量化,简单易学,它专注于大数据分析的细分领域,少了花里胡哨的展示方式,只将最核心的分析和可视化功能做到了最简便,减轻了学习成本,提高了工作效率

只是这种小众的package并没有被我们所熟知,在GitHub上的订阅也不超过200。

我翻看了它的源代码,发现每种图表实现功能包的代码数都在200行以内,结构也只有def、for循环、if循环等几种。或许就是这种少即是多、朴实无华的代码架构才提升了程序的运行速度,能迅速处理海量数据,并精确找到内在的联系。

dexplot在GitHub上的库

此外,我还翻看了官网上由作者创作的其他python libraries,发现只有5种,看来只是个人爱好者。而这些libraries,都是对照着已有工具的功能编写,比如Dexplo仿照pandas;Dexplot仿照seaborn和matplotlib的功能等等。这不禁让我想起了国产工业软件的未来。

诚然,外国的matlab功能更全,经过了很长时间的迭代,但是国产软件也具有明显的后发优势。如果我们的每个软件工程师都像这个外国小哥一样,对照matlab的各种的功能,编写出轻量的阉割版开源软件,解决燃眉之急之余,还提升了工作效率,也降低了软件的使用门槛,之后再不断迭代,加入中国特色的功能,并不断推向世界市场。

我看到,Dexplot的GitHub在十几天前进行了改动,说明小哥仍在不断迭代这个小而美的library,希望Dexplot能够像滚雪球一样,越滚越大,功能越来越全。

总的来说,Dexplot模块用百分之二十的代码完成了百分之八十的任务,以至于你可以在3小时内熟练掌握并立即应用到csv文件的海量数据处理中,比如TDengine的自动化测试。

3.2 做了一晚上 ❤求赞求关注❤

c#split方法拆分为数据_Dexplot:基于pandas,比matplotlib更简单的数据可视化和数据分析工具...相关推荐

  1. php获取显示图书数据,php基于dom实现读取图书xml格式数据的方法

    本文实例讲述了php基于dom实现读取图书xml格式数据的方法.分享给大家供大家参考,具体如下: $doc = new DOMDocument(); $doc->load( 'books.xml ...

  2. js中使用split()方法拆分字符串

    js中的split方法,拆分字符串 split介绍 split介绍 格式:要拆分的字符串.split(拆分依据的字符) 例如该文中的例子,拆分人名,电话,地址.该文中用了个文本框,文本框中需要输入的格 ...

  3. python计算csv文件内的数据_Python利用pandas计算多个CSV文件数据值的实例

    功能:扫描当前目录下所有CSV文件并对其中文件进行统计,输出统计值到CSV文件 pip install pandas import pandas as pd import glob,os,sys in ...

  4. python营业数据分析_基于pandas python的美团某商家的评论销售(数据分析)

    数据初步的分析 本文是该系列的第一篇 数据清洗 数据初步的统计 from pyecharts import Bar,Pie import pandas as pd import numpy as np ...

  5. c#split方法拆分为数据_【转载】C#使用Split函数根据特定分隔符分割字符串

    在C#程序开发过程中,很多时候可能需要将字符串根据特定的分割字符分割成字符或者List集合,例如根据逗号将字符串分割为数组,或者根据竖线将字符串分割成数组,C#中提供了Split()函数来快速将字符串 ...

  6. c#split方法拆分为数据_C# 根据分隔符拆分Excel单元格数据

    using Spire.Xls; namespace SplitData_XLS { class Program { static void Main(string[] args) { //创建Wor ...

  7. c#split方法拆分为数据_C#实现字符串按多个字符采用Split方法分割 | 学步园

    using System.Text.RegularExpressions; string str="aaajsbbbjsccc"; string[] sArray=Regex.Sp ...

  8. 基于pandas、matplotlib、pyecharts的人工智能相关职位招聘市场数据分析

    pandas是python中的数据分析库,matplotlib.pyecharts是python中的数据可视化库. 容大教育人工智能班数据分析阶段实战项目:人工智能相关职位数据分析 小组成员:雷坤.韦 ...

  9. python做数据查询系统_[Python实战] 功能简单的数据查询及可视化系统

    前言 数据时代,数据的多源集成和快速检索查询是第一步,配上数据分析及可视化才能算窥得大数据一角. 创建这个项目的主要目的一是对前期工作的一些总结,二是提升自己. 这里简单介绍一下sqlpro这个项目的 ...

最新文章

  1. Java原型设计模式(Prototype)
  2. 笔记本选购:i5轻薄本和i7轻薄本该如何选择?
  3. centos7 network网络服务重启报错failed to start lsb
  4. linux 使用systemctl 设置java进程开机启动,管理springboot开机进程
  5. 终于把结婚照片做成了MTV
  6. php apache 404,如何从PHP显示默认的Apache 404
  7. 苹果官网上架Apple Watch Series 3官翻机:1869元起
  8. 超高薪的机器学习工程师和现在的前后端们有什么不同?
  9. 010.第一个回声服务器可能遇到的问题——connect函数
  10. AsyncTask与Thread+Handler的区别、AsyncTask的使用
  11. bugkuCTF之散乱的密文
  12. FM模型及其在推荐系统中的应用
  13. tyvector在matlab中代表,MATLAB曲线绘制
  14. 走进施耐德电气无锡工厂,见证自动化研发中心开幕
  15. 【完全解析】Lumion 9.0 新功能与改进
  16. 华为又一重磅APP永久下线。网友:太难了……
  17. [蓝桥杯][算法提高VIP]我们的征途是星辰大海
  18. IDEA自带接口测试工具(http client)
  19. 广告行业中那些趣事系列60:详解超好用的无监督关键词提取算法Keybert
  20. a人工智能b大数据c云计算_ABC时代生产工具的是()。A、人工智能B、大数据C、云计算D、物联网...

热门文章

  1. Hive远程模式安装(1.00)
  2. VM虚拟机的配置文件(.vmx)损坏修复
  3. Open***异地机房互连以及负载均衡高可用解决方案
  4. 基于JavaWeb实现就业管理系统
  5. 非平衡数据处理方式与评估
  6. Protocol Buffer序列化协议及应用
  7. c8051单片机注意事项:
  8. 使用NFS启动Tiny4412开发板根文件系统
  9. iOS开发工具篇:cocoaPods 添加第三方库链接报错
  10. 为什么用IP无法访问网站,域名可以访问?