week02
# 數據可視化的發展歷史 作用 格式塔原則
# 數據可視化的流程# 數據分析 指標體系建設 確定一個行業+指標體系+實現報表(power bi python matplotlib seaborn pyecharts echarts)
# 數據分析面試
技術:sql+excel+python+powerbi+spss
業務:理解一個行業,做日報周報月報外加臨時取數,并進行指標異常分析# 課程目標
完成一個BI報表:神策數據
懂業務+會一種BI技術+會指標體系構建+評價體系# power bi快速實現了一個報表
# matplotlib 2周 如何理解這個庫 + 更好的使用
https://blog.csdn.net/m0_38139250/article/details/136796724
# 6-8 周 seaborn庫 如何理解這個庫 + 更好的使用
https://blog.csdn.net/m0_38139250/article/details/137009691
機器學習的流程
有數據集
數據探索EDA 多少條 什么類型 有無缺失值 數據是文本or連續or離散 數據分布情況 特征之間和特征于標簽之間的關系如何
數據特征工程預處理 缺失值填充刪除不管 文本轉換為數字onehot獨熱二進制序列編碼 數字太大進行歸一化 產生新的特征
數據模型選擇 邏輯回歸
模型評估
模型優化 交叉驗證和模型融合
seabron
Seaborn是一個用Python制作統計圖形的庫。它構建在matplotlib之上,并與pandas數據結構緊密集成。
Seaborn幫助您探索和理解您的數據。它的繪圖功能對包含整個數據集的數據框架和數組進行操作,并在內部執行必要的語義映射和統計聚合以生成信息豐富的繪圖。它的面向數據集的聲明性API讓您可以專注于圖表的不同元素的含義,而不是如何繪制它們的細節。
ax=sns.relplot(x=“total_bill”,y=“tip”,hue=“day”,
col=“time”,row=“sex”,data=tips,kind=“line”)
seaborn是做什么的
幫助理解數據 完整數據 內部語義映射 面向數據集的聲明式api 不需要關注如何實現,只要關注要做什么
seaborn模塊設計思想
繪圖函數 有兩個級別 畫布級FacetGrid(大多用這個) 子圖級(如果要和matplotlib的子圖一起做,就用這個)
relplot
分布
分類
雙變量聯合分布于單變量分布圖 joinplot 畫布
雙變量分布圖 pairplot
seaborn基本使用
from matplotlib import pyplot as plt
import matplotlib as mpl
import numpy as np x = np.linspace(0, 2, 100)fig, ax = plt.subplots()
ax.plot(x, x, label='linear')
ax.plot(x, x**2, label='quadratic')
ax.plot(x, x**3, label='cubic')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend()
plt.show()
# Import seaborn
import seaborn as sns# Apply the default theme
sns.set_theme()# Load an example dataset 需要
# tips = sns.load_dataset("tips")
tips = sns.load_dataset("tips",cache=True,data_home=r'.\seaborn-data')# Create a visualization
sns.relplot(data=tips,x="total_bill", y="tip", col="time",hue="smoker", style="smoker", size="size",
)# 畫布級別 通過col和row繪制多個子圖
ax=sns.relplot(x="total_bill",y="tip",hue="day",col="time",row="sex",data=tips,kind="line")
# ax.figure.set_size_inches(5,5)
plt.suptitle("7-指定col和row")# 軸級別
fig,axes=plt.subplots(1,1)
ax = sns.scatterplot(x="total_bill", y="tip",hue="day",style="time",size='size',data=tips,ax=axes)
=============================
seaborn庫使用
導入數據
繪圖:畫布級接口 子圖級接口
關系:x和y都是連續或是x為多個離散值
分類:一個變量為分類的
人口普查的案例
說明了通過seaborn可以有效的幫我們理解數據
作業:
seaborn怎么學習,掌握數據集 鉆石 四重奏
介紹相關、分類、分布、回歸、結構網格繪圖的作用,并描述其中的畫布級(圖形級)別函數 和 軸級函數 是什么,有什么特點,并能說出5個常見的參數以及作用
餐館案例,你是餐館老板,上周收入10000塊,這周8000塊,怎么進行分析,指標拆解,這個數據的變動到底是哪一個細粒度數據應用,按照人貨場,
VIP 3000–1000 散客 1000-1000 外賣6000-6000得出是VIP用戶消費少了,活動針對VIP,
VIP用戶怎么少了 男女 男1000-500 女2000-500 針對與女性VIP進行進一步的拆解
模型
考上研究生
100條 1條 Y
99 N
N 99%
50人
姓名 age 住址 高數 概率論 英語1 2 3 4 計算機網絡 體測 社團數量 競賽 考研成績
XX 20 河南 92 87 80 75 82 65 80 2 3 351
============================
Echarts
百度開源 apache基金會
能做什么 想做得都能做
canvas svg —》zrender 封裝 —>echarts 對zrender 封裝
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!-- <script src=""></script> --><!-- 1.導入echarts.js import --><script src="https://cdn.jsdelivr.net/npm/echarts@5.3.2/dist/echarts.js"></script><title>Document</title>
</head>
<body><!-- 2. 提供一個具有 寬 和 高的 元素 div --><div id="main" style="width: 600px;height: 600px;"> </div><!-- 3. 提供一個script元素 寫js代碼 --><script>// 4. 初始化元素為echarts對象var myid = document.getElementById("main");var myecharts = echarts.init(myid);// 5. 構建一個optionvar option = {// 6. 看官網}// 6. myecharts.setOption(option)myecharts.setOption(option)</script>
</body>
</html>
==============================
目標:前后端異步交互的可視化實現
項目目錄
webapp.py
templates/index.html
static/js/echarts.js
1.寫一個flask 接受 /index請求 返回 index.html頁面
@app.route('/index')
def index():return render_template('index.html')
2.前端 發送異步請求 fetch 發送給后端的一個請求request,后端web框架會接受 flask
<script>fetch("http://127.0.0.1:5000/api_json2").then(res => res.json()).then(function(data) {console.log(data);alert(data['data'][0]["name"]);})
</script>
2.flask 接受前端的請求 進行數據的讀取,封裝為json,返回給前端
dict1 = {"result":"success", "data":[{"name":"北京","value":3245.896},{"name":"上海","value":2789.8}]}
@app.route('/api_json2') # 127.0.0.1:5000/api_json1
def api_json1():return jsonify(dict1)
3.前端在異步請求中獲取響應 response ,解析 把解析后的數據 放在option中的series中
<script>// 4.綁定main 和 echartsdiv1 = document.getElementById("main2")myecharts2 = echarts.init(div1)// 5. 一個optionvar option3={xAxis:{type:'category',data:['a','b','c','d']},yAxis:{type:'value'},series:[{data:[],type:'scatter'},{data:[],type:'pie'}]}// fetch 是 js內置的異步請求函數 請求json的接口fetch('http://127.0.0.1:5000/jsonify2').then(function(response) {// 把請求到響應轉換為jsonreturn response.json();}).then(function(myJson) {// 轉換后的json數據 輸出到控制臺console.log(myJson);console.log(myJson);// 提取json數據中的key對應的value 并且把value賦值給optionoption3.series[0].data = myJson['c']option3.series[1].data = myJson['d']// 6.把option傳遞給myechartsmyecharts2.setOption(option3)});</script>
==============================
echarts做一個前后端交互的可視化大屏
目的完成一個前后端交互的可視化==Echarts5.3.2可視化案例-交互篇
django flask fastapi
1.基于html和css實現頁面布局,包括9個具有寬高的div
2.基于flask提供9個接口 /jsonbar 返回對應json數據
3.前端發生9個異步請求 請求對應的 /json 接口 獲取json數據
4.前端針對獲取到的json數據進行解析
5.把獲取到的數據填入option的series的data中
fetch ajax 功能一樣 都是異步刷新
==================================
報表設計與實現
指標體系 標簽體系 評價體系
1.多個可視化大屏,每個可視化大屏是一個主題域
給銷售人員(銷售額 地區銷售額 人員銷售 銷售訂單 排名 銷售目標)
給財務人員(收入 支出 固定成本 流水 …)
給供應鏈人員(待生產 現有庫存 原材料的缺口 產品庫的數據 …)
給生產人員
給決策人員
給安全風險人員
給質量檢測人員
2.類似excel透視表的交互表格 fine report做后端
1.什么是flex
2.什么是rem flexable.js提供的一個可以隨瀏覽器變化的單位
=========================================
課程目標:懂業務+會一種BI技術+會指標體系構建+評價體系
技術:matplotlib seaborn echarts 數據可視化繪圖
應用:
數據分析報告和行業白皮書:matplotlib seaborn + 特定pyecharts+powerbi+finebi
https://www2.deloitte.com/content/dam/Deloitte/cn/Documents/consumer-business/deloitte-cn-consumer-coffee-industry-whitepaper-2021-210412.pdf
報表系統:WEB+數據開發 echarts 多個可視化大屏
https://cn.bing.com/images/search?q=%e7%a5%9e%e7%ad%96%e6%95%b0%e6%8d%ae&form=HDRSC2&first=1
知道什么樣的圖表達了什么信息,才能正確的使用圖形
https://blog.csdn.net/m0_38139250/article/details/137217930
數據分析報告:
1.先把結論說明下
2.數據定義:關鍵指標 以及 指標定義
3.數據分析方法:對比和趨勢 osm模型和象限模型,swot模型
4.分析過程:圖文表的結合,要有明確結論
5.代碼實現:
數據集加載
數據探索
數據處理
數據分析可視化
數據挖掘