整个用户画像(UserProfile)项目中,数据、业务及技术流程图如下所示
文章目录
12-18
1.网站用户数据获取
需要什么样的数据源
数据源从哪里来
网站数据导出为–txt文件
注册的用户有386个
错误
- Pandas读取CSV错误:Error tokenizing data. C error: Expected 1 fields in
line **, saw **
麻了
jyputerlab 上通过csv库进行读取,再遍历,后进行合并:
import pandas as pd
import csv
path = '文件所在位置'
test = pd.DataFrame()
data = csv.reader(open(path, 'r'))
for d in data:
# print(d)
result = pd.DataFrame(d).T
test = pd.concat([test,result])
test = test.reset_index(drop = True)
1.3
- 解读
apache日志
# 1-3211.87.152.44 – - [18/Mar/2005:12:21:42 +0800] “GET / HTTP/1.1″ 200 899 “http://www.baidu.com/” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)”
①访问时间;②用户IP地址;③访问的URL,端口;④请求方法(“GET”、“POST”等);
⑤访问模式;⑥agent,即用户使用的操作系统类型和浏览器软件。
数据源层
RDBMS
关系数据库管理系统(Relational Database Management System:RDBMS)
是指包括相互联系的逻辑组织和存取这些数据的一套程序 (数据库管理系统软件)。关系数据库管理系统就是管理关系数据库,并将数据逻辑组织的系统。
Hive
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
创建表单
数据源
log文件
Users.sql
导出数据:
select * from users;
- 参考
3.4 进度
mysql 启动方式
cmd
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
mysql -u root -p
密码 123456
配置GUI界面 Datagrip
安装配置
最新DataGrip2020.2.x破解版激活码的步骤详解(支持Mac/Windows/Linux)
log 数据分析
一个好用的文献
日志数据的介绍
日志数据通常用纯文本文件记录用户的访问记录。每条日志文件记录的格式通常为
date time/
c-ip/
cs-username/
s-ip/
s-port/
cs-method/
cs-uri-stem
/cs-uri-query
/sc-staus cs(user-agent)。
选取日志挖掘用到的7个数据进行分析,分别为date time(日期时间)、c-ip(用户IP)、s-port(服务器端口)、cs-method(请求方法)、cs-uri-stem(访问的URL)、sc-staus(应答状态)和cs-uri-stem(用户代理)。
我们的数据
解析一下:
- IP地址----113.66.225.30
- 时间—01/Apr/2020:15:10:10
- 请求方式— POST
- 访问页面—AOD_MOD09
- 访问的地址-http://www.satdatafresh.com/precipitation_TRMM.htmlMozilla/5.0
- ‘body_bytes_sent’ 字节数—200
- 浏览器对象–(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
用户画像技术建模
用户画像技术模型分为数据采集、数据预处理、数据挖掘、用户画像和群体画像5个模块。系统总流程如图 1所示。
第1步—数据源获取
通过用linux宝塔下载的的Web日志建立原始数据库。
把数据提取行,导入mysql
第2步—数据预处理
首先通过后缀处理、方法过滤、状态码过滤和冗余处理等方法对日志数据进行清洗。
进而通过日志中IP的识别和操作系统的识别来辨别用户身份的唯一性。
然后使用网络爬虫获取每条URL所对应的网页文本,并对获取的原始文本进行分词、去停用词等预处理操作。
第3步----提取用户的属性特征。
通过改进后的TF-IDF算法计算词特征值,将特征值最高的词作为网页文本的关键词。通过K近邻(K nearest neighbor,KNN)文本分类算法对网页文本进行主题归类。
改进—直接按照分区选取关键词
通过提取用户访问页面后的关键词,获得网页的内容主题,进而作为用户的兴趣属性标签。并根据“性格-主题-关键词”模型对用户的性格进行深度预测,获得用户性格属性标签。结合用户识别,对用户进行画像。拥有外倾性、开放性、宜人性和尽责性的用户将被贴上“优良人格”的性格属性标签,对拥有神经质和不良关键词的用户将被贴上“危险人格”的性格属性标签。例如:
输入:111.192.165.229—[19/Sep/2013:06:06:39+0000]“GET/js/google.jsHTTP/1.1“3040” http://blog.fens.me/?p=2445&preview=true“”Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36”。
输出:ID:111.192.165.229;兴趣属性标签:科技;
找code—
code
互联网日志用户行为分析
3.11
log日志切割
访问的ip
‘113.66.225.30’
访问的时间+ 时区
‘[01/Apr/2020:15:10:01’, ‘+0800]’
访问的URL
GET/index.html
网站的请求协议;
'HTTP/1.1
网站返回状态码;
‘200’,
浏览器信息
"Mozilla/5.0’ ‘(Windows’, ‘NT’, ‘10.0;’, ‘Win64;’ ‘x64)’ ‘AppleWebKit/537.36’ ‘(KHTML,’, ‘like’, ‘Gecko)’ ‘Chrome/80.0.3987.149’ 'Safari/537.36
下载ubuntu
Ubuntu 20.04
问题集锦…
win10 WSL2问题决WslRegisterDistribution failed with error: 0x800701bc
新用户name: chy
密码:123456
cat www.satdatafresh.com.log | head -10
学习 grep、awk
用 / 分割 输出第一部分
统计总行数
wc -l www.satdatafresh.com.log
422216 www.satdatafresh.com.log
统计IP和出现过的次数
cat www.satdatafresh.com.log | awk -F " " '{print $1}' | awk '{cnt[$0]++}END{for(i in cnt){print i,cnt[i]}}' | tee len1.txt
result = open("C:\\Users\\chen\Desktop\\ip-count.xls", 'w', encoding='gbk')
with open("C:\\Users\\chen\\Desktop\\len1.txt") as f:
for line in f.readlines():
line = line.strip(' ')
line = re.split("\s|-", line)
for i in range(0,2):
result.write(line[i])
result.write('\t') # '\t'表示每写入一个元素后,会移动到同行的下一个单元格
result.write("\n") # 换行操作
result.close()
f.close()
结果:
- 一共用14646个ip访问过网页
- 访问1前十名
根据状态码进行请求次数排序
cat www.satdatafresh.com.log | cut -d '"' -f3 | cut -d ' ' -f2 | sort | uniq -c | sort -r
访问最频繁的URL 前十
数据清洗
筛选出 状态码为 200 的 数据
参考: