極客時間--數據分析課程筆記

數據挖掘的知識清單

數據挖掘的基本流程:

1.商業(yè)理解:數據挖掘不是目的辛慰,我們的目的是更好地幫助業(yè)務超升。所以第一步要從商業(yè)的角度理解項目需求,在這個基礎上九巡,再對數據挖掘的目標進行定義图贸。
2.數據理解:嘗試收集部分數據,然后對數據進行探索冕广,包括數據描述疏日,數據質量驗證等。形成對數據的初步認知佳窑。
3.數據準備:開始手收集數據制恍,并對數據進行清洗,集成等操作神凑,完成數據挖掘前的準備工作净神。
4.模型建立:選擇和應用各種數據挖掘模型,并進行優(yōu)化溉委,以便得到更好的分類結果鹃唯。
5.模型評估:對模型進行評價,并檢查構建模型的每個步驟瓣喊,確認模型是否實現了預定的商業(yè)目標坡慌。
6.上線發(fā)布: 模型的作用是從數據中尋找“金礦”,也就是我們所說的“知識”藻三。獲得的知識要轉化為用戶可以使用的方式洪橘,比如一份報告,或者一個復雜的棵帽,可重復的數據挖掘過程熄求。

數據挖掘十大算法:

分類算法:C4.5 , 樸素貝葉斯(Naive Bayes), SVM, KNN逗概, Adaboost弟晚, Cart

聚類算法:K-Means , EM

關聯分析:Apriori

連接分析:PageRank

數據挖掘的數學原理

1.概率論和數理統計
2.線性代數
3.圖論
4.最優(yōu)化方法

知識清單

Lesson 3:python 基礎語法

就當復習一下。
list 列表
可以用append() 在尾部添加元素。insert()在具體位置插入元素卿城。pop() 刪除尾部的元素(這個其實是把list當做一個棧來使用枚钓,pop()返回最后一個元素,append()相當于push入棧)瑟押。

Tuple元組
不可修改的list

dictionary字典
鍵值對搀捷。多次對同一個key放入value,后面的值會把前面的值沖掉勉耀。刪除字典的元素用pop(key)
查詢值用 get(key),如果不存在指煎,可以用一個默認值,寫作 get(key,default)

set集合
集合 set 和字典 dictory 類似,不過它只是 key 的集合,不存儲 value蹋偏。同樣可以增刪改查便斥,增加使用 add(),
刪除使用remove(),查看某個元素是否在集合里,用 in

注釋
引用
函數 def

numpy

ps.為了使計算更快威始,提高內存和計算資源的使用率枢纠,需要避免采用隱式拷貝,而采用就地操作的方式黎棠。

ndarray 多維數組

在Numpy數組中晋渺,維數稱為秩(rank),一維數組的秩為 1, 二維數組的秩為 2脓斩,等等等木西。
在NumPy中,每一個線性的數組稱為一個軸随静,其實秩就是描述軸的數量八千。

創(chuàng)建數組

import numpy as np
a = np.array([1, 2, 3])
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b[1,1]=10
print a.shape
print b.shape
print a.dtype
print b

結果:

(3L,)
(3L, 3L)
int32
[[ 1  2  3]
 [ 4 10  6]
 [ 7  8  9]]

多重數組,把一個線性數組作為元素燎猛,嵌套起來變成多維數組恋捆。

結構數組:

import numpy as np
persontype = np.dtype({
    'names':['name', 'age', 'chinese', 'math', 'english'],
    'formats':['S32','i', 'i', 'i', 'f']})
peoples = np.array([("ZhangFei",32,75,100, 90),("GuanYu",24,85,96,88.5),
       ("ZhaoYun",28,85,92,96.5),("HuangZhong",29,65,85,100)],
    dtype=persontype)
ages = peoples[:]['age']
chineses = peoples[:]['chinese']
maths = peoples[:]['math']
englishs = peoples[:]['english']
print np.mean(ages)
print np.mean(chineses)
print np.mean(maths)
print np.mean(englishs)

定義了結構以后,就可以通過key進行分片操作了

ufunc 運算

ufunc 是universal function 的縮寫重绷,它能對數組中的每個元素進行函數操作沸停。運算非常快昭卓。

連續(xù)數組的創(chuàng)建

兩種方法:

x1 = np.arange(1,11,2)
x2 = np.linspace(1,9,5)

起到的作用都是一樣的愤钾,創(chuàng)建一個[1,3,5,7,9]的數組。
但是這兩種創(chuàng)建方法是有差異的候醒。
np.arange(初始值能颁,終值,步長)----和內置range()函數一樣,不包括終值火焰。

np.linspace(初始值劲装,終值,元素個數)---創(chuàng)建等差數列一維數組,默認包括終值占业。這個函數會嚴格創(chuàng)建等差數列绒怨,意思是可能會出現浮點數。

x2 = np.linspace(1,9,4)
結果 = [1.         3.66666667 6.33333333 9.        ]

算數運算

用Numpy進行數組的加減乘除谦疾,求n次方和取余數南蹂。
不同數量的數組做運算會報錯。

x1 = np.arange(1,11,2)
x2 = np.linspace(1,9,5)
print np.add(x1, x2)
print np.subtract(x1, x2)
print np.multiply(x1, x2)
print np.divide(x1, x2)
print np.power(x1, x2)
print np.remainder(x1, x2) #取余數

統計函數

1.計算數組/矩陣中的最大值函數 amax(),最小值函數 amin()

import numpy as np
a = np.array([[1,2,3], [4,5,6], [7,8,9]])
print np.amin(a)
print np.amin(a,0)  #這里的0是指的橫軸念恍。
print np.amin(a,1) #這里的1 是指的縱軸六剥。
print np.amax(a)
print np.amax(a,0)
print np.amax(a,1)

2.計算最大值和最小值之差(極差)的函數ptp()

a = np.array([[1,2,3], [4,5,6], [7,8,9]])
print np.ptp(a)
print np.ptp(a,0)
print np.ptp(a,1)

3.數組的百分位數percentile()
返回整個數組的第P個百分位數。如用np.percentile(a,40) 即是數組a的第40%位置的數

a = np.array([[1,2,3], [4,5,6], [7,8,9]])
print np.percentile(a, 50)
print np.percentile(a, 50, axis=0)
print np.percentile(a, 50, axis=1)

4.計算數組的中位數median()峰伙,和平均數mean()

a = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 求中位數
print np.median(a)
print np.median(a, axis=0)
print np.median(a, axis=1)
# 求平均數
print np.mean(a)
print np.mean(a, axis=0)
print np.mean(a, axis=1)

5.統計數組中的加權平均值average()

a = np.array([1,2,3,4])
wts = np.array([1,2,3,4])
print np.average(a)
print np.average(a,weights=wts)

weights 可以傳一個權重進去疗疟。
6.統計數組中的標準差std(),方差var()

a = np.array([1,2,3,4])
print np.std(a)
print np.var(a)

Numpy排序

在Numpy里排序可以使用sort()
sort(a,axis = -1,kind = 'quicksort',order = None)
默認情況使用的是快速排序(quicksort),也有其他排序方法可以指定:合并排序(mergesort),堆排序(heapsort).
axis = -1 為默認的瞳氓,即沿著數組的最后一個軸排序策彤,可以取不同的axis軸,也可以使axis = None 代表將數組扁平化為一個向量進行排序匣摘。
order 字段可以使結構化的數組按照某個字段進行排序店诗。

a = np.array([[4,3,2],[2,4,1]])
print np.sort(a)
print np.sort(a, axis=None)
print np.sort(a, axis=0)  
print np.sort(a, axis=1)  

pandas

pandas 提供dataframe和series兩個核心數據結構。

series:一個定長的字典序列音榜。

說是定長是因為在儲存的時候庞瘸,相當于兩個ndarray,這個和字典結構最大的不同赠叼,因為在字典的結構里擦囊,元素的個數是不固定的。
series的兩個基本屬性: index 和 values梅割。在Series結構中霜第,index默認為0,1,2,,,,也可以自己指定序列,如index = ['a','b','c',,,,,,]

import pandas as pd
c = pd.Series([1,2,3,4,5,6],index = ['a','b','c','d','e','f'])
print(c)

也可以用字典的方式創(chuàng)建Series:

c = pd.Series({'a':1,'b':2,'c':3,'d':4})
print(c)

Dataframe:類似于數據庫表的結構

Dataframe包括了行索引和列索引户辞,我們可以將DataFrame看成是由相同索引的Series組成的字典類型泌类。

import pandas as pd
from pandas import Series, DataFrame
data = {'Chinese': [66, 95, 93, 90,80],'English': [65, 85, 92, 88, 90],'Math': [30, 98, 96, 77, 90]}
df1= DataFrame(data)
df2 = DataFrame(data, index=['ZhangFei', 'GuanYu', 'ZhaoYun', 'HuangZhong', 'DianWei'], columns=['English', 'Math', 'Chinese'])
print (df1)
print (df2)

數據的導入和輸出

可以用pd.read_csv(),pd.read_excel()等read函數進行數據的讀取,用dataframe.to_csv()等函數進行數據的輸出底燎。

import pandas as pd
from pandas import Series, DataFrame
score = DataFrame(pd.read_excel('data.xlsx'))
score.to_excel('data1.xlsx')
print score

數據清洗

用drop()函數可以丟掉特定的行或列

df2 = df2.drop(columns=['Chinese'])

用dataframe.dropna()可以drop掉有空數值的行刃榨。用axis 可以限定drop掉行還是列,axis= 0 是行双仍,axis = 1 是列枢希。

重命名列名:兩種方法:1.可以用dataframe.rename(columns = {'原列名':'新列名'},inplace = True)

去掉重復的值:dataframe.drop_duplicates()只有所有列全部和之前的列一樣才會被drop掉,留下第一個

更改數據格式:

df2['Chinese'].astype('str') 
df2['Chinese'].astype(np.int64) 

刪除數據間的空格

# 刪除左右兩邊空格
df2['Chinese']=df2['Chinese'].map(str.strip)
# 刪除左邊空格
df2['Chinese']=df2['Chinese'].map(str.lstrip)
# 刪除右邊空格
df2['Chinese']=df2['Chinese'].map(str.rstrip)

如果想刪除數據中的某個特殊符號:

df2['Chinese']=df2['Chinese'].str.strip('$')

大小寫轉換:upper(),lower(),title()

查找空值:想看一個dataframe里哪個空格是空值朱沃,用dataframe.isnull()
想看哪一列有空值苞轿,用:dataframe.isnull().any()

用apply()函數對數據進行清洗

1.對name列的數值進行大小寫轉換:

df['name'] = df['name'].apply(str.upper)

2.用apply對dataframe里的數據應用函數

def double_df(x):
           return 2*x
df1[u'語文'] = df1[u'語文'].apply(double_df)

df1[u'語文'] = df1[u'語文'].apply(lambda x:x*2)

也可以定義更復雜的函數茅诱,用axis指定函數應用的行還是列,用args = ()傳入這個函數的其他參數

def plus(df,n,m):
    df['new1'] = (df[u'語文']+df[u'英語']) * m
    df['new2'] = (df[u'語文']+df[u'英語']) * n
    return df
df1 = df1.apply(plus,axis=1,args=(2,3,))

數據統計

Pandas 和NumPy一樣搬卒,都有常用的統計函數瑟俭,如果遇到空值NaN,會自動排除契邀。


統計函數

數據表合并

兩個DataFrame的合并用的是merge()函數,有5種形式:
初始化:

df1 = DataFrame({'name':['ZhangFei', 'GuanYu', 'a', 'b', 'c'], 'data1':range(5)})
df2 = DataFrame({'name':['ZhangFei', 'GuanYu', 'A', 'B', 'C'], 'data2':range(5)})

1.基于指定列進行連接

df3 = pd.merge(df1,df2,on = 'name')

只會留下兩個dataframe里name字段里一樣的數據摆寄,類似于sql的inner join。

2.inner內連接:
inner內連接是merge合并的默認情況坯门。如上

3.left左連接
以第一個dataframe為主的連接微饥,和sql 的left join 類似。
在merge()里面加一個kind = ‘left’ 的參數古戴。

df3 = pd.merge(df1,df2,on = 'name',how='left')

4.right右連接:以第二個DataFrame為主欠橘。

df3 = pd.merge(df1,df2,on = 'name',how='right')

5.outer 外鏈接:相當于兩個DataFrame的并集

df3 = pd.merge(df1,df2,on = 'name',how='outer')

如何用sql方法打開pandas

用pandasql

import pandas as pd
from pandas import DataFrame
from pandasql import sqldf, load_meat, load_births
df1 = DataFrame({'name':['ZhangFei', 'GuanYu', 'a', 'b', 'c'], 'data1':range(5)})
pysqldf = lambda sql: sqldf(sql, globals())
sql = "select * from df1 where name ='ZhangFei'"
print pysqldf(sql)

學數據分析需要掌握的基本概念

Apriori算法:通過分析購物籃中的商品集合,找出商品之間的關聯關系允瞧。利用這種隱性關聯關系简软,商家可以強化這類購買行為。

商業(yè)智能BI述暂,數據倉庫DW,數據挖掘DM三者的關系:
百貨商店用數據預測用戶的購物行為屬于商業(yè)智能BI建炫,他們累計的顧客消費行為習慣會存儲到數據倉庫DW里面畦韭,通過對個體進行消費行為分析總結出來的規(guī)律屬于數據挖掘DM

商業(yè)智能BI:Business Intelligence:
x相比于數據倉庫肛跌,數據挖掘艺配,它是一個更大的概念。商業(yè)智能可以說是基于數據倉庫衍慎,經過了數據挖掘以后转唉,得到商業(yè)價值的過程。所以說數據倉庫是一個金礦稳捆,數據挖掘是煉金術赠法,而商業(yè)報告則是黃金。

數據倉庫DW:Data Warehouse
數據倉庫是BI這個房子的地基乔夯,搭建好數據倉庫這個地基后砖织,才可以進行分析使用,最后產生價值末荐。
數據倉庫可以說是數據庫的升級概念侧纯,數據倉庫的量更龐大,適合數據挖掘和數據分析甲脏。數據庫是數據倉庫的技術眶熬。
數據倉庫將原有的多個數據來源中的數據進行匯總妹笆、整理二得到。數據在進入數據倉庫之前娜氏,必須消除數據中的不一致性晾浴。方便后續(xù)進行數據分析和挖掘。

數據挖掘:Data Mining
在商業(yè)智能BI中經常會用到數據挖掘技術牍白。數據挖掘的核心包括分類脊凰,聚類,預測茂腥,關聯分析等任務狸涌。通過這些煉金術,我們可以從數據倉庫中得到寶藏最岗,比如商業(yè)報告帕胆。

元數據VS數據元

元數據(Metadata):描述其他數據大數據,也稱為中介數據般渡。

數據元(Data Element):最小數據單元懒豹。

數據挖掘的流程:

分類,聚類驯用,預測和關聯分析:
1.分類
通過訓練集得到一個分類模型脸秽,然后這個模型可以對其他數據進行分類。

2.聚類:
聚類就是將數據自動聚類成幾個類別蝴乔,聚到一起的相似度大记餐,不在一起的差異度大。我們往往利用聚類來做數據劃分薇正。

3.預測:
顧名思義片酝,就是通過當前和歷史數據來預測未來趨勢,它可以更好的幫助我們識別機遇和風險挖腰。

4.關聯分析:
就是發(fā)現數據中的關聯規(guī)則雕沿,它被廣泛的應用在購物籃分析,或事物數據分析中猴仑。

數據挖掘的過程

數據挖掘的過程

用戶畫像:

用戶畫像的準則:“都是誰审轮?”“從哪來?”“要去哪宁脊?”


用戶畫像建模
為什么要設計唯一標識:

用戶唯一標識是整個用戶畫像的核心断国。可以使用戶名榆苞,手機號稳衬,郵箱,設備號坐漏,cookieID等薄疚。

其次碧信,給用戶打標簽:

用戶/消費/行為/標簽
可以從這4個維度來進行標簽劃分:
1.用戶標簽:包括性別、年齡街夭、地域砰碴、收入、學歷板丽、職業(yè)等呈枉。這些包括了用戶的基礎屬性。
2.消費標簽:消費習慣埃碱、購買意向猖辫、是否對促銷敏感。這些統計分析用戶的消費習慣砚殿。
3.行為標簽:時間段啃憎、頻次、時長似炎、訪問路徑辛萍。這些是通過分析用戶行為,來得到他們使用APP的習慣羡藐。
4.內容分析:對用戶平時瀏覽的內容贩毕,尤其是停留時長、瀏覽次數多的內容進行分析传睹,分析出用戶對哪些內容感興趣亏较,比如帮非,金融,娛樂兑宇,教育启上,體育邢隧,時尚,科技等冈在。

用戶畫像是現實世界中的用戶的數學建模倒慧。我們正是將海量的數據進行標簽化,來得到進準的用戶畫像包券。

用戶畫像的業(yè)務價值:獲客纫谅,粘客和留客。
1.獲客:如何進行拉新溅固,通過更精準的營銷獲取客戶付秕。
2.粘客:個性化推薦,搜索排序侍郭,場景運營等询吴。
3.留客:流失率預測掠河,分析關鍵節(jié)點降低流失率。

如果按照數據流處理的階段來劃分用戶畫像建模的過程猛计,可以分為數據層唠摹,算法層和業(yè)務層。
數據層是指的用戶消費行為里的標簽奉瘤。我們可以打上“事實標簽”勾拉,作為數據客觀的記錄。
算法層指的是透過這些行為算出的用戶建模盗温。我們可以打上“模型標簽”藕赞,作為用戶畫像的分類標識。
業(yè)務層指的是獲客肌访,粘客找默,留客的手段。我們可以打上“預測標簽”吼驶,作為業(yè)務關聯的結果惩激。

所以這個標簽化的流程,就是通過數據層的“事實標簽”蟹演,在算法層進行計算风钻,打上“模型標簽”的分類結果,最后指導業(yè)務層酒请,得出“預測標簽”骡技。

標簽化

數據采集

四大數據源:開放數據源,爬蟲抓取羞反,傳感器和日志采集布朦。

開放數據源:各大公司,政府機構昼窗。
爬蟲:python..

數據清洗

數據質量的準則:“完全合一“
完整性:單條數據是否存在空值是趴,統計的字段是否完善。
全面性:
合法性:數據的類型澄惊,內容唆途,大小的合法性。
唯一性:是否存在重復記錄掸驱。

完整性:
1.填充缺失值:刪除肛搬,均值,高頻值

df['age'].fillna(df['age'].mean(), inplace = True)  #均值
age_most = df['age'].value_counts().index[0]
df['age'].fillna(age_most,inplace = True)

2.刪除缺失行

df.dropna(how = 'all',inplace = True)

全面性:
列單位不統一:

# 獲取 weight 數據列中單位為 lbs 的數據
rows_with_lbs = df['weight'].str.contains('lbs').fillna(False)
print df[rows_with_lbs]
# 將 lbs 轉換為 kgs, 2.2lbs=1kgs
for i,lbs_row in df[rows_with_lbs].iterrows():
    # 截取從頭開始到倒數第三個字符之前毕贼,即去掉 lbs温赔。
    weight = int(float(lbs_row['weight'][:-3])/2.2)
    df.at[i,'weight'] = '{}kgs'.format(weight) 

合理性:
含有非ASCII碼的值

# 刪除非 ASCII 字符
df['first_name'].replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)
df['last_name'].replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)

唯一性:
一個列有多個參數:

# 切分名字,刪除源數據列
df[['first_name','last_name']] = df['name'].str.split(expand=True)
df.drop('name', axis=1, inplace=True)

重復數據:

# 刪除重復數據行
df.drop_duplicates(['first_name','last_name'],inplace=True)

數據集成

數據集成的兩種架構:ETL 和 ELT

ETL :Extract 帅刀, Transform 让腹, Load
在數據源提取數據后先進行轉換远剩,最后將轉換后的結果寫入目的地。
ELT: Extract , Load 骇窍, Transform
在數據源提取數據后先導入目的地瓜晤,然后利用數據庫的聚合分析能力或者外部計算框架如spark來完成轉換的步驟。

數據變換

數據變化在數據分析中的角色:
在數據變換前腹纳,我們需要先對字段進行篩選痢掠,然后對數據進行探索和相關性分析,接著是選擇算法模型(這里暫時不需要進行計算)嘲恍,然后針對算法模型對數據的需求進行數據變換足画,從而完成數據挖掘前的準備工作。
數據變換是數據準備的重要環(huán)節(jié)佃牛,它同數據平滑淹辞、數據聚集、數據概化和規(guī)范化等方式將數據轉換為適用于數據挖掘的形式俘侠。
1.數據平滑:去除數據中的噪聲象缀,將連續(xù)數據離散化。這里可以使用分箱爷速,聚類和回歸的方式進行數據平滑央星。
2.數據聚集:對數據進行匯總,在sql里面有一些聚類函數惫东,如MAX()反饋某個字段的最大值莉给,SUM()返回某個字段的數值總和。
3.數據概化:將數據由較低的概念抽象為較高的概念廉沮,減少數據復雜度颓遏,即用更高的概念替代更低的概念。比如上海滞时,杭州州泊,深圳等可以概化為中國。
4.數據規(guī)范化:使屬性數據按比例縮放漂洋,這樣就將原來的值映射到一個新的特定區(qū)域中。重用的方法有最小--最大規(guī)范化力喷,Z-score規(guī)范化刽漂,按小數定標規(guī)范化等。
5.屬性構造:構造出新的數據并添加到屬性集中弟孟。這里會用到特征工程的知識贝咙,因為通過屬性和屬性的連接構造新的屬性,其實就是特征工程拂募。

數據規(guī)范化的集中方法

1.Min-max 規(guī)范化(其實就是極差規(guī)范化)
將原始數據變化到【0,1】空間中庭猩,
公式為:新數值= (原數-最小值)/(最大值-最小值)

2.Z-Score規(guī)范化
假設A與B的考試成績都是80分窟她,A的考卷滿分是100分(及格60分),B的考卷滿分是500分(及格300分)蔼水。雖然兩個人都考了80分震糖,但A的80分和B的80分代表完全不同的含義。
如何用相同的標準來比較A與B的成績呢趴腋?Z-Score就可以解決這個問題吊说。
公式:新數值= (原數值-均值)/標準差
假設 A 所在的班級平均分為 80,標準差為 10优炬。B 所在的班級平均分為 400颁井,標準差為 100。那么 A 的新數值 =(80-80)/10=0蠢护,B 的新數值 =(80-400)/100=-3.2
那么在Z-Score標準下雅宾,A的成績比B的好
Z-Score算法簡單,不受數據量影響葵硕,結果易于比較眉抬,但是需要整體數據的均值和方差,而且結果只能用于比較贬芥,沒有實際意義吐辙。

3.小數定標規(guī)范化
小數定標規(guī)范化就是通過移動小數點的位置來進行規(guī)范化。小數點移動多少位取決于屬性A的取值中的最大絕對值蘸劈。
舉個例子昏苏,比如屬性 A 的取值范圍是 -999 到 88,那么最大絕對值為 999威沫,小數點就會移動 3 位贤惯,即新數值 = 原數值 /1000。那么 A 的取值范圍就被規(guī)范化為 -0.999 到 0.088棒掠。

python的SciKit_Learn 庫的使用孵构。

SciKit_Learn 庫是python的重要機器學習庫,它幫助我們封裝了大量的機器學習算法烟很,比如分類颈墅、聚類、回歸雾袱、降維等恤筛。此外,它還包含了數據變換模塊

數據可視化

數據可視化的視圖都有哪些芹橡?


可視化類型

數據可視化的工具

商業(yè)智能分析:tableau毒坛, PowerBi

python數據可視化

可視化視圖都有哪些?

1.比較:比較數據間各類別的關系,或者是它們隨著時間的變化趨勢煎殷,比如折線圖屯伞;

2.聯系:查看兩個或兩個以上變量之間的關系,比如散點圖豪直;

3.構成:每個部分占整體的百分比劣摇,或者是隨著時間的百分比變化,比如餅圖顶伞;

4.分布:關注單個變量饵撑,或者多個變量的分布情況,比如直方圖唆貌。

引入matplot包滑潘,Seaborn包:

import matplot.pyplot as plt
import seaborn as sns 

散點圖(scatter plot):
plt.scatter(x,y,marker = None)
x,y 是坐標,marker代表了符號的標記锨咙。比如 x , >, o 等语卤。

sns.jointplot(x,y,data = None, kind = 'scatter')

折線圖:折線圖可以用來表示數據隨著時間變化的趨勢。

plt.plot(x,y) 要提前把數據按照x軸的大小進行排序酪刀。

sns.lineplot(x,y,data = None)其中x,y是data中的下標粹舵,data是我們要傳入的數據,一般是DataFrame 類型骂倘。

直方圖:
plt.hist(x,bins = 10)
參數x 是一維數組,bins代表直方圖中箱子的數量眼滤,默認為10

sns.distplot(x, bins = 10,kde = True)
參數x 是一維數組,bins是箱子的數量,kde代表顯示核密度估計历涝,默認是True 诅需。核密度估計是通過核函數幫我們來估計概率密度的方法。(就是畫出的直方圖有沒有連續(xù)曲線)

條形圖:
plt.bar(x,height)
x代表x軸的位置序列荧库,height 是y軸的數值序列堰塌,也就是柱子的高度。

sns.barplot(x = None, y = None,data = None)
參數data為Dataframe類型分衫,x,y 是其中的變量

箱線圖:由五個數值點組成场刑,幫助我們分析數據的差異性,離散程度和異常值等

plt.boxplot(x,lables = None)
x代表要繪制箱線圖的數據蚪战,lables是缺省值牵现,可以為箱線圖添加標簽

sns.boxplot(x = None, y = None, data = None)
參數data為DataFrame , x和y是其中的變量。

餅圖:
顯示每個部分大小和總和之間的比例
plt.pie(x, lables = None)
x代表餅圖的數據邀桑,lables 添加標簽

熱力圖(heat map):
是一種矩陣表示方法施籍,矩陣中的元素值用顏色來表示。
是一種非常直觀的多元變量分析方法概漱。

sns.heatmap(data)
用Seaborn自帶的數據集flights來試驗

import matplotlib.pyplot as plt
import seaborn as sns
# 數據準備
flights = sns.load_dataset("flights")
data=flights.pivot('year','month','passengers')
# 用 Seaborn 畫熱力圖
sns.heatmap(data)
plt.show()

蜘蛛圖:
一種顯示一對多關系的方法。在蜘蛛圖中喜喂,一個變量相對于另一個變量的顯著性是清晰可見的瓤摧。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.font_manager import FontProperties  
# 數據準備
labels=np.array([u" 推進 ","KDA",u" 生存 ",u" 團戰(zhàn) ",u" 發(fā)育 ",u" 輸出 "])
stats=[83, 61, 95, 67, 76, 88]
# 畫圖數據準備竿裂,角度、狀態(tài)值
angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)
stats=np.concatenate((stats,[stats[0]]))
angles=np.concatenate((angles,[angles[0]]))
# 用 Matplotlib 畫蜘蛛圖
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)   
ax.plot(angles, stats, 'o-', linewidth=2)
ax.fill(angles, stats, alpha=0.25)
# 設置中文字體
font = FontProperties(fname=r"C:\Windows\Fonts\simhei.ttf", size=14)  
ax.set_thetagrids(angles * 180/np.pi, labels, FontProperties=font)
plt.show()

二元變量分布:
如果我們想要看兩個變量之間的關系照弥,就需要用到二元變量分布腻异。當然二元變量分布有多種呈現方式,散點圖就是一種二元變量分布

在Seaborn里这揣,直接使用 sns.jointplot(x, y, data=None, kind) 函數即可悔常。其中用 kind 表示不同的視圖類型:“kind=‘scatter’”代表散點圖,“kind=‘kde’”代表核密度圖给赞,“kind=‘hex’ ”代表 Hexbin 圖机打,它代表的是直方圖的二維模擬。

成對關系:如果想要探索數據集中的多個成對雙變量的分布片迅,可以直接采用 sns.pairplot() 函數残邀。它會同時展示出 DataFrame 中每對變量的關系,另外在對角線上柑蛇,你能看到每個變量自身作為單變量的分布情況芥挣。
ps.用pandas的scatter_matrix也是相同的效果

import matplotlib.pyplot as plt
import seaborn as sns
# 數據準備
iris = sns.load_dataset('iris')
# 用 Seaborn 畫成對關系
sns.pairplot(iris)
plt.show()
數據可視化

axis= 0 是跨行(其實就是按列)
axis= 1 是跨列(其實就是按行)

決策樹

決策樹的工作原理:

決策樹基本上就是把我們以前的經驗總結出來。我給你準備了一個打籃球的訓練集耻台。如果我們要出門打籃球空免,一般會根據“天氣”、“溫度”盆耽、“濕度”蹋砚、“刮風”這幾個條件來判斷,最后得到結果:去打籃球征字?還是不去都弹?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市匙姜,隨后出現的幾起案子畅厢,更是在濱河造成了極大的恐慌,老刑警劉巖氮昧,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件框杜,死亡現場離奇詭異,居然都是意外死亡袖肥,警方通過查閱死者的電腦和手機咪辱,發(fā)現死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椎组,“玉大人油狂,你說我怎么就攤上這事。” “怎么了专筷?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵弱贼,是天一觀的道長。 經常有香客問我磷蛹,道長吮旅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任味咳,我火速辦了婚禮庇勃,結果婚禮上,老公的妹妹穿的比我還像新娘槽驶。我一直安慰自己责嚷,他們只是感情好,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布捺檬。 她就那樣靜靜地躺著再层,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堡纬。 梳的紋絲不亂的頭發(fā)上聂受,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音烤镐,去河邊找鬼蛋济。 笑死,一個胖子當著我的面吹牛炮叶,可吹牛的內容都是我干的碗旅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镜悉,長吁一口氣:“原來是場噩夢啊……” “哼祟辟!你這毒婦竟也來了?” 一聲冷哼從身側響起侣肄,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤旧困,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后稼锅,有當地人在樹林里發(fā)現了一具尸體吼具,經...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年矩距,在試婚紗的時候發(fā)現自己被綠了拗盒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锥债,死狀恐怖陡蝇,靈堂內的尸體忽然破棺而出痊臭,到底是詐尸還是另有隱情,我是刑警寧澤毅整,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布趣兄,位于F島的核電站,受9級特大地震影響悼嫉,放射性物質發(fā)生泄漏。R本人自食惡果不足惜拼窥,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一戏蔑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鲁纠,春花似錦总棵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捍壤,卻和暖如春骤视,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹃觉。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工专酗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盗扇。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓祷肯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疗隶。 傳聞我的和親對象是個殘疾皇子佑笋,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內容