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

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

    • 分享

      python之pandas用法詳解

       Four兄 2019-09-03

      pandas是基于numpy構(gòu)建的,使得數(shù)據(jù)分析工作變得更快更簡單的高級數(shù)據(jù)結(jié)構(gòu)和操作工具。

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

      兩個主要的數(shù)據(jù)結(jié)構(gòu):Series和DataFrame。

      1.1 Series

      Series是一種類似于一維數(shù)組的對象,它由一維數(shù)組(各種numpy數(shù)據(jù)類型)以及一組與之相關的數(shù)據(jù)標簽(即索引)組成,僅由一組數(shù)據(jù)即可產(chǎn)生最簡單的Series.

      Series的字符串表現(xiàn)形式為:索引在左邊,值在右邊。如果沒有為數(shù)據(jù)指定索引,于是會自動創(chuàng)建一個0到N-1(N為數(shù)據(jù)的長度)的整數(shù)型索引??梢酝ㄟ^Series的values和index屬性獲取其數(shù)組表現(xiàn)形式和索引對象:

      1. import numpy as np
      2. import pandas as pd
      3. from pandas import Series,DataFrame
      4. #**********************************Series*************************************
      5. obj=Series([2,4,7,8,9,3])
      6. '''obj=
      7. 0 2
      8. 1 4
      9. 2 7
      10. 3 8
      11. 4 9
      12. 5 3
      13. dtype: int64
      14. '''
      15. obj.values #return:array([2, 4, 7, 8, 9, 3], dtype=int64)
      16. obj.index #return: RangeIndex(start=0, stop=6, step=1)
      17. #創(chuàng)建對數(shù)據(jù)點進行標記的索引
      18. obj2=Series([2,4,7,8,9,3],index=['a','b','c','d','e','f'])
      19. '''obj2=
      20. a 2
      21. b 4
      22. c 7
      23. d 8
      24. e 9
      25. f 3
      26. dtype: int64
      27. '''
      28. obj2.index #return:Index(['a', 'b', 'c', 'd', 'e', 'f'], dtype='object')
      29. #利用索引的方式選取Series的單個或一組值
      30. obj2['c'] #return:7
      31. obj2[['a','c','f']]
      32. '''out:
      33. a 2
      34. c 7
      35. f 3
      36. dtype: int64
      37. '''
      38. #numpy數(shù)組運算(布爾型數(shù)組進行過濾、標量乘法、應用數(shù)學函數(shù)等)都會保留索引和值之間的鏈接
      39. obj2[obj2>5]
      40. obj2*2
      41. np.exp(obj2)
      42. '''
      43. obj2[obj2>5]: obj2*2: np.exp(obj2):
      44. c 7 a 4 a 7.389056
      45. d 8 b 8 b 54.598150
      46. e 9 c 14 c 1096.633158
      47. dtype: int64 d 16 d 2980.957987
      48. e 18 e 8103.083928
      49. f 6 f 20.085537
      50. dtype: int64 dtype: float64
      51. '''
      52. #可以將Series看成是一個有定長的有序字典,因為它是索引值到數(shù)據(jù)值的一個映射
      53. #因此,一些字典函數(shù)也可以在這里使用:
      54. 'a' in obj2 #return:True
      55. 'h' in obj2 #return:False
      56. 2 in obj2.values #return:True
      57. #利用字典創(chuàng)建Series
      58. dic={'l':1,'z':2,'h':3}
      59. obj3=Series(dic)
      60. '''obj3=
      61. h 3
      62. l 1
      63. z 2
      64. dtype: int64
      65. '''
      66. #若索引比字典的索引多,則與字典索引相匹配的則會被找到,并放置到相應的位置中
      67. #而對應字找不到的索引,其結(jié)果則為NaN(即非數(shù)字,Not a Number,在pandas中,用于表示缺失或NA值)
      68. ind=['l','z','h','a']
      69. obj4=Series(dic,index=ind)
      70. '''obj4=
      71. l 1.0
      72. z 2.0
      73. h 3.0
      74. a NaN
      75. dtype: float64
      76. '''
      77. #pandas中isnull和notnull函數(shù)用于檢測缺失數(shù)據(jù):
      78. pd.isnull(obj4) #等效于: obj4.isnull()
      79. pd.notnull(obj4)
      80. '''
      81. pd.isnull(obj4): pd.notnull(obj4)
      82. l False l True
      83. z False z True
      84. h False h True
      85. a True a False
      86. dtype: bool dtype: bool
      87. '''
      88. #算術運算中自動對齊不同索引的數(shù)據(jù)
      89. obj3+obj4
      90. '''out:
      91. a NaN
      92. h 6.0
      93. l 2.0
      94. z 4.0
      95. dtype: float64
      96. '''
      97. #Series對象本身及其索引都有一個name屬性
      98. obj4.name='myname'
      99. obj4.index.name='letter'
      100. '''obj4=
      101. letter
      102. l 1.0
      103. z 2.0
      104. h 3.0
      105. a NaN
      106. Name: myname, dtype: float64
      107. '''
      108. #索引可以通過賦值的方式進行改變
      109. obj4.index=['li','zi','hua','a']
      110. '''obj4=
      111. li 1.0
      112. zi 2.0
      113. hua 3.0
      114. a NaN
      115. Name: myname, dtype: float64
      116. '''

      1.2 DataFrame

      DataFrame是一個表格型的數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾值等)。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(公用同一個索引)。跟其他類似的數(shù)據(jù)結(jié)構(gòu)相比,DataFrame中面向行和面向列的操作基本是平衡的。其實,DataFrame中的數(shù)據(jù)是以一個或多個二維塊存放的(而不是列表、字典或者別的一維數(shù)據(jù)結(jié)構(gòu))。

      其中,可以輸入給DataFrame構(gòu)造器的數(shù)據(jù)類型及相關說明:


      1. #*******************************DataFrame*************************************
      2. import numpy as np
      3. import pandas as pd
      4. from pandas import Series,DataFrame
      5. #構(gòu)建DataFrame
      6. #最常用的一種是直接傳入一個由等長列表或numpy數(shù)組組成的字典:
      7. data={'names':['Bob','Jane','Jack','Ann'],
      8. 'sex':['M','F','M','F'],
      9. 'age':[21,30,26,28]}
      10. frame=DataFrame(data)
      11. '''沒有指定索引,會自動加上索引,且全部列會被有序排列
      12. frame=
      13. age names sex
      14. 0 21 Bob M
      15. 1 30 Jane F
      16. 2 26 Jack M
      17. 3 28 Ann F
      18. '''
      19. #若指定列序列,則會按照指定順序排列
      20. frame=DataFrame(data,columns=['names','sex','age'])
      21. '''frame=
      22. names sex age
      23. 0 Bob M 21
      24. 1 Jane F 30
      25. 2 Jack M 26
      26. 3 Ann F 28
      27. '''
      28. #若傳入列在數(shù)據(jù)中找不到,會返回NA值
      29. frame1=DataFrame(data,columns=['names','sex','age','id'],index=['a','b','c','d'])
      30. '''frame1=
      31. names sex age id
      32. a Bob M 21 NaN
      33. b Jane F 30 NaN
      34. c Jack M 26 NaN
      35. d Ann F 28 NaN
      36. '''
      37. #通過類似字典標記或?qū)傩缘姆绞剑梢垣@取Series(列數(shù)據(jù)):
      38. frame1['sex']
      39. frame1.age
      40. '''
      41. frame1['sex']: frame1.age:
      42. a M a 21
      43. b F b 30
      44. c M c 26
      45. d F d 28
      46. Name: sex, dtype: object Name: age, dtype: int64
      47. '''
      48. #行也可以通過位置或名稱獲取
      49. #ix VS loc VS iloc
      50. #loc——通過行標簽索引行數(shù)據(jù)
      51. frame1.loc('c')
      52. #等效于
      53. #iloc——通過行號獲取行數(shù)據(jù)
      54. frame1.iloc[2]
      55. #ix--以上兩種的混合,既可以用行號,也可以用行標簽
      56. frame1.ix[2]
      57. frame1.ix['c']
      58. '''result:
      59. names Jack
      60. sex M
      61. age 26
      62. id NaN
      63. Name: c, dtype: object
      64. '''
      65. #獲取多行
      66. #注意:使用行標簽時,:兩邊是全包括,使用行號時是左閉右開
      67. frame1.loc['b':'c']
      68. frame1.iloc[2:4]
      69. frame1.ix['b':'c']
      70. frame1.ix[2:4]
      71. '''result:
      72. names sex age id
      73. c Jack M 26 NaN
      74. d Ann F 28 NaN
      75. '''
      76. #利用ix、loc、iloc拓展獲取列數(shù)據(jù)
      77. #獲取單列,如下所示,或?qū)'sex']寫成'sex',將不顯示columns名
      78. frame1.ix[:,['sex']] #等效于frame1['sex']
      79. frame1.loc[:,['sex']]
      80. frame1.ix[:,[1]]
      81. '''
      82. frame1.ix[:,['sex']]: VS frame1.ix[:,'sex'] :
      83. sex
      84. a M a M
      85. b F b F
      86. c M c M
      87. d F d F
      88. '''
      89. #獲取多列
      90. frame1.ix[:,'sex':]
      91. frame1.loc[:,'sex':]
      92. frame1.iloc[:,1:4]
      93. '''result:
      94. sex age id
      95. a M 21 NaN
      96. b F 30 NaN
      97. c M 26 NaN
      98. d F 28 NaN
      99. '''
      100. #給列賦值,賦值是列表或數(shù)組時,長度必須相匹配
      101. frame1['id']=np.arange(4)
      102. '''frame1=
      103. names sex age id
      104. a Bob M 21 0
      105. b Jane F 30 1
      106. c Jack M 26 2
      107. d Ann F 28 3
      108. '''
      109. #若賦值的是一個Series,將精確匹配DataFrame的索引,空位將補上缺失值
      110. frame1['id']=Series([11,12],index=['a','c'])
      111. '''frame1=
      112. names sex age id
      113. a Bob M 21 11.0
      114. b Jane F 30 NaN
      115. c Jack M 26 12.0
      116. d Ann F 28 NaN
      117. '''
      118. #為不存在的列賦一個新列
      119. frame1['Female']=frame1.sex=='F'
      120. '''frame1=
      121. names sex age id Female
      122. a Bob M 21 11.0 False
      123. b Jane F 30 NaN True
      124. c Jack M 26 12.0 False
      125. d Ann F 28 NaN True
      126. '''
      127. #刪除列數(shù)據(jù)
      128. del frame1['Female']
      129. '''frame1=
      130. names sex age id
      131. a Bob M 21 11.0
      132. b Jane F 30 NaN
      133. c Jack M 26 12.0
      134. d Ann F 28 NaN
      135. '''
      136. #嵌套字典(字典的字典)作為參數(shù),傳入DataFrame
      137. #外層字典的鍵作為列(columns),內(nèi)層鍵作為行索引(index)
      138. pop={'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
      139. frame2=DataFrame(pop)
      140. '''frame2=
      141. Nevada Ohio
      142. 2000 NaN 1.5
      143. 2001 2.4 1.7
      144. 2002 2.9 3.6
      145. '''
      146. #對結(jié)果進行轉(zhuǎn)置
      147. frame2.T
      148. '''result:
      149. 2000 2001 2002
      150. Nevada NaN 2.4 2.9
      151. Ohio 1.5 1.7 3.6
      152. '''
      153. #顯示指定索引
      154. DataFrame(pop,index=[2001,2002,2003])
      155. '''result:
      156. Nevada Ohio
      157. 2001 2.4 1.7
      158. 2002 2.9 3.6
      159. 2003 NaN NaN
      160. '''
      161. #跟Series一樣,values屬性也會以二維ndarray的形式返回DataFrame中的數(shù)據(jù)
      162. frame2.values #result:array([[ nan, 1.5],[ 2.4, 1.7],[ 2.9, 3.6]])

      二、基本功能

      2.1  重新索引-------reindex:創(chuàng)建一個適合新索引的新對象

      reindex函數(shù)的參數(shù):


      Series中reindex方法:

      1. #Series中的reindex方法
      2. obj=Series([1.2,3.4,-7.8,5.6],index=['d','a','c','b'])
      3. #rreindex會根據(jù)新索引重新排列,若索引值不存在,則引入缺省值
      4. obj.reindex(['a','b','c','d','e'])
      5. #還可設置缺省項的值
      6. obj.reindex(['a','b','c','d','e'],fill_value=0) #此時,上面結(jié)果中的NaN將變成0
      7. '''
      8. obj: obj.reindex(['a','b','c','d','e']):
      9. d 1.2 a 3.4
      10. a 3.4 b 5.6
      11. c -7.8 c -7.8
      12. b 5.6 d 1.2
      13. dtype: float64 e NaN
      14. dtype: float64
      15. '''
      16. #插值處理
      17. #對于時間序列這樣的有序序列,重新索引時需要做一些插值處理
      18. obj1=Series(['yellow','pink','blue'],index=[0,2,4])
      19. obj1.reindex(range(6),method='ffill')
      20. '''obj1=
      21. 0 yellow
      22. 1 yellow
      23. 2 pink
      24. 3 pink
      25. 4 blue
      26. 5 blue
      27. dtype: object
      28. '''

      DataFrame中reindex方法:

      reindex可以修改(行)索引、列,或兩個都修改。如果僅傳入一個序列,則會重新索引行:

      1. frame=DataFrame(np.arange(9).reshape((3,3)),index=['a','b','c'],columns=['US','UK','CN'])
      2. '''frame=
      3. US UK CN
      4. a 0 1 2
      5. b 3 4 5
      6. c 6 7 8
      7. '''
      8. frame1=frame.reindex(['a','b','c','e'])
      9. #使用columns關鍵字即可重新索引列
      10. states=['US','HK','CN']
      11. frame.reindex(columns=states)
      12. '''result:
      13. US HK CN
      14. a 0 NaN 2
      15. b 3 NaN 5
      16. c 6 NaN 8
      17. '''
      18. #可以同時對行和列進行索引,但插值只能按照行(即軸0)應用
      19. frame.reindex(index=['a','b','c','e'],method='ffill',columns=states)
      20. '''
      21. US HK CN
      22. a 0 NaN 2
      23. b 3 NaN 5
      24. c 6 NaN 8
      25. e 6 NaN 8
      26. '''
      27. #利用ix索引功能,重新索引任務變得更加簡潔
      28. frame.ix[['a','b','c','e'],states]
      29. '''
      30. US HK CN
      31. a 0.0 NaN 2.0
      32. b 3.0 NaN 5.0
      33. c 6.0 NaN 8.0
      34. e NaN NaN NaN
      35. '''

      2.2 丟棄指定軸上的項------drop方法

      由于需要執(zhí)行一些數(shù)據(jù)整理和集合邏輯,所以drop方法返回的是一個在指定軸上刪除了指定值的新對象。

      1. #對于Series對象
      2. obj=Series([1.2,3.4,-7.8,5.6],index=['d','a','c','b'])
      3. obj.drop('c') #返回的是新對象,obj沒變
      4. obj.drop(['a','d'])
      5. '''
      6. obj: obj.drop('c'): obj.drop(['a','d']):
      7. d 1.2 d 1.2 c -7.8
      8. a 3.4 a 3.4 b 5.6
      9. c -7.8 b 5.6 dtype: float64
      10. b 5.6 dtype: float64
      11. dtype: float64
      12. '''
      13. #對于DataFrame,可以刪除任意軸上的索引值:
      14. frame=DataFrame(np.arange(9).reshape((3,3)),index=['a','b','c'],columns=['US','UK','CN'])
      15. frame.drop('a') #默認axis=0
      16. frame.drop(['US','UK'],axis=1)
      17. '''
      18. frame: frame.drop('a'): frame.drop(['US','UK'],axis=1):
      19. US UK CN US UK CN CN
      20. a 0 1 2 b 3 4 5 a 2
      21. b 3 4 5 c 6 7 8 b 5
      22. c 6 7 8 c 8
      23. '''

      2.3 算術運算和數(shù)據(jù)對齊

      pandas最重要的一個功能是,它可以對不同索引的對象進行算術運算。在將對象相加時,如果存在不同的索引對,則結(jié)果的索引就是索引對的并集。

      1. #對于Series對象
      2. s1=Series([1.2,3.4,-7.8,5.6],index=['d','a','c','b'])
      3. s2=Series([1.1,2.2,3.3,4.4.,5.5,6.6],index=['a','b','c','d','e','f'])
      4. s1+s2 #在不重疊的地方引入了NA值,且缺失值會在算術運算過程中傳播
      5. '''result:
      6. a 4.5
      7. b 7.8
      8. c -4.5
      9. d 5.6
      10. e NaN
      11. f NaN
      12. dtype: float64
      13. '''

      對于DataFrame對象,對齊操作會發(fā)生在列和行上,具體過程和Series一樣。

      2.4 DataFrame和Series之間的運算

      跟Numpy數(shù)組一樣,DataFrame和Series之間的算術運算也是有明確規(guī)定的,和不同形狀的數(shù)組之間的運算類似,也具有廣播效應。

      默認情況下,DataFrame和Series之間的算術運算會將Series的索引匹配到DataFrame的列,然后沿著行已知向下傳播(行傳播):

      1. frame=DataFrame(np.arange(9).reshape((3,3)),index=['a','b','c'],columns=['US','UK','CN'])
      2. s=frame.ix['a']
      3. frame-s
      4. '''
      5. frame:                 s:                     frame-s:
      6.    US  UK  CN         US  0                      US  UK  CN
      7. a   0   1   2         UK  1                   a   0   0   0
      8. b   3   4   5         CN  2                   b   3   3   3
      9. c   6   7   8                                 c   6   6   6
      10. '''

      如果你希望匹配行,且在列上廣播(列傳播),則必須使用算術運算方法:

      1. frame=DataFrame(np.arange(9).reshape((3,3)),index=['a','b','c'],columns=['US','UK','CN'])
      2. s1=frame['CN']
      3. frame.sub(s1,axis=0) #axis=0不能少,否則運算時,默認沿著行向下傳播
      4. '''
      5. frame: s1: frame.sub(s1,axis=0)
      6. US UK CN CN US UK CN
      7. a 0 1 2 a 2 a -2 -1 0
      8. b 3 4 5 b 5 b -2 -1 0
      9. c 6 7 8 c 8 c -2 -1 0
      10. '''
      11. frame-s1 #或frame.sub(s1)
      12. '''result:
      13. CN UK US a b c
      14. a NaN NaN NaN NaN NaN NaN
      15. b NaN NaN NaN NaN NaN NaN
      16. c NaN NaN NaN NaN NaN NaN
      17. '''

      算術方法:

      2.5 函數(shù)應用和映射

      numpy中ufuncs(元素級數(shù)組方法)也可以用于pandas對象,例:

      1. np.exp(frame)
      2. '''
      3. US UK CN
      4. a 1.000000 2.718282 7.389056
      5. b 20.085537 54.598150 148.413159
      6. c 403.428793 1096.633158 2980.957987
      7. '''

      另一個常見的操作是,將函數(shù)應用到由各列或行所形成的一維數(shù)組上,DataFrame的apply方法即可實現(xiàn)該功能:

      1. f=lambda x:x.max()-x.min()
      2. frame.apply(f) #函數(shù)應用到每列所形成一維數(shù)組
      3. frame.apply(f,axis=1) #函數(shù)應用到每行所形成一維數(shù)組
      4. '''
      5. frame:
      6. US UK CN frame.apply(f): frame.apply(f,axis=1)
      7. a 0 1 2 US 6 a 2
      8. b 3 4 5 UK 6 b 2
      9. c 6 7 8 CN 6 c 2
      10. '''

      2.6 排序和排名

      根據(jù)條件對數(shù)據(jù)集排序,這是一個內(nèi)置運算,要對行或列索引進行排序(按字典排序),可使用sort_index方法,它將返回一個已排序好的新對象。

      2.6.1 排序

      1. #排序
      2. obj=Series([1.2,3.4,-7.8,5.6],index=['d','a','c','b'])
      3. #索引排序
      4. obj.sort_index()
      5. #值排序
      6. obj.sort_values()
      7. '''
      8. obj:             obj.sort_index():          obj.sort_values():
      9. d    1.2             a    3.4                   c   -7.8
      10. a    3.4             b    5.6                   d    1.2
      11. c   -7.8             c   -7.8                   a    3.4
      12. b    5.6             d    1.2                   b    5.6
      13. '''
      14. frame=DataFrame(np.arange(9).reshape((3,3)),index=['a','b','c'],columns=['US','UK','CN'])
      15. #索引排序,分軸0和軸1,若需要按照哪行排序,可利用by='',鎖定某行
      16. frame.sort_index(axis=1)
      17. #值排序
      18. #axis=0代表對列操作,by='CN'代表對name為'CN'的列處理,ascending默認為True,代表升序排
      19. frame.sort_values(by='CN',axis=0,ascending=False)
      20. '''
      21. frame:              frame.sort_index(axis=1):   frame.sort_values(by='CN',axis=0,ascending=False):
      22.    US  UK  CN          CN  UK  US                        US  UK  CN
      23. a   0   1   2       a   2   1   0                     c   6   7   8
      24. b   3   4   5       b   5   4   3                     b   3   4   5
      25. c   6   7   8       c   8   7   6                     a   0   1   2   
      26. '''
      27. #在排序中,默認缺失值都會被放到最后
      28. obj1=Series([4,np.nan,7,np.nan,-3,5])
      29. '''result:
      30. 4   -3.0
      31. 0    4.0
      32. 5    5.0
      33. 2    7.0
      34. 1    NaN
      35. 3    NaN
      36. dtype: float64
      37. '''

      2.6.2 排名

      排名(ranking)跟排序關系密切,且它會增設一個排名值(從1開始,一直到數(shù)組中有效數(shù)據(jù)的數(shù)量)。它跟numpy.argsort產(chǎn)生的間接排序索引差不多,只不過它可以根據(jù)某種規(guī)則破壞平級關系。默認情況下,rank是通過”為各組分配一個平均排名“的方式破壞平級關系的。

      rank()函數(shù)中,用于破壞平級關系的method選項:


      1. #排名:
      2. obj=Series([7,-5,7,4,2,0,4])
      3. obj.rank()
      4. obj.rank(method='first')
      5. '''
      6. obj: obj.rank(): obj.rank(method='first'):
      7. 0 7 0 6.5 0 6.0
      8. 1 -5 1 1.0 1 1.0
      9. 2 7 2 6.5 2 7.0
      10. 3 4 3 4.5 3 4.0
      11. 4 2 4 3.0 4 3.0
      12. 5 0 5 2.0 5 2.0
      13. 6 4 6 4.5 6 5.0
      14. '''
      15. frame=DataFrame({'b':[3,2,4,1],'a':[7,5,2,9],'c':[3,9,6,2]})
      16. frame.rank(axis=1)
      17. '''
      18. frame: frame.rank(axis=1):
      19. a b c a b c
      20. 0 7 3 3 0 3.0 1.5 1.5
      21. 1 5 2 9 1 2.0 1.0 3.0
      22. 2 2 4 6 2 1.0 2.0 3.0
      23. 3 9 1 2 3 3.0 1.0 2.0
      24. '''

      三、匯總和計算描述統(tǒng)計

      pandas對象擁有一組常用的數(shù)學和統(tǒng)計方法。它們大部分都屬于簡約和匯總統(tǒng)計,用于從Series中提取單個值(如sum或mean)或從DataFrame的行或列中提取一個Series。更對應的numpy數(shù)組方法,它們都是基于沒有缺失數(shù)據(jù)的假設而構(gòu)建的。

      3.1與描述統(tǒng)計相關的函數(shù):


      3.2 函數(shù)中常見的選項:

      3.3部分代碼示例:

      1. #匯總和統(tǒng)計
      2. df=DataFrame([[1.4,np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],columns=['one','two'])
      3. #計算每列的和,默認排除NaN
      4. df.sum()
      5. #計算每行的和,默認排除NaN
      6. df.sum(axis=1)
      7. #計算每行的和,設置skipna=False,NaN參與計算,結(jié)果仍為NaN
      8. df.sum(axis=1,skipna=False)
      9. '''
      10. df: df.sum(): df.sum(axis=1): df.sum(axis=1,skipna=False):
      11. one two one 9.25 0 1.40 0 NaN
      12. 0 1.40 NaN two -5.80 1 2.60 1 2.60
      13. 1 7.10 -4.5 2 0.00 2 NaN
      14. 2 NaN NaN 3 -0.55 3 -0.55
      15. 3 0.75 -1.3
      16. '''
      17. obj=Series(['a','b','a','d']*4)
      18. obj.describe()
      19. '''
      20. count     16
      21. unique     3
      22. top        a
      23. freq       8
      24. dtype: object
      25. '''

      3.4、唯一值、值計數(shù)以及成員資格

      常見方法:(對于Series對象

      相關代碼:

      1. obj=Series(['a','d','a','b']*4)
      2. unique=obj.unique() #結(jié)果未排序 return:array(['a', 'd', 'b'], dtype=object)
      3. obj.value_counts() #結(jié)果按值頻率降序排序
      4. #等效于 pd.value_counts(obj,sort=True)
      5. '''result:
      6. a 8
      7. d 4
      8. b 4
      9. dtype: int64
      10. '''
      11. obj1=Series(['a','b','c','d'])
      12. #判斷矢量化集合的成員資格
      13. obj1.isin(['b','d'])
      14. '''
      15. 0 False
      16. 1 True
      17. 2 False
      18. 3 True
      19. dtype: bool
      20. '''
      對于DataFrame對象,可以使用apply函數(shù)和以上函數(shù)聯(lián)合使用。
      1. frame=DataFrame({'b':[3,2,4,1],'a':[3,5,2,1],'c':[3,3,2,2]})
      2. #fillna(0)將nan值的位置上填補0
      3. frame.apply(pd.value_counts).fillna(0)
      4. '''
      5. a b c
      6. 1 1.0 1.0 0.0
      7. 2 1.0 1.0 2.0
      8. 3 1.0 1.0 2.0
      9. 4 0.0 1.0 0.0
      10. 5 1.0 0.0 0.0
      11. '''

      四、處理缺失數(shù)據(jù)

      缺失數(shù)據(jù)是大部分數(shù)據(jù)分析應用中都很常見。pandas的設計目標之一就是讓缺失數(shù)據(jù)的處理任務盡量輕松。pandas使用浮點值(NaN)表示浮點和非浮點數(shù)據(jù)中的缺失數(shù)據(jù)。它只是一個便于被檢測出來的標記而已。python中的內(nèi)置none也會被當做NA處理。

      NA的處理方法:

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多