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

在数据科学的庞大世界中,无数的库和工具可以增强工作效率并提升分析成效。本文重点介绍了适用于数据分析的有用 sql 函数,强调了 cross join、sum() over、row_number、coalesce、group_concat、s

在数据科学的庞大世界中,无数的库和工具可以增强工作效率并提升分析成效。本文重点介绍了适用于数据分析的有用 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 功能可以帮助您以更用户友好的形式进行解释。 

数据聚合而不丢失细节

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

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

但是,当您尝试通过 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 图,可用于数据分布发现和检查因素对的“正态性”

以上就是数据科学家的实用技巧和窍门的详细内容,更多请关注叮当号网其它相关文章!

文章来自互联网,只做分享使用。发布者:叮当号,转转请注明出处:https://www.dingdanghao.com/article/514834.html

(0)
上一篇 2024-05-23 14:00
下一篇 2024-05-23 14:40

相关推荐

联系我们

在线咨询: QQ交谈

邮件:442814395@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信公众号