首页 > 数据库 >Pandas+ SLS SQL:融合灵活性和高性能的数据透视

Pandas+ SLS SQL:融合灵活性和高性能的数据透视

时间:2022-08-17 13:57:46浏览次数:104  
标签:数据分析 数仓 SLS SQL 数据 Pandas

简介: Pandas是一个十分强大的python数据分析工具,也是各种数据建模的标准工具。Pandas擅长处理数字型数据和时间序列数据。Pandas的第一大优势在于,封装了一些复杂的代码实现过程,只需要调用接口就行了,避免了编写大量的代码。Pandas的第二大优势在于灵活性,可以实现自动化批量化处理复杂的逻辑,这些工作是Excel等工具是无法完成的。因而Pandas介于Excel和自主编写程序之间,兼具灵活性和简洁性的数据分析工具。

Pandas是什么

Pandas是一个十分强大的python数据分析工具,也是各种数据建模的标准工具。Pandas擅长处理数字型数据和时间序列数据。Pandas的第一大优势在于,封装了一些复杂的代码实现过程,只需要调用接口就行了,避免了编写大量的代码。Pandas的第二大优势在于灵活性,可以实现自动化批量化处理复杂的逻辑,这些工作是Excel等工具是无法完成的。因而Pandas介于Excel和自主编写程序之间,兼具灵活性和简洁性的数据分析工具。

 

在输入上,Pandas支持读取多种格式的文件,包括csv、orc、xml、json,也支持读取分布式文件系统HDFS,此外还支持通过jdbc协议读取mysql或兼容mysql协议的数仓。输入的数据会转换成内存中的数据结构DataFrame,之后的数据分析就是围绕着DataFrame进行。

 

在输出上,pandas可以实现非常震撼的可视化效果,对接众多赏心悦目的可视化库,可以实现动态数据交互效果。

pandas毕竟是一种python脚本语言,性能上一般,只能处理少量数据,跟现代化的数仓的计算能力差别是比较大的。但是如此灵活的pandas分析,能否和数仓相结合,赋予数仓更灵活的数据分析能力,同时获得大规模数据的分析能力呢?

SQL语言的优势和缺点

 

SQL是目前使用最为广泛的数据分析语言,SQL自从1980年代在IBM研发出来之后,立即成为各种数据分析系统的标准语言。究其原因,SQL是一种声明式语法,用户只需要声明想要的结果,不必指定获取结果的过程。这种方式有两个好处,一方面,如何以最高性能最小代价获得计算结果,需要编写复杂的算法,乃至了解机器的硬件特性,这需要专门的数据库内核工程师才能做到;对于数据分析师而言,这个要求有点过于复杂。因而声明式语法,解放了数据分析师的工作量,降低了数据分析门槛,扩大了SQL的受众。另一方面,没有指定运行过程,则给了数据库内核工程师们更大的自由度去生成最佳的执行计划。这是SQL的优势。

 

SQL的理论基础来自于关系代数,任何一个操作的对象都是关系,任何操作的结果也是一个关系。关系+操作生成一个新的关系。任何时刻,用户都可以看到一个关系实体。这套极强的理论基础,可以让一个SQL语句无限扩展,在任意时刻都能获得一个关系,再附加一个操作,变成另外一个关系。

 

由于SQL是基于关系代数和关系模型,关系模型中的关系这个实体,我们可以把它想象成一个二维的表格包含多行多列,行数无限制,而列数则是有限制的。行数是动态的,可以是0行,也可以是无限行。列数则是静态的,不可变更的,不管有无数据,都是固定的列数输出。静态列的这种方法,也限制了SQL在一些场景的应用。两个典型的场景是矩阵转置或者生成透视表(交叉表)。这两种场景下,列的个数都是动态的。因而SQL需要部分借助于编程才能实现完整的数据分析。

 

SLS SQL的优势

 

 

SQL只是一个语法表现成,是用户和数仓系统交互的语言。而数仓的真正强大之处在于它的内核。SLS日志数仓,采用SQL为语法接口,借助于云原生的分布式架构,可以实现query级别的弹性分析能力,可以实现单次分析千亿条数据的能力。

 

Pandas具备分析灵活性,SLS具备强大的SQL分析能力。两者融合,既能享受SLS强大的SQL分析能力,又能借助Pandas的灵活的数据分析和分析库。那么两者怎么结合呢?

 

Pandas连接SLS 做融合分析

 

Pandas支持jdbc接口读取数据,SLS也支持jdbc协议。因而Pandas可以通过jdbc协议连接SLS。对于分析任务中的比较重的计算,通过SQL传递给SLS计算;对于比较灵活的分析、SQL完成不了的分析,则在Pandas上做二次分析和可视化。例如构建透视表或者交叉表:先通过SQ L完成两个维度的交叉计算,这个过程往往计算量比较大;再通过Pandas完成行列转换,展示成二维表。

 

一个例子:

 

import numpy as np

import pandas as pd

import pymysql

 

# sql 命令

slshost=""

username=""

password=""

dbname=""  # project is database

sql_cmd = "select method,status ,count(1) as pv from access_log group by method, status limit 1000"

con = pymysql.connect(host=slshost, port=10005,user=username, password=password, database=dbname, charset='utf8', use_unicode=True)

data = pd.read_sql(sql_cmd, con)

tab=pd.pivot_table(data,values="pv",index="status",columns="method" )

print(tab)

 

例子中的SQL,分析nginx访问日志,计算method和status两个维度的pv。再调用pandas的pivot_table函数构建透视表。

 

执行结果如下图:

 

本文为阿里云原创内容,未经允许不得转载。

标签:数据分析,数仓,SLS,SQL,数据,Pandas
From: https://www.cnblogs.com/yunqishequ/p/16594906.html

相关文章

  • SQL聚合函数:
    聚合函数:AVG(表达式)返回表达式中所有的平均值。仅用于数字列并自动忽略NULL值。COUNT(表达式)返回表达式中非NULL值的数量。可用于数字和字符列。COUNT(*)返回表中的行......
  • Mysql 简单笔记
    一、保留两位小数1.用于数据的四舍五入,round(x) ,其实就是round(x,0),也就是默认d为0;二、字符串拼接CONCAT()三、判断数量COUNT(IF(stuWorkSta......
  • mysql 之 my.ini 配置
    mysql之my.ini配置 1. max_allowed_packet 配置在mysqld节点下添加,配置MySQL允许的最大数据包大小,下面的500M你可以根据你的项目修改为你自己的值,只要比要导入......
  • sql 查询
    慢查询的原因https://blog.csdn.net/weixin_45393094/article/details/1256669971、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  使用expla......
  • 无法在 DLL“SQLite.Interop.dll”中找到名为“SI7fca2652f71267db”的入口点。
    首先,这个是在操作SQLite数据库,使用System.Data.SQLite包,需要这个文件SQLite.Interop.dll不然会报错在生成项目的时候需要确保有这两个文件夹(可以生成完手动复制,也可以放......
  • PostgreSQL
     使用DELETE语句可以删除数据表里的所有数据。然而,对于包含大量数据的表来说,使用TRUNCATETABLE将更高效。TRUNCATETABLE语句在不扫描表的情况下,删除表里的所......
  • <摘自https://blog.csdn.net/JavaAndLI/article/details/125359786>SQL分页查询的写法
    MySQL的分页实现是使用LIMIT关键字。Oracle的分页是实现主要是基于rownum行号。SQLServer的分页主要使用的关键字是TOP。 具体用法总结如下:本文中的变量名词说明:1,......
  • mysql(一)
    SQL(StructuredQueryLanguage)结构化查询语言全世界所有的结构化数据库都适用分类DDL:数据库定义语言(定义数据库的一些组件表索引视图自增序列...)DML:数据库操......
  • EasyCVR切换为新版本时设备全部离线,用户应该如何正确配置MySQL数据库?
    关于TSINGSEE青犀视频平台数据库切换的操作步骤、迁移数据时遇到的异常等相关技术类文章,我们在博文中分享过很多,感兴趣的用户可以翻阅我们的往期文章进行了解。TSINGSEE青......
  • 【SQL】SQL常见窗口函数整理汇总大全(用到over的场景)
    〇、概述1、常用网站SQL窗口函数:https://blog.csdn.net/liangmengbk/article/details/1242538062、介绍像聚合函数一样对一组数据进行分析并返回结果3、与聚合函数的......