数据可视化和程序日志
一.数据可视化
1.数据可视化简介
echarts简介: 是百度开源的数据可视化工具
echarts特点: 良好的交互性, 精巧的图表设计
pyecharts模块: echarts的python版本
2.准备web服务器
# 1.导包
from fastapi import FastAPI
from fastapi import Response
import uvicorn
# 2.创建fastapi对象
app = FastAPI()
# 3.处理web数据(请求和响应)
@app.get('/') # 自动跳转首页 http://127.0.0.1:8081/
def show():
with open('source/html/index.html','rb') as f:
body = f.read()
return Response(content=body)
@app.get('/{html_path}') # 跳转指定页面
def show(html_path):
with open(f'source/html/{html_path}','rb') as f:
body = f.read()
return Response(content=body)
@app.get('/images/{img_path}') # 跳转指定图片
def show(img_path):
with open(f'source/images/{img_path}','rb') as f:
body = f.read()
return Response(content=body)
# 4.启动服务器
uvicorn.run(app,host='127.0.0.1',port=8081)
3.爬取gdp数据
import re
import requests
# 1.准备有效的url
url = 'http://127.0.0.1:8081/gdp.html'
# 2.发送请求,接收响应对象
res = requests.get(url)
# 3.处理响应数据
html_str = res.content.decode()
gdp_data = re.findall('<a href=""><font>(.*?)</font></a>.*?¥(.*?)亿元',html_str,re.S)
print(gdp_data)
# 4.数据可视化
4.制作饼图
知识点:
制作饼图步骤:
1.导包
2.创建饼图对象
3.给饼图设置宽高
4.给饼图添加数据
5.生成饼图页面
默认生成页面:
import re
import requests
from pyecharts.charts import Pie
from pyecharts import options as opts
# 1.准备有效的url
url = 'http://127.0.0.1:8081/gdp.html'
# 2.发送请求,接收响应对象
res = requests.get(url)
# 3.处理响应数据
html_str = res.content.decode()
gdp_data = re.findall('<a href=""><font>(.*?)</font></a>.*?¥(.*?)亿元',html_str,re.S)
print(gdp_data[:10])
# 4.数据可视化
# 4.1 创建饼图对象 参数名: init_opts 参数值: 配置选项设置宽和高
pie = Pie(init_opts=opts.InitOpts(width='1200px',height='600px'))
# 4.2 给饼图对象添加数据
# add函数: 参数1: 数据名 参数2: 数据 参数3: 数据显示固定百分比格式
pie.add(
'gdp数据',
gdp_data[:10],
label_opts=opts.LabelOpts(formatter='{b}:{d}%')
)
# 4.3 给饼图对象添加标题
# set_global_opts函数: 参数名: title_opts 参数值: 配置选项设置大标题和子标题
pie.set_global_opts(title_opts=opts.TitleOpts(title='2022年GDP排名',subtitle='斌子制作'))
# 4.4 生成饼图页面 注意: 没有指定文件名,默认生成文件render.html
pie.render()
指定生成页面:
import re
import requests
# 1.导包
from pyecharts.charts import Pie
from pyecharts import options as opts
# 定义爬取gdp数据的函数
def get_gdp():
# 1.准备有效的url
url = 'http://127.0.0.1:8081/gdp.html'
# 2.发送请求,接收响应对象
res = requests.get(url)
# 3.处理响应数据
html_str = res.content.decode()
gdp_data = re.findall('<a href=""><font>(.*?)</font></a>.*?¥(.*?)亿元', html_str, re.S)
return gdp_data
# 2. 创建饼图对象 参数名: init_opts 参数值: 配置选项设置宽和高
pie = Pie(init_opts=opts.InitOpts(width='1200px',height='600px'))
# 3. 给饼图对象添加数据
# 调用获取gdp数据的函数
gdp_data = get_gdp()
# add函数: 参数1: 数据名 参数2: 数据 参数3: 数据显示固定百分比格式
pie.add(
'gdp数据',
gdp_data[:10],
label_opts=opts.LabelOpts(formatter='{b}:{d}%')
)
# 4. 给饼图对象设置标题
# set_global_opts函数: 参数名: title_opts 参数值: 配置选项设置大标题和子标题
pie.set_global_opts(title_opts=opts.TitleOpts(title='2022年GDP排名',subtitle='斌子制作'))
# 5. 生成饼图页面 注意: 没有指定文件名,默认生成文件render.html
pie.render('myrender.html')
二.程序日志
1.日志简介
知识点:
程序日志作用: 记录程序在执行中的一些关键信息
程序日志好处: 1.方便了解程序运行情况 2.方便检查bug 3.方便了解用户喜好等
python中日志: logging模块
日志等级:
调试:DEBUG
信息:INFO
警告:WARNING
错误:ERROR
危险:CRITICAL
优先级: DEBUG<INFO<WARNING<ERROR<CRITICAL
默认等级: WARNING
示例:
import logging
logging.debug('调试等级信息') # 控制台默认没有打印
logging.info('信息等级信息') # 控制台默认没有打印
# 默认等级: WARNNIG WARNNIG和WARNNIG以上的日志信息会打印到控制台
logging.warning('警告等级信息')
logging.error('错误等级信息')
logging.critical('危险等级信息')
2.设置日志等级
知识点:
logging.basicConfig(
level=logging.等级名
)
示例:
import logging
# 设置日志等级
logging.basicConfig(
level=logging.DEBUG
)
# 由于设置了日志等级为DEBUG,所以所有信息都打印到控制台了
logging.debug('调试等级信息')
logging.info('信息等级信息')
logging.warning('警告等级信息')
logging.error('错误等级信息')
logging.critical('危险等级信息')
3.格式化输出日志
知识点:
格式化输出日志:
format 表示日志的输出格式, 参数说明:
%(levelname)s: 打印日志级别名称
%(filename)s: 打印当前执行程序名
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(message)s: 打印日志信息
使用格式:
logging.basicConfig(
format='%(filename)s的%(lineno)d行,%(levelname)s:%(message)s,%(asctime)s'
)
示例:
import logging
# 设置日志等级,格式化
logging.basicConfig(
level=logging.DEBUG,
format='%(filename)s,%(lineno)d,%(levelname)s,%(message)s,%(asctime)s'
)
# 由于设置了日志等级为DEBUG,所以所有信息都打印到控制台了
logging.debug('调试等级信息')
logging.info('信息等级信息')
logging.warning('警告等级信息')
logging.error('错误等级信息')
logging.critical('危险等级信息')
4.保存日志到本地
知识点:
日志保存到本地: 默认是a模式追加,想覆盖改成w模式
使用格式:
logging.basicConfig(
filename='日志名',
filemode='模式'
)
示例:
import logging
# 设置日志等级,格式化,保存到本地
logging.basicConfig(
level=logging.DEBUG,
format='%(filename)s的%(lineno)d行,%(levelname)s:%(message)s,%(asctime)s ',
filename='log.txt',
filemode='w'
)
# 由于设置了日志等级为DEBUG,所以所有信息都打印到控制台了
logging.debug('调试等级信息')
logging.info('信息等级信息')
logging.warning('警告等级信息')
logging.error('错误等级信息')
logging.critical('危险等级信息')
5.日志版本的web服务器
示例:
# 1.导包
import logging
from fastapi import FastAPI
from fastapi import Response
import uvicorn
# 5.设置日志等级,格式化,保存到本地
logging.basicConfig(
level=logging.DEBUG,
format='%(filename)s的%(lineno)d行,%(levelname)s:%(message)s,%(asctime)s ',
filename='web服务器日志.txt',
filemode='w'
)
# 2.创建fastapi对象
app = FastAPI()
# 3.处理web数据(请求和响应)
@app.get('/') # 自动跳转首页 http://127.0.0.1:8081/
def show():
logging.info('用户访问了首页')
with open('source/html/index.html','rb') as f:
body = f.read()
return Response(content=body)
@app.get('/{html_path}') # 跳转指定页面
def show(html_path):
logging.info(f'用户访问了{html_path}页面')
with open(f'source/html/{html_path}','rb') as f:
body = f.read()
return Response(content=body)
@app.get('/images/{img_path}') # 跳转指定图片
def show(img_path):
logging.info(f'用户访问了{img_path}图片')
with open(f'source/images/{img_path}','rb') as f:
body = f.read()
return Response(content=body)
# 4.启动服务器
uvicorn.run(app,host='127.0.0.1',port=8089)
结果:
自动生成web服务器日志.txt
proactor_events.py的623行,DEBUG:Using proactor: IocpProactor,2022-07-23 12:18:20,972
server.py的75行,INFO:Started server process [2656],2022-07-23 12:18:21,005
on.py的45行,INFO:Waiting for application startup.,2022-07-23 12:18:21,005
on.py的59行,INFO:Application startup complete.,2022-07-23 12:18:21,006
server.py的206行,INFO:Uvicorn running on http://127.0.0.1:8089 (Press CTRL+C to quit),2022-07-23 12:18:21,008
09_日志版本的web服务器.py的20行,INFO:用户访问了首页,2022-07-23 12:18:25,714
09_日志版本的web服务器.py的34行,INFO:用户访问了0.jpg图片,2022-07-23 12:18:25,769
09_日志版本的web服务器.py的34行,INFO:用户访问了1.jpg图片,2022-07-23 12:18:25,772
09_日志版本的web服务器.py的34行,INFO:用户访问了3.jpg图片,2022-07-23 12:18:25,778
09_日志版本的web服务器.py的34行,INFO:用户访问了4.jpg图片,2022-07-23 12:18:25,792
09_日志版本的web服务器.py的34行,INFO:用户访问了2.jpg图片,2022-07-23 12:18:25,792
09_日志版本的web服务器.py的34行,INFO:用户访问了5.jpg图片,2022-07-23 12:18:25,795
09_日志版本的web服务器.py的34行,INFO:用户访问了6.jpg图片,2022-07-23 12:18:25,879
server.py的252行,INFO:Shutting down,2022-07-23 12:18:38,473
on.py的64行,INFO:Waiting for application shutdown.,2022-07-23 12:18:38,582
on.py的75行,INFO:Application shutdown complete.,2022-07-23 12:18:38,583
server.py的85行,INFO:Finished server process [2656],2022-07-23 12:18:38,583
三.数据埋点(了解这个概念即可)
网络爬虫: 从别人产品中采集数据
数据埋点: 从自己的产品中采集用户数据
什么是数据埋点?
数据埋点就是数据采集的一种方式,根据特定业务场景,采集用户的喜好等信息
举例:
推荐功能, 关键字搜索,点赞,转发,关注
数据埋点方式:
标签:logging,14,html,可视化,等级,import,日志,opts,入门 From: https://www.cnblogs.com/nanguyhz/p/16800135.html代码埋点: 通过代码记录用户的行为,方便对用户进行分析(开发人员协助)
可视化埋点: 通过第三方工具,配置和记录用户的部分行为数据(业务人员自己处理)
无埋点(全埋点): 通过第三方工具,配置和记录用户的全部行为数据(业务人员自己处理)