0

0

数据科学家的实用技巧和窍门

betcha

betcha

发布时间:2024-05-23 13:38:07

|

1147人浏览过

|

来源于DZone

原创

在数据科学的庞大世界中,无数的库和工具可以增强工作效率并提升分析成效。本文重点介绍了适用于数据分析的有用 sql 函数,强调了 cross join、sum() over、row_number、coalesce、group_concat、string_concat 等函数的优势。此外,文章探讨了将日志视为数据源而不是信息噪音的价值,并展示了如何利用统计分析和机器学习技术从日志中提取有价值的见解。最后,文章强调了数据聚合在不丢失细节的情况下理解和利用数据集的重要性,并提出了自上而下的分析方法来实现这一目标。

数据科学家的实用技巧和窍门

在数据科学的世界中,有无数的库和工具可以帮助您加快工作速度并提高分析效率。 

作为一名数据分析师和研究员,我开发了处理 TB 级数据的工具,并在经纪和交易领域进行异常研究和分析。在我的职业生涯中,我积累了一些关于如何有效分析大量数据以及解决该领域出现的不常见任务的有用知识。 

在本文中,我将分享一些我用来快速准确地解释数据并从中获得有用见解的技巧和工具。我希望你能找到一些对你的数据研究有用的东西。 

用于数据分析的有用 SQL 函数

我在日常研究工作中进行了大量的数据工程和数据集准备工作,并且收集了一些有用的技巧,这些技巧不是很受欢迎,但可能非常有帮助。 

如今,数据分析师大多使用 Python 框架进行数据操作。然而,可能还有更好、更高效的选择。 

有时,最好“重回校园”,改用一些 SQL 函数。不幸的是,大学里不再广泛学习 SQL——现在 Pandas 已成为默认选项,但是 SQL 有几个优点可以方便你的工作。年轻的数据科学家仍然应该了解和使用 SQL,因为数据库通常比 Python 笔记本拥有更多样的资源。

以下是一些不太流行的SQL 函数,尤其适用于数据准备: 

CROSS JOIN— 用于执行在 Python 中可能很麻烦的行之间的操作。 

SUM() OVER (PARTITION BY .. ORDER BY)可以在不使用 的情况下应用的分组表达式GROUP BY,可用于根据一列或多列的值将结果集划分为多个分区。然后,这些分区可用于执行计算和聚合函数

ROW_NUMBER— 为每一行分配唯一的数字标识符,方便排序、过滤和其他操作,有助于顺序分析

COALESCE— 用于处理 Null 值。此函数按特定顺序从提供的参数列表中计算参数,并始终返回第一个非空值。如果您正在进行多个联合并希望有一个共同的填充列,那么合并会有所帮助。 

GROUP_CONCAT, STRING_CONCAT— 合并传递给它的所有参数的字符串表示形式,并将结果作为新字符串返回。 

日志作为数据源

在我的职业生涯中,我花了很多时间研究日志文件以发现异常情况,并习惯于“在显微镜下”查看这些信息。日志有助于详细了解问题发生时的某个时刻发生了什么 - 但如何以最有效的方式提取该信息?

大多数情况下,日志被视为无用的信息,您必须在其中搜索特定时刻或查找特定事件(或错误)。然后您必须找出到底出了什么问题,并根据您的发现修复错误。 

但是,如果您将日志文件视为数据科学家数据集呢?换个角度看,你会发现日志对于统计分析其实是非常有帮助的。我列出了您可以使用的数据处理功能的一些优点以及它们如何帮助您解释数据。 

通过对日志的统计分析,您可以更好地了解应用程序到底做了什么以及做了多少次。 

您可以实施异常检测分析来找出事件之间的延迟。

通过监督学习,您可能能够确定应用程序是否已经遇到问题。为此,分类类型的监督学习可以派上用场,因为它使用算法将测试数据准确地分配到特定类别中。

监督学习的另一个应用是预测应用程序未来的性能。 

您也许能够对“假设”情景进行建模——然而,这可能相当复杂。 

ACF 函数有助于查找延迟和排队。 

如果您正在查看未知数据,NLP 功能可以帮助您以更用户友好的形式进行解释。 

溪谷软件游戏联运系统加盟版1.1
溪谷软件游戏联运系统加盟版1.1

溪谷科技游戏联运系统加盟版(客户可自行下载程序就能永久免费安装使用)。这套游戏联运系统加盟版包括:PC端、wap端、管理后台、推广系统组成(玩家和渠道数据需要对接接口,溪谷SDK直接对接,其他提供免费接口文档),旨在为想要运营游戏的客户提供一个无成本、零门槛、无需操心技术的的游戏创业系统。

下载

数据聚合而不丢失细节

大数据采用各种聚合技术。这种方法有什么缺点? 

大多数情况下,数据以某种形式标准化,并且具有数据的平面表示或换句话说是关系表示。当您执行聚合时,您的数据会以跳过某些字段和属性的方式进行转换,仅仅是因为它们当时不相关。 

但是,当您尝试通过 ML 或任何其他统计分析工具基于聚合数据建立假设时,您可能需要恢复跳过的详细信息。问题是,您已经从数据集中丢失了它们,您需要从 (a) 开始整个循环,并包含您认为现在可能很重要的字段。

您可以通过以下方法解决问题并节省大量时间:

保留原始数据集以供丰富。

执行“自上而下”分析,这意味着将聚合数据连接到原始数据集以发现异常情况。 

以下是为 ClickHouse、PostgreSQL 和 MySQL 数据库编写的 SQL 查询,您可以使用:

-- create
CREATE TABLE EMPLOYEE (
  empId INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  dept TEXT NOT NULL,
  city TEXT  NULL,
  new_city text  NULL
);
-- insert
INSERT INTO EMPLOYEE VALUES (0001, 'Clark', 'Sales', 'Hamburg', NULL);
INSERT INTO EMPLOYEE VALUES (0002, 'Dave', 'Accounting','Paris', NULL);
INSERT INTO EMPLOYEE VALUES (0003, 'Ava', 'Sales','Tallinn', NULL);
INSERT INTO EMPLOYEE VALUES (0004, 'Ava', 'Sales','Paris', NULL);
INSERT INTO EMPLOYEE VALUES (0005, 'Eva', 'Sales',NULL, 'Madrid');
-- QUERY  MYSQL 
SELECT dept
  , ROW_NUMBER() OVER () as n
, COUNT(DISTINCT city) uniq_cities
, COUNT(DISTINCT coalesce(city, new_city) ) uniq_cities_
, GROUP_CONCAT(CONCAT_WS(';',name, dept,city)  SEPARATOR '\n')
FROM EMPLOYEE
GROUP by dept
--QUERY  Clickhouse 
select dept
      , ROW_NUMBER() OVER () as n
    , uniq(city) uniq_cities
    , uniq(coalesce(city, new_city)) uniq_cities_
    , arrayStringConcat(groupArray(concatWithSeparator(',', toString(tuple(*)))),';') as all_fields
FROM EMPLOYEE
GROUP by dept
--QUERY  PostgreSQL
SELECT dept
        , ROW_NUMBER() OVER () as n
, COUNT(DISTINCT city) uniq_cities
      , COUNT(DISTINCT coalesce(city, new_city) ) uniq_cities_
 , json_agg(ROW_TO_JSON(EMPLOYEE))
FROM EMPLOYEE
GROUP BY dept

或者,如果您使用Pandas,请运行以下代码:

import pandas as pd
data = [
(1, "Clark", "Sales", "Hamburg"),
(2, "Dave", "Accounting", "Riga"),
(3, "Ava", "Sales", "Tallinn"),
(4, "Ava", "Sales", "Paris"),
(5, "Eva", "Sales", "Paris"),
]
df = pd.DataFrame(data)
df.columns = ["empId", "name", "dept", "city"]
df.groupby(["dept"]).agg(uniq_cities=("city", "count")).join(
df.groupby(["dept"]).apply(lambda x: x.to_dict()).rename("all_fields")
)

这将允许您展开数据并检查聚合的详细信息。

数据发现的有效可视化

当我在思考如何提高某个过程的可见性,并从统计分析的角度进行描述时,我总是得出这样的结论:可视化是一种将一些向量以压缩形式表示出来的形式,可以反映多个维度。

所有统计书籍和文章都说,处理数据的第一步是制作样本并尝试制作散点图或某些图表,但如果数据集非常大且包含 100 列或更多列怎么办?在这种情况下,很难显示尽可能多的维度,同时保持它们的信息丰富和相关性。 

使用清晰且易于理解的表示,避免讨论什么意味着什么,而是讨论所表示的实际数据问题。请记住,如果您试图解决一个复杂的问题,总会有多个情节的组合。请遵循以下重要步骤,使您的数据以可视化形式更易于理解:

展示数据集的样子,以便理解“我们正在看什么”

展示您的数据

写一个评论

多年来,我挑选了几种对数据分析非常有用的可视化选项。这些 Python 图表帮助我节省了时间并得出了一些初步结论。

具有不同类别的颜色和大小的散点图

热图或热图的方面网格 

ecdf 和 q2q 图,可用于数据分布发现和检查因素对的“正态性”

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

1068

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

339

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

379

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1967

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

379

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

1519

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

585

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

438

2024.04.29

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

45

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 19.6万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.8万人学习

SQL 教程
SQL 教程

共61课时 | 4.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号