问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

如何使用Python工具分析风险数据

发布网友 发布时间:2022-04-26 21:37

我来回答

1个回答

热心网友 时间:2022-05-05 16:16

1、引入工具–加载数据分析包
启动IPython notebook,加载运行环境:
%matplotlib inline
import pandas as pd
from datetime import timedelta, datetime
import matplotlib.pyplot as plt
import numpy as np
2、数据准备
俗话说: 巧妇难为无米之炊。小安分析的数据主要是用户使用代理IP访问日志记录信息,要分析的原始数据以CSV的形式存储。这里首先要介绍到pandas.read_csv这个常用的方法,它将数据读入DataFrame
analysis_data = pd.read_csv('./honeypot_data.csv')
对的, 一行代码就可以将全部数据读到一个二维的表结构DataFrame变量,感觉很简单有木有啊!!!当然了用Pandas提供的IO工具你也可以将大文件分块读取,再此小安测试了一下性能,完整加载约21530000万条数据也大概只需要90秒左右,性能还是相当不错。
3、数据管窥
一般来讲,分析数据之前我们首先要对数据有一个大体上的了解,比如数据总量有多少,数据有哪些变量,数据变量的分布情况,数据重复情况,数据缺失情况,数据中异常值初步观测等等。下面小安带小伙伴们一起来管窥管窥这些数据。
使用shape方法查看数据行数及列数
analysis_data.shape
Out: (21524530, 22) #这是有22个维度,共计21524530条数据记的DataFrame
使用head()方法默认查看前5行数据,另外还有tail()方法是默认查看后5行,当然可以输入参数来查看自定义行数
analysis_data.head(10)
这里可以了解到我们数据记录有用户使用代理IP日期,代理header信息,代理访问域名,代理方法,源ip以及蜜罐节点信息等等。在此小安一定一定要告诉你,小安每次做数据分析时必定使用的方法–describe方法。pandas的describe()函数能对数据进行快速统计汇总:
对于数值类型数据,它会计算出每个变量: 总个数,平均值,最大值,最小值,标准差,50%分位数等等;
非数值类型数据,该方法会给出变量的: 非空值数量、unique数量(等同于数据库中distinct方法)、最大频数变量和最大频数。
由head()方法我们可以发现数据中包含了数值变量、非数值变量,我们首先可以利用dtypes方法查看DataFrame中各列的数据类型,用select_dtypes方法将数据按数据类型进行分类。然后,利用describe方法返回的统计值对数据有个初步的了解:
df.select_dtypes(include=['O']).describe()
df.select_dtypes(include=['float64']).describe()
简单的观察上面变量每一维度统计结果,我们可以了解到大家获取代理数据的长度平均1670个字节左右。同时,也能发现字段scanossubfp,scanscan_mode等存在空值等等信息。这样我们能对数据整体上有了一个大概了解。
4、数据清洗
由于源数据通常包含一些空值甚至空列,会影响数据分析的时间和效率,在预览了数据摘要后,需要对这些无效数据进行处理。
一般来说,移除一些空值数据可以使用dropna方法, 当你使用该方法后,检查时发现 dropna() 之后几乎移除了所有行的数据,一查Pandas用户手册,原来不加参数的情况下, dropna() 会移除所有包含空值的行。
如果你只想移除全部为空值的列,需要加上 axis 和 how 两个参数:
analysis_data.dropna(axis=1, how='all')
另外,也可以通过dropna的参数subset移除指定列为空的数据,和设置thresh值取移除每非None数据个数小于thresh的行。
analysis_data.dropna(subset=['proxy_host', 'srcip'])
#移除proxy_host字段或srcip字段没有值的行
analysis_data.dropna(thresh=10)
#移除所有行字段中有值属性小于10的行
5、统计分析
再对数据中的一些信息有了初步了解过后,原始数据有22个变量。从分析目的出发,我将从原始数据中挑选出局部变量进行分析。这里就要给大家介绍pandas的数据切片方法loc。
loc([startrowindex:endrowindex,[‘timestampe’, ‘proxy_host’, ‘srcip’]])是pandas重要的切片方法,逗号前面是对行进行切片;逗号后的为列切片,也就是挑选要分析的变量。
如下,我这里选出日期,host和源IP字段——
analysis_data = analysis_data.loc([:, [‘timestampe’,'proxy_host','srcip']])
首先让我们来看看蜜罐代理每日使用数据量,我们将数据按日统计,了解每日数据量PV,并将结果画出趋势图。
daily_proxy_data = analysis_data[analysis_data.mole=='proxy']
daily_proxy_visited_count = daily_proxy_data.timestamp.value_counts().sort_index()
daily_proxy_visited_count.plot()
对数据列的丢弃,除无效值和需求规定之外,一些表自身的冗余列也需要在这个环节清理,比如说DataFrame中的index号、类型描述等,通过对这些数据的丢弃,从而生成新的数据,能使数据容量得到有效的缩减,进而提高计算效率。
由上图分析可知蜜罐代理使用量在6月5号,19-22号和25号这几天呈爆炸式增长。那么这几天数据有情况,不正常,具体是神马情况,不急,后面小安带大家一起来慢慢揪出来到底是那些人(源ip) 干了什么“坏事”。
进一步分析, 数据有异常后,再让我们来看看每天去重IP数据后量及其增长量。可以按天groupby后通过nunique()方法直接算出来每日去重IP数据量。
daily_proxy_data = analysis_data[analysis_data.mole=='proxy']
daily_proxy_visited_count = daily_proxy_data.groupby(['proxy_host']).srcip.nunique()
daily_proxy_visited_count.plot()
究竟大部分人(源ip)在干神马?干神马?干神马?让我们来看看被访问次数最多host的哪些,即同一个host关联的IP个数,为了方便我们只查看前10名热门host。
先选出host和ip字段,能过groupby方法来group 每个域名(host),再对每个域名的ip访问里unique统计。
host_associate_ip = proxy_data.loc[:, ['proxy_host', 'srcip']]
grouped_host_ip = host_associate_ip.groupby(['proxy_host']).srcip.nunique()
print(grouped_host_ip.sort_values(ascending=False).head(10))
再细细去看大家到底做了啥——查看日志数据发现原来在收集像二手车价格,工人招聘等等信息。从热门host来看,总得来说大家使用代理主要还是获取百度,qq,Google,Bing这类妇孺皆知网站的信息。
下面再让我们来看看是谁用代理IP“干事”最多,也就是看看谁的IP访问不同host的个数最多。
host_associate_ip = proxy_data.loc[:, ['proxy_host', 'srcip']]
grouped_host_ip = host_associate_ip.groupby(['srcip'_host']).proxy_host.nunique()
print(grouped_host_ip.sort_values(ascending=False).head(10))
哦,发现目标IP为123..*.155的小伙子有大量访问记录, 进而查看日志,原来他在大量收集酒店信息。 好了,这样我们就大概能知道谁在干什么了,再让我们来看看他们使用proxy持续时长,谁在长时间里使用proxy。 代码如下——
这里不给大家细说代码了,只给出如下伪代码。
date_ip = analysis_data.loc[:,['timestamp','srcip']]
grouped_date_ip = date_ip.groupby(['timestamp', 'srcip'])
#计算每个源ip(srcip)的访问日期
all_srcip_ration_times = ...
#算出最长连续日期天数
ration_date_cnt = count_date(all_srcip_ration_times)
好了,到此我也就初略的知道那些人做什么,谁用代理时长最长等等问题额。取出ip = 80...38的用户使用代理ip访问数据日志,发现原来这个小伙子在长时间获取搜狐images。
蜜罐在全国各地部署多个节点,再让我们来看看每个源ip扫描蜜罐节点总个数,了解IP扫描节点覆盖率。结果见如下:
# 每个IP扫描的IP扫描节点总个数
node = df[df.mole=='scan']
node = node.loc[:,['srcip','origin_details']]
grouped_node_count = node.groupby(['srcip']).count()
print grouped_node_count.sort_values(['origin_details'], ascending=False).head(10)
由上述两表初步可知,一些结论:如源ip为182...205的用户长时间对蜜罐节点进行扫描,mark危险用户等等。
如何利用python进行数据分析

一、明确目标 在进行数据分析之前,首先需要明确分析的目的和目标。这有助于确定所需的数据集和所需的工具。二、获取数据 Python提供了多种库,如pandas,可以从各种来源获取数据。这些来源可以是CSV文件、数据库、API等。使用pandas库可以轻松读取和处理这些数据。例如,使用pandas的read_csv函数可以轻松读...

ZESTRON表界面分析

在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸等关键领域,还通过高精度仪器如固体表面Zeta电位分析仪等,确保数据准确可靠。这些分析手段对于优化产品配方、改进生产工艺、预防失效问题等具有重要意义,是我们不断提升产品性能与质量的重要工具。表面污染分析包括评估表面上存在的颗粒、残留物或物质。通过利用显微镜、光谱学和色谱法等技术,分析人员可以识别和表征污染物,以确定其成分和来源。这种分析在电子、制药和制造等各个行业中至关重要,以确保产品质量、性能和安全性。了解表面...

Python数据分析实战,使用箱线图识别学生成绩异常值,做原因分析

1. 箱线图基础使用matplotlib的boxplot函数,通过简单的数据导入即可绘制箱线图,图中包括异常值、上限、上四分位数、中位数、下四分位数和下限,这些点提供了数据分布的重要信息。2. 异常值识别箱线图判断异常值的标准是数据点超出上下限,即Q3+1.5(Q3-Q1)或Q1-1.5(Q3-Q1)之外。在实际案例中...

python如何做数据分析

1、数据获取 可以通过SQL查询语句来获取数据库中想要数据。Python已经具有连接sql server、mysql、orcale等主流数据库的接口包,比如pymssql、pymysql、cx_Oracle等。2、数据存储 企业当中的数据存储,通过通过数据库如Mysql来存储与管理,对于非结构化数据的存储可以使用MongoDB等。对于使用Python进行网络抓取的...

用Python分析指数: 10月18日指数高低Z值表。

使用Python代码实现这个工具时,首先需要初始化基础模块,如Pandas、Numpy、Matplotlib和Seaborn等。在数据导入部分,我从UQer处获取了数据,由于数据源的局限性,我将数据下载到本地进行进一步处理。数据集涵盖了约2800多个指数,实际涉及550只指数,从2004年到2017年10月18日的数据,共计约86万条记录。在具...

python数据分析之环境搭建——小白也能看懂的Jupyter Notebook安装与使 ...

1. 新建文档:点击“New”,可选择创建py、txt、folder或terminal。2. 运行Python程序:选择Python3,进入工作界面。通过工具栏进行代码编辑、Markdown文档编写和文档标题的插入。运行程序时,选中单元格并点击运行按钮。保存文档通过“File—Download as”进行。三、Jupyter Notebook快捷键 使用快捷键可提高...

python怎么分析数据

学习不同的算法最好结合相应的应用场景进行分析,有的场景也需要结合多个算法进行分析。另外,通过场景来学习算法的使用会尽快建立画面感。采用Python进行数据分析还需要掌握一系列库的使用,包括Numpy(矩阵运算库)、Scipy(统计运算库)、Matplotpb(绘图库)、pandas(数据集操作)、Sympy(数值运算库)等...

python怎么做数据分析

Scikit-learnScikit-learn是Python的通用机器学习工具包。它的子模块包括分类、回归、聚类、降维、选型、预处理,对于Python成为高效数据科学编程语言起到了关键作用。只需要学习Python入门的知识以及4个数据分析相关的库,就能上手使用Python进行数据分析了。另外如果需要获取外部网站数据的话,还需要学习爬虫。

如何用python进行数据分析

1、Python数据分析流程及学习路径 数据分析的流程概括起来主要是:读写、处理计算、分析建模和可视化四个部分。在不同的步骤中会用到不同的Python工具。每一步的主题也包含众多内容。根据每个部分需要用到的工具,Python数据分析的学习路径如下:相关推荐:《Python入门教程》2、利用Python读写数据 Python读...

MT5获取市场数据:使用 Python 自动化金融数据分析

这个函数在量化金融编程中扮演着至关重要的角色。它通过Python编程接口,无缝对接MT5,使得获取历史数据变得轻而易举。这些数据包含丰富的市场动态,可用于深入的分析,如趋势研究、策略构建和回测,甚至是风险控制。通过自动化这一获取过程,分析人员能够高效地处理海量数据,从而在瞬息万变的金融市场中做出更...

如何使用pycrypt加密工具测试反病毒产品的检测性能

使用pycrypt加密工具测试反病毒产品的检测性能方法如下。1、确保该工具所有的依赖组件已经安装完毕。2、使用命令运行pycrypt:python3pycrypt.py。3、提供Payload文件路径即可。

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
内蒙古大学满洲里学院奖学金和保障 内蒙古自治区关于工伤保险与人身损害赔偿的规定 关于内蒙古惠蒙保,因为意外伤害发生的住院都可以理赔吗? 飞翔石家庄歌词 飘渺之旅之系列书有哪些 我要想知道飘渺之旅系列的所有书籍. 也就是.飘渺尊者旅2之后的书. 《飘渺神之旅》的续集、书名叫什么名字? 《飘邈之旅》后续到底有哪些啊 飘邈之旅、飘渺神之旅、飘渺尊者、飘渺尊... 飘渺之旅之后该看什么? 猪不吃食。没精神 Python 'Series' object has no attribute 'sorted’ python中dateframe中的数据怎么加减 请教一个多层次列的dataframe如何用sort_values排序? python dataframe sort_values排序问题? 怎样根据雨水流量,确定矩形沟的(宽高)大小? 国标法中初期雨水收集池的最大流量是几小时来算的? 在线等! 河流的径流量受哪些因素影响 已知汇水面积是600,重现期是3A,地区随意,暴雨强度怎么算出雨水流量是mm/h呢?? 径流与雨水有什么不同 雨水管流量大概范围 外排雨水总量是雨水设计径流总量还是雨水设计流量? 什么是河流径流量 直径100mm的雨水管每小时流量是多少 雨水设计径流总量公式求助 下雨量是如何计算的? 什么是径流量?有什么作用? 什么是雨水径流 刘彦帝的名字分数能打多少分, 李文帝这个名字怎么样 杨昭帝这个名字好吗 dataframe的index是唯一吗 可可西里南边的沱沱河,万里长江上第一个集镇,是美丽的风景吗? 沱沱河的河流形态 长江源头具体位置在那 长江源头 当曲还是沱沱河 长江源头是什么河? 中国水量最大的河流是什么? 长江的具体资料 我在网上泄露了时辰八字还有照片会不会有事啊? 是什么原因会导致脸上皮肤的下垂? 中学生周记 600字以上 烤生蚝要不要开壳? 为何不把生蚝的壳去掉直接炒,而是连壳一起烤呢? 整只生蚝没开壳,能用烤箱烤吗?会不会爆炸? 不带壳的生蚝肉怎么做好吃 生蚝能不能带壳蒸呢?带壳蒸的话壳上面的东西会有害吗? 同房后10天上厕所出血怎么回事 烤生蚝会自己开壳吗? 性生活后十天能查出是否怀孕吗 同房后十天左右,是怀孕了吗,
  • 焦点

最新推荐

猜你喜欢

热门推荐