久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python數(shù)據(jù)分析-Pandas

 印度阿三17 2019-08-17

在學習了Numpy后,,進行數(shù)據(jù)科學計算,為何還要使用Pandas呢,?其實原因就是效率高,,那為何Pandas效率比numpy要高呢?其實Pandas和Numpy還是有著很大的關(guān)系的,,Pandas本身是依賴numpy的,,而ndarray在內(nèi)存里占據(jù)這一段連續(xù)的內(nèi)存空間,任何改變ndarray長度的操作都勢必讓所有value改變內(nèi)存中的位置因此在某種程度上,,Numpy操作效率還是比較慢的,。但是Pandas并不是處理所有的數(shù)據(jù)都是效率很高的,那么一般情況下處理以下的數(shù)據(jù)比較友好:

Pandas適合處理多種類型的數(shù)據(jù):

  • 具有不同數(shù)據(jù)類型列的表格數(shù)據(jù)(DataFrame),,如SQL表或Excel電子表格,。
  • 有序或無序(不固定頻率)的時間序列數(shù)據(jù)。
  • 帶有行和列標簽的任意矩陣數(shù)據(jù),。
  • 任何其他形式的觀測/統(tǒng)計數(shù)據(jù)集。
  • Pandas主要包含三種數(shù)據(jù)結(jié)構(gòu),,分別是Series(一維),,DataFrame(二維),Panel(三維),。其中Series和DataFrame可以用于處理絕大多數(shù)金融,,統(tǒng)計,社會科學和許多工程領(lǐng)域的典型問題,。
    Pandas庫是統(tǒng)計科學家在分析數(shù)據(jù)時的理想工具,,非常適合應(yīng)用于數(shù)據(jù)清洗,分析/建模,,然后將分析結(jié)果組織成適合于繪圖或表格顯示的形式的全部過程,。那么其中的優(yōu)勢在哪呢?

優(yōu)勢

  • 可以輕易地處理浮點以及非浮點類型的數(shù)據(jù)的缺失值
  • 大小可變:DataFrame和Panel都可以刪除和插入
  • 靈活強大的分組功能,,可對數(shù)據(jù)集進行拆分組合
  • 切片操作,,便于索引,存取數(shù)據(jù)

數(shù)據(jù)結(jié)構(gòu)

  • Series:類似于一維數(shù)組的對象,,由一組數(shù)據(jù)以及一組相關(guān)的數(shù)據(jù)標簽組成的數(shù)據(jù)結(jié)構(gòu),。可以將Series看成是一個定長的有序字典,,因為它是索引值到數(shù)據(jù)值的一個映射,。

    • 創(chuàng)建Series方法——pd.Series
    • 獲取數(shù)組表示形式——obj.values
    • 獲取索引對象——obj.index

      eg:
      # 第一種創(chuàng)建series的方式:
          s1 = pd.Series([1,2,3,4,5,6,7,8,9])
          print(s1)
          print(s1.values)    # series的值
          print(s1.index)  # 索引信息
      
      # 第二種創(chuàng)建series方式:
          s2 = pd.Series(np.arange(10))
          print(s2)
      
      #  第三種通過字典的方式創(chuàng)建series:
          s3 = pd.Series({"cecilia":90,'cc':89,'abc':97})
          print(s3)
          print(s3.index)
          s4 = pd.Series(s1.to_dict()) # 轉(zhuǎn)字典
          print(s4)
          s5 = pd.isnull(s3)
          s5.index.name = "name score" # 給列名添加名稱
          print(s5)
    • 通過索引存取元素

      >>>obj2 = pd.Series([4, 7,-5,3], index=['d','b','a','c']) #還能自定義index進行創(chuàng)建Series
      >>>obj2
      d    4
      b    7
      a   -5
      c    3
      dtype: int64
      >>> obj2.index
      Index([u'd', u'b', u'a', u'c'], dtype='object')
      
      ## 通過索引存取元素和修改元素值
      >>>obj2['d']= 6 # 修改index='d'的索引值
      d    6
      b    7
      a   -5
      c    3
      dtype: int64
      >>>obj2[['c','a','d']]  ## 選取index='c' 'a' 'd'的元素值
      c    3
      a   -5
      d    6
      dtype: int64
      
      ## 按照索引條件獲取元素
      >>>obj2[obj2>0]
      d    6
      b    7
      c    3
      dtype: int64
    • 檢測缺失數(shù)據(jù)——pd.innull和pd.notnull
  • DataFrame:是一個table型數(shù)據(jù),包含一組有序的列,每列可以是不同的值類型,,DataFrame既有行索引也有列索引,,可以看作是由Series組成的字典。dataFrame中的數(shù)據(jù)是以一個或者多個二維塊存放的,,而不是列表,、字典等。

    • 創(chuàng)建DataFrame

      eg:
      >>> data = {'a':[1,2,3],
             'b':[4,5,6],
             'c':[7,8,9]}
      >>> df = pd.DataFrame(data)
      >>> print(df)
         a  b  c
      0  1  4  7
      1  2  5  8
      2  3  6  9
      注意:結(jié)果DataFrame會自動加上索引(跟Series一樣),,且全部列會被有序悱列?。?!
      
      ## 如果指定了列序列,,則DataFrame的列就會按照指定順序迸行排列,如果指定的列不存在,那么結(jié)果是一個空的dataframe
      >>>pd.DataFrame(data, columns=['b', 'a', 'c'])
         b  a  c
      0  4  1  7
      1  5  2  8
      2  6  3  9
    • 存取元素(其實是一個Series)

      注意:

      • 返冋的Series擁有原DataFrame相同的索引,,且其name屬性也已經(jīng)被相應(yīng)地設(shè)置 好了,。行也可以通過位置或名稱的方式進行獲取。
      • 如果采用非整數(shù)切片的方式進行選取數(shù)據(jù),,那么末端的索引對應(yīng)的數(shù)據(jù)是包含在內(nèi)的,,而整數(shù)切片索引,其末端的索引對應(yīng)的數(shù)據(jù)是“含前不含后”,。
      ## 通過字典標記或者屬性來獲取Series
      >>> data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
            'year':[2000, 2001, 2002, 2001, 2002],
            'pop':[1.5, 1.7, 3.6, 2.4, 2.9]}
      >>> df= pd.DataFrame(data, columns=['year', 'state', 'pop'])
      >>> print(df['state'])
      0      Ohio
      1      Ohio
      2      Ohio
      3    Nevada
      4    Nevada
      Name: state, dtype: object
      • ix,、loc、iloc

        • ix——可以通過行號索引,,也可以通過行標簽索引(從pandas 0.20.0版本開始,,官方不推薦使用.ix方法,而是使用.iloc 和.loc方法)

        • loc——loc[‘d’]表示索引的是第’d’行(index 是字符)通過行標簽索引行數(shù)據(jù),,也可以索引某行某列

        • iloc——通過行號獲取行數(shù)據(jù)或者多行數(shù)據(jù),,但是通過行標簽獲取會報錯

          ## 承接上面的df
          >> print(df.loc[1]) # 選取第一行的數(shù)據(jù)
          state    Ohio
          year     2001
          pop       1.7
          Name: 1, dtype: object
          >> print(df.loc[0:2]) # 選取index=0到index=2行的數(shù)據(jù),總共三行數(shù)據(jù)
            state  year  pop
          0  Ohio  2000  1.5
          1  Ohio  2001  1.7
          2  Ohio  2002  3.6
          ## 可以鎖定行,,按照特征屬性多列選取元素
          >> num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']
          >> bar_heights = norm_data.loc[0, num_cols].values
          >> print(bar_heights)
          [4.3 3.55 3.9 4.5 5.0]
          
          ## 重置索引index,,通過行號獲取數(shù)據(jù)
          >> df.reset_index(inplace=True)
          >> df.head()
          >> print(df.iloc[2:4]) # 獲取第2行、第3行數(shù)據(jù)
             index   state  year  pop
          2      2    Ohio  2002  3.6
          3      3  Nevada  2001  2.4
    • 重建索引——reindex()函數(shù):將會根據(jù)新索引進行重排,。如果某個索引值當前不存在,,就引入缺失值,可以采用填充的方式處理缺失值

      • 有幾種參數(shù):

        參數(shù)           說明
        index        用作索引的新序列,。既可以是index實例,,也
                       可以是其他序列型的Python數(shù)據(jù)結(jié)構(gòu)。Index
                       會被完全使用,,就像沒有任何復制一樣,。
        method     插值(填充)方式。
        fill_value  在重新索引的過程中,需要引入缺失值時使用
                       的替代值 .   
        limit        前向或后向填充時的最大填充量.
        level        在Multiindex的指定級別上匹配簡單索引,,否
                        則選取其子集
        copy           默認為True,,無論如何都復制;如果為False,,
                       則新舊相等就不復制
        
        其中method方法的參數(shù)如下:
        參數(shù)                     說明
        ffill或pad         前向填充(或搬運)值
        bfill或backfill        后向填充(或搬運)值
      • fill_value=0,,直接填充0

    • 刪除任意軸上的索引值——drop(index,axis=1/0)
    • apply函數(shù)——將函數(shù)應(yīng)用到由各列或行所形成的一維數(shù)組上,比如sum和mean等

      eg:
      # 將求最大值和最小值之間的差得函數(shù)運用在某一軸上
      >>>f = lambda x: x.max() - x.min()
      >>>frame.apply(f)
      >>>frame.apply(f, axis=1)
      
    • 排名和排序

      • sort_index——對行或列索引進行排序 (按字典順序)
      • order——針對按照值Series排序
      • rank——排名,,默認情況下,,rank是通過“為各組分配一個平均排名”的方式破壞平級關(guān)系的
      eg:
      >>>frame = DataFrame(np.arange(8).reshape((2, 4)), 
          index=['three', 'one'], columns=['d','a','b','c'])
      
      >>>frame.sort_index()
      
      >>>frame.sort_index(axis=1)
      
      ## 默認的是升序排列,但也可以降序排列
      >>>frame.sort_index(axis=1, ascending=False)
      
      ## 根據(jù)一個或多個列覺得值進行排序,,采用**by選項**
      >>>frame.sort_index(by=['three', 'one'])
      
      
      ## 如要按照值對Series 進行排序,,那么可以order
      >>>obj = Series([4, 7, -3, 2])
      >>>obj.order()
      2   -3
      3    2
      0    4
      1    7
      >>>obj = Series([4, np.nan, 1, np.nan, -3, 2])
      >>>obj.order() #在排序時,缺失值默認都會被放到Series的末尾.
      4    -3
      2     1
      5     2
      0     4
      1   NaN
      NaN
      

      注意:排名(Series.rank(method='average',ascending=True))的作用與排序的不同之處在于,,他會把對象的values替換成名次(從1 到 n),。這時唯一的問題在于如何處理平級項,方法里的 method 參數(shù)就是起這個作用的,,他有四個值可選:average,min, max, first,。

    • is_unique——屬性驗證是否是唯一的
  • 匯總與統(tǒng)計

    • sum(axis=1/0)——axis=1按照行求和
    • mean(axis=1, skipna=False)——skipna選項可以避免行列存在NA得值進行計算
    • idxmin和idxmax,達到最小值或最大值的索引
    • describe——用于一次性匯總統(tǒng)計

處理缺失數(shù)據(jù)得方式

  • 去除

  • 填充

來源:https://www./content-1-395101.html

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多