乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      1 python大數(shù)據(jù)挖掘系列之基礎(chǔ)知識(shí)入門

       highoo 2019-03-20

      preface

      Python在大數(shù)據(jù)行業(yè)非?;鸨鼉赡?,as a pythonic,所以也得涉足下大數(shù)據(jù)分析,下面就聊聊它們。

      Python數(shù)據(jù)分析與挖掘技術(shù)概述

      所謂數(shù)據(jù)分析,即對(duì)已知的數(shù)據(jù)進(jìn)行分析,然后提取出一些有價(jià)值的信息,比如統(tǒng)計(jì)平均數(shù),標(biāo)準(zhǔn)差等信息,數(shù)據(jù)分析的數(shù)據(jù)量可能不會(huì)太大,而數(shù)據(jù)挖掘,是指對(duì)大量的數(shù)據(jù)進(jìn)行分析與挖倔,得到一些未知的,有價(jià)值的信息等,比如從網(wǎng)站的用戶和用戶行為中挖掘出用戶的潛在需求信息,從而對(duì)網(wǎng)站進(jìn)行改善等。
      數(shù)據(jù)分析與數(shù)據(jù)挖掘密不可分,數(shù)據(jù)挖掘是對(duì)數(shù)據(jù)分析的提升。數(shù)據(jù)挖掘技術(shù)可以幫助我們更好的發(fā)現(xiàn)事物之間的規(guī)律。所以我們可以利用數(shù)據(jù)挖掘技術(shù)可以幫助我們更好的發(fā)現(xiàn)事物之間的規(guī)律。比如發(fā)掘用戶潛在需求,實(shí)現(xiàn)信息的個(gè)性化推送,發(fā)現(xiàn)疾病與病狀甚至病與藥物之間的規(guī)律等。

      預(yù)先善其事必先利其器

      我們首先聊聊數(shù)據(jù)分析的模塊有哪些:

      1. numpy 高效處理數(shù)據(jù),提供數(shù)組支持,很多模塊都依賴它,比如pandas,scipy,matplotlib都依賴他,所以這個(gè)模塊都是基礎(chǔ)。所以必須先安裝numpy。
      2. pandas 主要用于進(jìn)行數(shù)據(jù)的采集與分析
      3. scipy 主要進(jìn)行數(shù)值計(jì)算。同時(shí)支持矩陣運(yùn)算,并提供了很多高等數(shù)據(jù)處理功能,比如積分,微分方程求樣等。
      4. matplotlib 作圖模塊,結(jié)合其他數(shù)據(jù)分析模塊,解決可視化問題
      5. statsmodels 這個(gè)模塊主要用于統(tǒng)計(jì)分析
      6. Gensim 這個(gè)模塊主要用于文本挖掘
      7. sklearn,keras 前者機(jī)器學(xué)習(xí),后者深度學(xué)習(xí)。

      下面就說說這些模塊的基礎(chǔ)使用。

      numpy模塊安裝與使用

      安裝:
      下載地址是:http://www.lfd./~gohlke/pythonlibs/
      我這里下載的包是1.11.3版本,地址是:http://www.lfd./~gohlke/pythonlibs/f9r7rmd8/numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl
      下載好后,使用pip install "numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl"
      安裝的numpy版本一定要是帶mkl版本的,這樣能夠更好支持numpy

      numpy簡單使用
      import numpy
      
      x=numpy.array([11,22,33,4,5,6,7,])  #創(chuàng)建一維數(shù)組
      x2=numpy.array([['asfas','asdfsdf','dfdf',11],['1iojasd','123',989012],["jhyfsdaeku","jhgsda"]])    #創(chuàng)建二維數(shù)組,注意是([])
      
      x.sort()   #排序,沒有返回值的,修改原處的值,這里等于修改了X
      x.max()    # 最大值,對(duì)二維數(shù)組都管用
      x.min()    # 最小值,對(duì)二維數(shù)組都管用
      x1=x[1:3]   # 取區(qū)間,和python的列表沒有區(qū)別
      生成隨機(jī)數(shù)

      主要使用numpy下的random方法。

      #numpy.random.random_integers(最小值,最大值,個(gè)數(shù))  獲取的是正數(shù)
      data = numpy.random.random_integers(1,20000,30)   #生成整形隨機(jī)數(shù)
      #正態(tài)隨機(jī)數(shù)  numpy.random.normal(均值,偏離值,個(gè)數(shù))  偏離值決定了每個(gè)數(shù)之間的差 ,當(dāng)偏離值大于開始值的時(shí)候,那么會(huì)產(chǎn)生負(fù)數(shù)的。
      data1 = numpy.random.normal(3.2,29.2,10)    # 生成浮點(diǎn)型且是正負(fù)數(shù)的隨機(jī)數(shù)

      pandas

      使用pip install pandas即可

      直接上代碼:
      下面看看pandas輸出的結(jié)果, 這一行的數(shù)字第幾列,第一列的數(shù)字是行數(shù),定位一個(gè)通過第一行,第幾列來定位:

      print(b)
            0     1     2    3    
      0     1     2     3  4.0
      1  sdaf  dsaf  18hd  NaN
      2  1463  None  None  NaN

      常用方法如下:

      import pandas
      a=pandas.Series([1,2,3,34,])   # 等于一維數(shù)組
      b=pandas.DataFrame([[1,2,3,4,],["sdaf","dsaf","18hd"],[1463]])   # 二維數(shù)組
      print(b.head())  # 默認(rèn)取頭部前5行,可以看源碼得知
      print(b.head(2))  # 直接傳入?yún)?shù),如我寫的那樣
      print(b.tail())   # 默認(rèn)取尾部前后5行
      print(b.tail(1))     # 直接傳入?yún)?shù),如我寫的那樣

      下面看看pandas對(duì)數(shù)據(jù)的統(tǒng)計(jì),下面就說說每一行的信息

      # print(b.describe())   # 顯示統(tǒng)計(jì)數(shù)據(jù)信息
               3      # 3表示這個(gè)二維數(shù)組總共多少個(gè)元素
      count  1.0      # 總數(shù)
      mean   4.0      # 平均數(shù)
      std    NaN      # 標(biāo)準(zhǔn)數(shù)
      min    4.0      # 最小數(shù)
      25%    4.0      # 分位數(shù)
      50%    4.0      # 分位數(shù)
      75%    4.0      # 分位數(shù)
      max    4.0      # 最大值

      轉(zhuǎn)置功能:把行數(shù)轉(zhuǎn)換為列數(shù),把列數(shù)轉(zhuǎn)換為行數(shù),如下所示:

      print(b.T)   # 轉(zhuǎn)置
         0     1     2   
      0  1  sdaf  1463
      1  2  dsaf  None
      2  3  18hd  None
      3  4   NaN   NaN
      通過pandas導(dǎo)入數(shù)據(jù)

      pandas支持多種輸入格式,我這里就簡單羅列日常生活最常用的幾種,對(duì)于更多的輸入方式可以查看源碼后者官網(wǎng)。

      CSV文件

      csv文件導(dǎo)入后顯示輸出的話,是按照csv文件默認(rèn)的行輸出的,有多少列就輸出多少列,比如我有五列數(shù)據(jù),那么它就在prinit輸出結(jié)果的時(shí)候,就顯示五列

      csv_data = pandas.read_csv('F:\Learnning\CSDN-python大數(shù)據(jù)\hexun.csv')
      print(csv_data)
      excel表格

      依賴于xlrd模塊,請安裝它。
      老樣子,原滋原味的輸出顯示excel本來的結(jié)果,只不過在每一行的開頭加上了一個(gè)行數(shù)

      excel_data = pandas.read_excel('F:\Learnning\CSDN-python大數(shù)據(jù)\cxla.xls')
      print(excel_data)
      讀取SQL

      依賴于PyMySQL,所以需要安裝它。pandas把sql作為輸入的時(shí)候,需要制定兩個(gè)參數(shù),第一個(gè)是sql語句,第二個(gè)是sql連接實(shí)例。

      conn=pymysql.connect(host="127.0.0.1",user="root",passwd="root",db="test")
      sql="select * from fortest"
      e=pda.read_sql(sql,conn)
      讀取HTML

      依賴于lxml模塊,請安裝它。
      對(duì)于HTTPS的網(wǎng)頁,依賴于BeautifulSoup4,html5lib模塊。
      讀取HTML只會(huì)讀取HTML里的表格,也就是只讀取<table>標(biāo)簽包裹的內(nèi)容.

      html_data = pandas.read_html('F:\Learnning\CSDN-python大數(shù)據(jù)\shitman.html')   # 讀取本地html文件。
      html_from_online = pandas.read_html('https://book.douban.com/')  # 讀取互聯(lián)網(wǎng)的html文件
      print(html_data)
      print('html_from_online')

      顯示的是時(shí)候是通過python的列表展示,同時(shí)添加了行與列的標(biāo)識(shí)

      讀取txt文件

      輸出顯示的時(shí)候同時(shí)添加了行與列的標(biāo)識(shí)

      text_data = pandas.read_table('F:\Learnning\CSDN-python大數(shù)據(jù)\dforsay.txt')
      print(text_data)

      scipy

      安裝方法是先下載whl格式文件,然后通過pip install “包名” 安裝。whl包下載地址是:http://www.lfd./~gohlke/pythonlibs/f9r7rmd8/scipy-0.18.1-cp35-cp35m-win_amd64.whl

      matplotlib 數(shù)據(jù)可視化分析

      我們安裝這個(gè)模塊直接使用pip install即可。不需要提前下載whl后通過 pip install安裝。

      下面請看代碼:

      from matplotlib import  pylab
      import numpy
      # 下面2行定義X軸,Y軸
      x=[1,2,3,4,8]
      y=[1,2,3,4,8]
      # plot的方法是這樣使用(x軸數(shù)據(jù),y軸數(shù)據(jù),展現(xiàn)形式)
      pylab.plot(x,y)   # 先把x,y軸的信息塞入pylab里面,再調(diào)用show方法來畫圖
      pylab.show()    # 這一步開始畫圖,默認(rèn)是至線圖

      畫出的圖是這樣的:
      image

      下面說說修改圖的樣式

      關(guān)于圖形類型,有下面幾種:
      1. 直線圖(默認(rèn))
      2. - 直線
      3. -- 虛線
      4. -. -.形式
      5. : 細(xì)小虛線
      關(guān)于顏色,有下面幾種:
      1. c-青色
      2. r-紅色
      3. m-品紅
      4. g-綠色
      5. b-藍(lán)色
      6. y-黃色
      7. k-黑色
      8. w-白色
      關(guān)于形狀,有下面幾種:
      1. s 方形
      2. * 星形
      3. p 五角形

      我們還可以對(duì)圖稍作修改,添加一些樣式,下面修改圓點(diǎn)圖為紅色的點(diǎn),代碼如下:

      pylab.plot(x,y,'or')   # 添加O表示畫散點(diǎn)圖,r表示red
      pylab.show()

      image

      我們還可以畫虛線圖,代碼如下所示:

      pylab.plot(x,y,'r:')
      pylab.show()

      還可以給圖添加上標(biāo)題,x,y軸的標(biāo)簽,代碼如下所示

      pylab.plot(x,y,'pr--')   #p是圖形為五角星,r為紅色,--表示虛線
      pylab.title('for learnning')   # 圖形標(biāo)題
      pylab.xlabel('args')   # x軸標(biāo)簽
      pylab.ylabel('salary')   # y軸標(biāo)簽
      pylab.xlim(2)    # 從y軸的2開始做線
      pylab.show()

      image

      直方圖

      利用直方圖能夠很好的顯示每一段的數(shù)據(jù)。下面使用隨機(jī)數(shù)做一個(gè)直方圖。

      data1 = numpy.random.normal(5.0,4.0,10)   # 正態(tài)隨機(jī)數(shù)
      pylab.hist(data1)
      pylab.show()

      image
      Y軸為出現(xiàn)的次數(shù),X軸為這個(gè)數(shù)的值(或者是范圍)

      還可以指定直方圖類型通過histtype參數(shù):

      圖形區(qū)別語言無法描述很詳細(xì),大家可以自信嘗試。

      1. bar :is a traditional bar-type histogram. If multiple data
        are given the bars are aranged side by side.
      2. barstacked :is a bar-type histogram where multiple
        data are stacked on top of each other.
      3. step :generates a lineplot that is by default
        unfilled.
      4. stepfilled :generates a lineplot that is by default
        filled.

      舉個(gè)例子:

      sty=numpy.arange(1,30,2)
      pylab.hist(data1,histtype='stepfilled')
      pylab.show() 

      image

      子圖功能

      什么是子圖功能呢?子圖就是在一個(gè)大的畫板里面能夠顯示多張小圖,每個(gè)一小圖為大畫板的子圖。
      我們知道生成一個(gè)圖是使用plot功能,子圖就是subplog。代碼操作如下:

      #subplot(行,列,當(dāng)前區(qū)域)
      pylab.subplot(2,2,1)   # 申明一個(gè)大圖里面劃分成4塊(即2*2),子圖使用第一個(gè)區(qū)域(坐標(biāo)為x=1,y=1)
      pylab.subplot(2,2,2)  # 申明一個(gè)大圖里面劃分成4塊(即2*2),子圖使用第二個(gè)區(qū)域(坐標(biāo)為x=2,y=2)
      x1=[1,4,6,9]
      x2=[3,21,33,43]
      pylab.plot(x1,x2)   # 這個(gè)plot表示把x,y軸數(shù)據(jù)塞入前一個(gè)子圖中。我們可以在每一個(gè)子圖后使用plot來塞入x,y軸的數(shù)據(jù)
      pylab.subplot(2,1,2)  # 申明一個(gè)大圖里面劃分成2塊(即),子圖使用第二個(gè)區(qū)域(坐標(biāo)為x=1,y=2)
      pylab.show()

      實(shí)踐小例子

      我們現(xiàn)在可以通過一堆數(shù)據(jù)來繪圖,根據(jù)圖能夠很容易的發(fā)現(xiàn)異常。下面我們就通過一個(gè)csv文件來實(shí)踐下,這個(gè)csv文件是某個(gè)網(wǎng)站的文章閱讀數(shù)與評(píng)論數(shù)。
      先說說這個(gè)csv的文件結(jié)構(gòu),第一列是序號(hào),第二列是每篇文章的URL,第三列每篇文章的閱讀數(shù),第四列是每篇評(píng)論數(shù)。
      我們的需求就是把評(píng)論數(shù)作為Y軸,閱讀數(shù)作為X軸,所以我們需要獲取第三列和第四列的數(shù)據(jù)。我們知道獲取數(shù)據(jù)的方法是通過pandas的values方法來獲取某一行的值,在對(duì)這一行的值做切片處理,獲取下標(biāo)為3(閱讀數(shù))和4(評(píng)論數(shù))的值,但是,這里只是一行的值,我們需要是這個(gè)csv文件下的所有評(píng)論數(shù)和閱讀數(shù),那怎么辦?聰明的你會(huì)說,我自定義2個(gè)列表,我遍歷下這個(gè)csv文件,把閱讀數(shù)和評(píng)論數(shù)分別添加到對(duì)應(yīng)的列表里,這不就行了嘛。呵呵,其實(shí)有一個(gè)更快捷的方法,那么就是使用T轉(zhuǎn)置方法,這樣再通過values方法,就能直接獲取這一評(píng)論數(shù)和閱讀數(shù)了,此時(shí)在交給你matplotlib里的pylab方法來作圖,那么就OK了。了解思路后,那么就寫吧。

      下面看看代碼:

      
      csv_data = pandas.read_csv('F:\Learnning\CSDN-python大數(shù)據(jù)\hexun.csv')
      dt = csv_data.T   # 裝置下,把閱讀數(shù)和評(píng)論數(shù)轉(zhuǎn)為行
      readers=dt.values[3]   
      comments = dt.values[4]
      pylab.xlabel(u'reads')
      pylab.ylabel(u'comments')   # 打上標(biāo)簽
      pylab.title(u"The Article's reads and comments")
      pylab.plot(readers,comments,'ob')
      pylab.show()

      image

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請遵守用戶 評(píng)論公約

        類似文章 更多