国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

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

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

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

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

優(yōu)勢(shì)

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

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

  • Series:類似于一維數(shù)組的對(duì)象,由一組數(shù)據(jù)以及一組相關(guān)的數(shù)據(jù)標(biāo)簽組成的數(shù)據(jù)結(jié)構(gòu)??梢詫eries看成是一個(gè)定長(zhǎng)的有序字典,因?yàn)樗撬饕档綌?shù)據(jù)值的一個(gè)映射。

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

    • 創(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  c0  1  4  71  2  5  82  3  6  9注意:結(jié)果DataFrame會(huì)自動(dòng)加上索引(跟Series一樣),且全部列會(huì)被有序悱列!??!## 如果指定了列序列,則DataFrame的列就會(huì)按照指定順序迸行排列,如果指定的列不存在,那么結(jié)果是一個(gè)空的dataframe>>>pd.DataFrame(data, columns=['b', 'a', 'c'])   b  a  c0  4  1  71  5  2  82  6  3  9
    • 存取元素(其實(shí)是一個(gè)Series)

      注意:

      • 返冋的Series擁有原DataFrame相同的索引,且其name屬性也已經(jīng)被相應(yīng)地設(shè)置 好了。行也可以通過位置或名稱的方式進(jìn)行獲取。
      • 如果采用非整數(shù)切片的方式進(jìn)行選取數(shù)據(jù),那么末端的索引對(duì)應(yīng)的數(shù)據(jù)是包含在內(nèi)的,而整數(shù)切片索引,其末端的索引對(duì)應(yīng)的數(shù)據(jù)是“含前不含后”。
      ## 通過字典標(biāo)記或者屬性來獲取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      Ohio1      Ohio2      Ohio3    Nevada4    NevadaName: state, dtype: object
      • ix、loc、iloc

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

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

        • iloc——通過行號(hào)獲取行數(shù)據(jù)或者多行數(shù)據(jù),但是通過行標(biāo)簽獲取會(huì)報(bào)錯(cuò)

          ## 承接上面的df>> print(df.loc[1]) # 選取第一行的數(shù)據(jù)state    Ohioyear     2001pop       1.7Name: 1, dtype: object>> print(df.loc[0:2]) # 選取index=0到index=2行的數(shù)據(jù),總共三行數(shù)據(jù)  state  year  pop0  Ohio  2000  1.51  Ohio  2001  1.72  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,通過行號(hào)獲取數(shù)據(jù)>> df.reset_index(inplace=True)>> df.head()>> print(df.iloc[2:4]) # 獲取第2行、第3行數(shù)據(jù)   index   state  year  pop2      2    Ohio  2002  3.63      3  Nevada  2001  2.4
    • 重建索引——reindex()函數(shù):將會(huì)根據(jù)新索引進(jìn)行重排。如果某個(gè)索引值當(dāng)前不存在,就引入缺失值,可以采用填充的方式處理缺失值

      • 有幾種參數(shù):

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

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

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

      • sort_index——對(duì)行或列索引進(jìn)行排序 (按字典順序)
      • order——針對(duì)按照值Series排序
      • rank——排名,默認(rèn)情況下,rank是通過“為各組分配一個(gè)平均排名”的方式破壞平級(jí)關(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)## 默認(rèn)的是升序排列,但也可以降序排列>>>frame.sort_index(axis=1, ascending=False)## 根據(jù)一個(gè)或多個(gè)列覺得值進(jìn)行排序,采用**by選項(xiàng)**>>>frame.sort_index(by=['three', 'one'])## 如要按照值對(duì)Series 進(jìn)行排序,那么可以order>>>obj = Series([4, 7, -3, 2])>>>obj.order()2   -33    20    41    7>>>obj = Series([4, np.nan, 1, np.nan, -3, 2])>>>obj.order() #在排序時(shí),缺失值默認(rèn)都會(huì)被放到Series的末尾.4    -32     15     20     41   NaNNaN

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

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

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

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

  • 去除

  • 填充

來源:https://www.icode9.com/content-1-395101.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python數(shù)據(jù)分析——Pandas數(shù)據(jù)結(jié)構(gòu)和操作
Python學(xué)習(xí)筆記
《利用python進(jìn)行數(shù)據(jù)分析》讀書筆記
利用Python進(jìn)行數(shù)據(jù)分析
python之pandas用法詳解
Pandas 中文API文檔
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服