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 图,可用于数据分布发现和检查因素对的“正态性”

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

753

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

636

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

758

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

618

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1262

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

577

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

707

2023.08.11

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

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

精品课程

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

共162课时 | 11.8万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.1万人学习

SQL 教程
SQL 教程

共61课时 | 3.4万人学习

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

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