探索性数据分析与Kibana实践

探索性数据分析(EDA)是数据分析中的关键步骤,它帮助最大化洞察力。EDA对于提取重要变量、检测异常值和异常现象至关重要。尽管机器学习中有许多算法,但EDA被认为是理解和推动业务的最关键部分之一。

在各种平台上执行EDA有多种方法,如Python(matplotlib,seaborn)、R(ggplot2),网络上也有许多优秀资源,例如John W. Tukey的《Exploratory Data Analysis》和Roger D. Peng的《Exploratory Data Analysis with R》等。

目录

  • Elasticsearch简介
  • Kibana简介
  • 创建仪表板
  • 索引数据
  • 链接Kibana
  • 制作可视化图表
  • 搜索栏

1. Elasticsearch简介

Elasticsearch是一个开源的、基于RESTful的分布式可扩展搜索引擎。Elasticsearch在处理大量数据(PB级)的简单或复杂查询时速度极快,这得益于其简单的设计和分布式特性。与传统数据库不同,Elasticsearch不受模式、表格的限制,提供了一个分布式、多租户的全文搜索引擎,具有HTTP Web接口和无模式的JSON文档。

安装和初始化非常简单,步骤如下:

  1. 下载并解压Elasticsearch
  2. 切换到Elasticsearch文件夹
  3. 运行bin/elasticsearch(Windows上为bin/elasticsearch.bat)

如果使用默认配置,Elasticsearch实例应在http://localhost:9200/上运行。请保持终端打开,以便实例继续运行。也可以使用nohup模式在后台运行实例。

2. Kibana简介

Kibana是一个基于Elasticsearch构建的开源数据探索和可视化工具,帮助更好地理解数据。它在Elasticsearch集群上索引的内容之上提供可视化功能。用户可以在大量数据上创建条形图、折线图、散点图、饼图和地图。

Kibana的安装和初始化与Elasticsearch类似:

  1. 下载并解压Kibana
  2. 编辑config/Kibana.yml,将elasticsearch.url指向Elasticsearch实例
  3. 切换到Kibana文件夹
  4. 运行bin/Kibana(Windows上为bin/Kibana.bat)

如果使用默认配置,Kibana实例应在http://localhost:5601/上运行。请保持终端打开,以便实例继续运行。也可以使用nohup模式在后台运行实例。

使用ES和Kibana创建仪表板主要有三个步骤。本文将以“贷款预测”实践问题数据为例创建仪表板。请注册该问题以下载数据。有关更多信息,请查看数据字典。

注意:本文将使用Python读取数据并将数据插入Elasticsearch,以便通过Kibana创建可视化图表。

import pandas as pd train_data_path = '../loan_prediction_data/train_u6lujuX_CVtuZ9i.csv' test_data_path = '../loan_prediction_data/test_Y3wMUE5_7gLdaTN.csv' train = pd.read_csv(train_data_path); print(train.shape) test = pd.read_csv(test_data_path); print(test.shape)

(614, 13)(367, 12)

Elasticsearch将数据索引到其内部数据格式,并以类似于JSON对象的基本数据结构存储它们。以下是将数据插入ES的Python代码。请安装pyelasticsearch库,如下所示,以便通过Python进行索引。

注意:代码假设Elasticsearch以默认配置运行。

pip install pyelasticsearch from time import time from pyelasticsearch import ElasticSearch CHUNKSIZE = 100 index_name_train = "loan_prediction_train" doc_type_train = "av-lp_train" index_name_test = "loan_prediction_test" doc_type_test = "av-lp_test" def index_data(data_path, chunksize, index_name, doc_type): f = open(data_path) csvfile = pd.read_csv(f, iterator=True, chunksize=chunksize) es = ElasticSearch('http://localhost:9200/') try: es.delete_index(index_name) except: pass es.create_index(index_name) for i, df in enumerate(csvfile): records = df.where(pd.notnull(df), None).T.to_dict() list_records = [records[it] for it in records] try: es.bulk_index(index_name, doc_type, list_records) except: print("error!, skipping chunk!") pass index_data(train_data_path, CHUNKSIZE, index_name_train, doc_type_train) # 索引训练数据 index_data(test_data_path, CHUNKSIZE, index_name_test, doc_type_test) # 索引测试数据

DELETE /loan_prediction_train [status:404 request:0.010s] DELETE /loan_prediction_test [status:404 request:0.009s]

现在将浏览器指向http://localhost:5601/,进入Management。点击Index Patterns,点击Add new。如果数据索引包含时间戳,请勾选复选框。这里,不勾选。输入用于将数据索引到Elasticsearch的相同索引(例如:loan_prediction_train)。点击创建。重复上述4个步骤,为loan_prediction_test创建。现在Kibana已与Elasticsearch中存在的训练和测试数据链接。

点击Visualize > Create a Visualization > 选择可视化类型 > 选择索引(训练或测试)> 构建。

示例1:选择垂直条形图,选择训练索引以绘制Loan_status分布。选择y轴为计数,x轴为Loan status。保存可视化图表。添加仪表板 > 选择索引 > 添加刚刚保存的可视化图表。看!仪表板已创建。

示例2:点击visualize > Create a visualization > 选择可视化类型 > 选择索引(训练或测试)> 构建。选择垂直条形图,选择训练索引以绘制Married分布。选择y轴为计数,x轴为Married。保存可视化图表。重复上述步骤,为测试索引创建。打开已创建的仪表板。添加这些可视化图表。

示例3:类似地,对于Gender分布。这次将使用饼图。点击visualize > Create a visualization > 选择可视化类型 > 选择索引(训练或测试)> 构建。选择饼图,并选择训练索引以绘制Married分布。选择切片大小为计数,并按Married列拆分切片。保存可视化图表。重复上述步骤,为测试索引创建。打开已创建的仪表板。添加这些可视化图表。

最后,包含所有创建的可视化图表的仪表板看起来像这样!漂亮!不是吗?

现在,让在这里探索更多的Elasticsearch和Kibana,并创建各种可视化图表。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485