主頁 > 資料庫 > 資料分析-python

資料分析-python

2022-03-05 08:09:07 資料庫

資料分析

參考python資料分析與挖掘實戰-張良均著

資料探索

資料質量分析

  • 缺失值分析
  • 例外值分析
  • 一致性分析
  • 利用箱線圖檢驗例外值,可以看出資料的分布范圍大致情況,和1/4值、1/2值、3/4值得情況,
    image
    代碼:
# -*- coding: utf-8 -*-
import pandas as pd
catering_sale = '../data/catering_sale.xls'  # 餐飲資料
data = https://www.cnblogs.com/hjk-airl/archive/2022/03/04/pd.read_excel(catering_sale, index_col = u'日期')  # 讀取資料,指定“日期”列為索引列
print(data.describe())

import matplotlib.pyplot as plt  # 匯入影像庫
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False  # 用來正常顯示負號

plt.figure()  # 建立影像
p = data.boxplot(return_type='dict')  # 畫箱線圖,直接使用DataFrame的方法
x = p['fliers'][0].get_xdata()  #  'flies'即為例外值的標簽
y = p['fliers'][0].get_ydata()
y.sort()  # 從小到大排序,該方法直接改變原物件
'''
用annotate添加注釋
其中有些相近的點,注解會出現重疊,難以看清,需要一些技巧來控制
以下引數都是經過除錯的,需要具體問題具體除錯,
'''
for i in range(len(x)):
    if i>0:
        plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))
    else:
        plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))

plt.show()  # 展示箱線圖

資料預處理階段

資料清洗:

  • 缺失值處理

    • 3種方式:
      1.洗掉該行資料,
      2.資料插補(均值/中位數/眾數插補、使用固定值、最近臨插補、回歸方法、插值法(拉格朗日插值法)參考地址:https://www.cnblogs.com/hjk-airl/p/15766870.html),
      3.不處理
  • 例外值處理

    • 常用方法
      • 洗掉含有例外值的資料
      • 視為缺失值
      • 平均值修正
      • 不處理

資料變換

  • 簡單函式板換(開方、平方、取對數、差分)
  • 規范化
    • 最大最小規范化image
    • 零-均值規范化image *σ原始資料標準差,
    • 小數定標規范化image

資料規范化代碼

# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
datafile = '../data/normalization_data.xls'  # 引數初始化
data = https://www.cnblogs.com/hjk-airl/archive/2022/03/04/pd.read_excel(datafile, header = None)  # 讀取資料
print(data)

(data - data.min()) / (data.max() - data.min())  # 最小-最大規范化
(data - data.mean()) / data.std()  # 零-均值規范化
data / 10 ** np.ceil(np.log10(data.abs().max()))  # 小數定標規范化

資料屬性規約

  • 常用方法:決策樹歸納、主成分分析
    主成分分析PCA代碼主要作用降維
#主成分分析 降維
import pandas as pd

#引數初始化
inputfile = '../data/principal_component.xls'
outputfile = '../tmp/dimention_reducted.xls' #降維后的資料
data = https://www.cnblogs.com/hjk-airl/archive/2022/03/04/pd.read_excel(inputfile, header = None) #讀入資料

from sklearn.decomposition import PCA
a = 4
pca = PCA()#降低到的4維度 
PCA(copy=True,n_components=None,whiten=False)#copy=Ture不改變原始資料
pca.fit(data)#訓練
low_d = pca.transform(data)##降低他的維度
print(pca.components_) #回傳模型的各個特征向量
print(low_d)
print(pca.explained_variance_ratio_) #回傳各個成分各自的方差百分比

挖掘建模

分類與預測

-回歸分析、決策樹、人工神經網路、貝葉斯網路、支持向量機
邏輯回歸代碼logistic

# -*- coding: utf-8 -*-

# 代碼5-1

import pandas as pd
from sklearn.linear_model import LogisticRegression as LR
# 引數初始化
filename = '../data/bankloan.xls'
data = https://www.cnblogs.com/hjk-airl/archive/2022/03/04/pd.read_excel(filename)
x = data.iloc[:,:8].values
y = data.iloc[:,8].values

lr = LR(max_iter=5000)  # 建立邏輯回歸模型
lr.fit(x, y)  # 用篩選后的特征資料來訓練模型

print('模型的平均準確度為:%s' % lr.score(x, y))


神經網路分類


  • image
  • image
# -*- coding: utf-8 -*-


import pandas as pd
# 引數初始化
inputfile = '../data/sales_data.xls'
data = https://www.cnblogs.com/hjk-airl/archive/2022/03/04/pd.read_excel(inputfile, index_col ='序號')  # 匯入資料

# 資料是類別標簽,要將它轉換為資料
# 用1來表示“好”“是”“高”這三個屬性,用0來表示“壞”“否”“低”
data[data =https://www.cnblogs.com/hjk-airl/archive/2022/03/04/='好'] = 1
data[data =https://www.cnblogs.com/hjk-airl/archive/2022/03/04/='是'] = 1
data[data =https://www.cnblogs.com/hjk-airl/archive/2022/03/04/='高'] = 1
data[data != 1] = 0
x = data.iloc[:,:3].astype(int)
y = data.iloc[:,3].astype(int)

from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers.core import Dense, Activation

model = Sequential()  # 建立模型
model.add(Dense(input_dim = 3, units = 64))
model.add(Activation('relu'))  # 用relu函式作為激活函式,能夠大幅提供準確度
model.add(Dense(input_dim = 64, units = 1))
model.add(Activation('sigmoid'))  # 由于是0-1輸出,用sigmoid函式作為激活函式

model.compile(loss = 'binary_crossentropy', optimizer = 'adam')
# 編譯模型,由于我們做的是二元分類,所以我們指定損失函式為binary_crossentropy,以及模式為binary
# 另外常見的損失函式還有mean_squared_error、categorical_crossentropy等,請閱讀幫助檔案,
# 求解方法我們指定用adam,還有sgd、rmsprop等可選

model.fit(x, y, epochs = 100, batch_size = 10)  # 訓練模型,學習一千次
yp = model.predict_classes(x).reshape(len(y))  # 分類預測

from cm_plot import *  # 匯入自行撰寫的混淆矩陣可視化函式
cm_plot(y,yp).show()  # 顯示混淆矩陣可視化結果

聚類分析

  • 常用方法:劃分方法(k-means聚類演算法)、層次分析方法
    image

image

# -*- coding: utf-8 -*-

import pandas as pd
# 引數初始化
inputfile = '../data/consumption_data.xls'  # 銷量及其他屬性資料
outputfile = '../tmp/data_type.xls'  # 保存結果的檔案名
k = 3  # 聚類的類別
iteration = 500  # 聚類最大回圈次數
data = https://www.cnblogs.com/hjk-airl/archive/2022/03/04/pd.read_excel(inputfile, index_col ='Id')  # 讀取資料
data_zs = 1.0*(data - data.mean())/data.std()  # 資料標準化

from sklearn.cluster import KMeans
model = KMeans(n_clusters = k, max_iter = iteration,random_state=1234)  # 分為k類,并發數4
model.fit(data_zs)  # 開始聚類

# 簡單列印結果
r1 = pd.Series(model.labels_).value_counts()  # 統計各個類別的數目
print(r1)
r2 = pd.DataFrame(model.cluster_centers_)  # 找出聚類中心
print(r2)
r = pd.concat([r2, r1], axis = 1)  # 橫向連接(0是縱向),得到聚類中心對應的類別下的數目
r.columns = list(data.columns) + ['類別數目']  # 重命名表頭
print(r)

# 詳細輸出原始資料及其類別
r = pd.concat([data, pd.Series(model.labels_, index = data.index)], axis = 1)   # 詳細輸出每個樣本對應的類別
r.columns = list(data.columns) + ['聚類類別']  # 重命名表頭
r.to_excel(outputfile)  # 保存結果
print(r)

def density_plot(data):  # 自定義作圖函式
  import matplotlib.pyplot as plt
  plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標簽
  plt.rcParams['axes.unicode_minus'] = False  # 用來正常顯示負號
  p = data.plot(kind='kde', linewidth = 2, subplots = True, sharex = False)
  [p[i].set_ylabel('密度') for i in range(k)]
  plt.legend()
  return plt

pic_output = '../tmp/pd'  # 概率密度圖檔案名前綴
for i in range(k):
  density_plot(data[r['聚類類別']==i]).savefig('%s%s.png' %(pic_output, i))
  density_plot(data[r['聚類類別'] == i]).show()


from sklearn.manifold import TSNE
tsne = TSNE(random_state=105)
tsne.fit_transform(data_zs)  # 進行資料降維
tsne = pd.DataFrame(tsne.embedding_, index = data_zs.index)  # 轉換資料格式

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False  # 用來正常顯示負號

# 不同類別用不同顏色和樣式繪圖
d = tsne[r['聚類類別'] == 0]
plt.plot(d[0], d[1], 'r.')
d = tsne[r['聚類類別'] == 1]
plt.plot(d[0], d[1], 'go')
d = tsne[r['聚類類別'] == 2]
plt.plot(d[0], d[1], 'b*')
plt.show()


在這里推薦兩個好用的網站

scikit-learn中文社區:https://scikit-learn.org.cn/
包含七種啟發式演算法的代碼庫檔案:https://scikit-opt.github.io/scikit-opt/#/zh/README
第一個
image
第二個
image

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/437948.html

標籤:其他

上一篇:[20220303]oracle如何定位使用library cache mutex 3.txt

下一篇:MySQL多表查詢

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more