天天看點

Python資料分析與挖掘實戰

快速了解資料分析與挖掘技術

     1.什麼是資料分析與挖掘技術(概念)

         所謂資料分析,即對已知的資料進行分析,然後提取出一些有價值的資訊,比如統計出平均數、标準差等資訊,資料分析的資料量有時可能不會太大,而資料挖掘,是指對大量的資料進行分析與挖掘,得到一些未知的,有價值的資訊等,比如從網站的使用者或使用者行為資料中挖掘出使用者的潛在需求資訊,進而對網站進行改善。

         資料分析與資料挖掘密不可分,資料挖掘是資料分析的提升。

     2.資料分析與挖掘技術能做什麼事情(概念 )

         資料挖掘技術可以幫助我們更好的發現事務之間的規律,是以,我們可以利用資料挖掘技術實作資料規律的探索、比如發現竊電使用者、發掘使用者潛在需求、實作資訊的個性化推送、發現疾病與症狀設定疾病與藥物之間的規律...等

     3.資料挖掘的過程主要有(怎麼實作)

  1. 定義目标
  2. 擷取資料(常用手段有通過爬蟲采集或者下載下傳一些統計網站釋出的資料,并沒有嚴格的資料把控)
  3. 資料探索(對我們資料的初步的研究,發現資料的特征,就知道我們接下來怎麼處理)
  4. 資料預處理(資料清洗【去掉髒資料】、資料內建【集中】、資料變換【規範化】、資料規約【精簡】)
  5. 挖掘模組化(分類算法、聚類算法、關聯算法、預測算法)
  6. 模型評價與釋出

2.資料分析與挖掘相關子產品簡介與安裝

     1.相關子產品簡介

  1. numpy可以高效處理資料、提供數組支援、很多子產品都依賴他,比如pandas、scipy、matplotlib都依賴他,是以這個子產品是基礎。
  2. pandas在後續用的最多的一個子產品,主要用于進行資料探索和資料分析
  3. matplotlib 作圖子產品,解決可視化問題
  4. scipy 主要進行數值計算,同時支援矩陣運算,并提供了恩多高等資料處理功能,比如積分、傅裡葉變換、微分方程求解等。
  5. statsmodels這個子產品主要用于統計分析
  6. Gensim這子產品主要用于文本挖掘
  7. skearn、keras前者機器學習,後者深度學習

     2.相關子產品的安裝與技巧(建議這樣安裝)

        1.numpy、mkl(下載下傳安裝numpy+mkl) 提取碼:n5ac  (可以自行選擇安裝版本numpy+mkl)

        2.pandas (網絡安裝)

        3.matplotlib (網絡安裝)

        4.scipy(下載下傳安裝,網盤下載下傳建議先下載下傳在安裝)提取碼:i383   網站下載下傳

        5.statsmodels  (網絡安裝)

        6.Gensim(網絡安裝)

     3.相關子產品的基本使用

     1. numpy(數組的運算效率要比清單的運算效率要高,底層運算是不一樣的)

                         1. #建立一維數組          

                             >>> import numpy

                             >>> x = numpy.array(['a','v','b'])  #  建立數組的格式

                             >>> x

                             array(['a', 'v', 'b'], dtype='<U1')    # 傳回對應的元素,和對應的類型,取值按照下标取,如:x[1]  傳回  v

                             #建立二維數組             

                             >>> x = numpy.array([[4,5,6,7],[8,9,7,6],[12,23,34,8]])

                            >>> x

                           array([[ 4,  5,  6,  7],

                                      [ 8,  9,  7,  6],

                                      [12, 23, 34,  8]])   #傳回資料

                      2.排序  sort()     按照上面例子如:x.sort()

                     3.取最大值和最小值     

                       按照上面例子 :取最大值 :x.max()

                                                    取最小值: x.min()

                    4.切片

                       按照上面例子:x[起始下标:最終下标+1]  

  2.pandas使用          

import pandas as pda
'''
Series   index索引未指定按照0開始    行列pandas裡面的一維數組
DataFrame  表格行和列格式  二維數組
'''
a = pda.Series([8.9, 2, 1]) #索引未指定
b = pda.Series([8,9, 2, 1],index=["one", "two", "three", "four"])#指定索引,index必須和資料相對應

#第一種方法
data = pda.DataFrame([[54, 1, 21, 24], [7, 58, 88, 99], [47, 85, 98, 72], [69, 58, 47, 25]]) #預設行列以0開始
data = pda.DataFrame([[54, 1, 21, 24], [7, 58, 88, 99], [47, 85, 98, 72], [69, 58, 47, 25]],columns=['one','two','three','four']) #修改列名,必須跟資料長度一樣
#第二種方法,按照字典建立  (one,two,three)為清單名
data_dict =pda.DataFrame({
    'one':4,         一列一行          
    'two':[6,2,3],   value值是清單為多行,
    'three':list(str(982))
})   #其他行不滿足時,自動補全,如:

》》》   one  two three
    0    4    6     9
    1    4    2     8
    2    4    3     2

b.head()        #頭部資料,預設前五行
b.head(行數)    #自定義取頭部資料幾行
b.tail()       #尾部資料,預設後五行
b.tail(行數)   #自定義取尾部資料幾行
data.sort_values([0],ascending=False) #排序,參數【0】為列名,ascending=False  降序

展示統計情況:
data.describe() #把資料的統計資訊給列印出來
傳回:
          one        two      three       four
count   4.000000   4.000000   4.000000   4.000000  # 元素個數的資訊
mean   44.250000  50.500000  63.500000  55.000000  # 代表的平均數
std    26.474831  35.369478  35.911929  36.905284  # 展示标準差的意思
min     7.000000   1.000000  21.000000  24.000000  # 這一列最小值
25%    37.000000  43.750000  40.500000  24.750000  # 代表每一列,分位數
50%    50.500000  58.000000  67.500000  48.500000  #
75%    57.750000  64.750000  90.500000  78.750000  #
max    69.000000  85.000000  98.000000  99.000000  # 這一列最大值

#資料轉置(将行變成列,将列變成行)
data.T  #轉置行遍列
           

3.matplotlib基礎 折線圖/散點圖 以及繪制子圖    

# 折線圖、散點圖  一般會有 plot子產品繪制
import matplotlib.pylab as pyl
import numpy as npy

# 維數x軸和y軸必須一緻,否者報錯
x = [1, 2, 3, 4, 8]  # x軸
y = [5, 7, 2, 1, 5]  # y軸
pyl.plot(x, y)  # plot(x軸,y軸,展現形式)一般會有兩個或者3個參數,第一個x軸資料,第二是y軸參數,第三是對應展示的形式(如:或者展示為散點圖,設定展示顔色 )
pyl.show()  # 展示折線圖,預設折線圖
pyl.plot(x, y, 'o')  # 字母o是代表散點圖
pyl.show()  # 折線圖如果不注釋,将會和下面的散點圖重疊展示
pyl.plot(x, y, 'c')  # 預設折線圖,換成青色
pyl.plot(x, y, 'oc')  # 修改成散點圖,換成青色,是否是折線圖的參數和顔色的參數疊加在一起
pyl.show()
# 顔色代表
'''
c-cyan--青色
r-red--紅色
m-magente-品紅
g-green-綠色
b-blue-藍色
y-yellow-huangs
k-black-黑色
w-white-白色
'''
# 線條樣式 常用線條
'''
-    直線
--   虛線
-.-. 形式(展示就是-.形式)
:     細小虛線
'''
# pyl.plot(x, y, '--')  # 折線圖修改線條
# 點的樣式
'''
s   方形
h   六角形
H   六角形(跟h有一點差別)
*   星形
x   x形
d   菱形
D   菱形(與d有點差別)
p   五角星
'''
pyl.plot(x, y, "*")  # 加上點的樣式,預設是散點圖
pyl.show()
# 設定标題以及x軸與y軸名稱
pyl.plot(x, y)
x2 = [1, 3, 6, 8, 10, 12, 19]
y2 = [1, 6, 9, 10, 19, 23, 35]
pyl.plot(x2, y2)
pyl.title('show')  # 标題
pyl.xlabel('ages')  # x軸名稱
pyl.ylabel('temp')  # y軸名稱
pyl.xlim(0, 20)  # 設定x軸的範圍
pyl.ylim(1, 40)  # 設定y軸的範圍
pyl.show()  # 使用多圖繪制,在show之前,多次使用plot

随機數的生成
# 前提導入
import numpy as npy

# data = npy.random.random_integers(1, 20, 10)  # 生成整型數值,第一參數,最小值,第二參數:最大數,第三個參數:随機數的個數
# 怎麼生成正太分布的随機數,生成正太分布使用normal子產品
data=npy.random.normal(5.0,2.0,10)  # 均數,西格瑪(越小越陡峭,越大越平緩),個數
print(data)

# 随機數網址 http://www.mamicode.com/info-detail-507676.html
# 直方圖  一般會有hist子產品  繪制
# 直方圖一般統計某一段資料的次數
#正太分布随機
data = npy.random.normal(10.0, 1.0, 10000)
pyl.hist(data)
pyl.show()
#整型随機
data1=npy.random.random_integers(1,25,1000)
pyl.hist(data1)
pyl.show()

# 直方圖的寬度以及上下限
sty = npy.arange(2, 19, 2) #x軸開始和結束值,第三參數是資料範圍條件
pyl.hist(data1,sty,histtype='stepfilled')#第二個參數不叫,顯示預設的,histtype='stepfilled'取消直方圖輪廓
pyl.show()

# 繪制子圖
pyl.subplot(2, 2, 4)  # 參數1代表行,參數2代表列,參數3代表目前區域
pyl.show()
# 繪制兩行一列

pyl.subplot(2, 2, 1)  # 共兩行第一行分兩列第一列
x1 = [1, 2, 3, 4, 5]
y1 = [5, 3, 5, 23, 5]
pyl.plot(x1, y1)

pyl.subplot(2, 2, 2)  # 共兩行第一行分兩列第2列
x2 = [5, 2, 3, 8, 6]
y2 = [7, 9, 12, 12, 3]
pyl.plot(x2, y2)

pyl.subplot(2, 1, 2)  # 共兩行第二行分一列第2行
x3=[5,6,7,10,19,20,29]
y3=[6,2,4,21,5,1,5]
pyl.plot(x3,y3)
pyl.show()