python-pandas之Index數據分析(六)

      網友投稿 1185 2025-03-31

      Python-Pandas之Index數據分析(六)


      索引對象

      '''

      數據結構 索引對象

      ? Pandas的索引對象負責管理軸標簽和其他元數據(比如軸名稱等)。構建

      Series或DataFrame時,所用到的任何數組或其他序列的標簽都會被轉換成一

      個Index。

      ? Index對象是不可修改的(immutable),因此用戶不能對其進行修改。不可

      修改性非常重要,因為這樣才能使Index對象在多個數據結構之間安全共享。

      ? pandas中主要的index對象

      類型 說明

      index 最泛化的Index對象,將軸標簽為一個由Python對象組成的NumPy數組。

      Int64Index 針對整數的特殊Index

      MultiIndex “層次化”索引對象,表示單個軸上的多層索引??梢钥醋鲇蓤@數組組成的數

      組。

      DatetimeIndex 存儲納秒級時間戳

      PeriodIndex 針對Period數據的特殊Index

      ? Index的方法和屬性 I

      類型 說明

      append append 連接另一個Index對象,產生一個新的Index。

      diff 計算差集,并得到一個Index。

      intersection 計算交集

      union 計算并集

      isin 計算一個指示各值是否包含在參數集合中的布爾型數組

      delete 刪除索引i處的元素,并得到新的Index。

      ? Index的方法和屬性 II

      類型 說明

      drop 刪除傳入的值,并得到新的索引。

      insert 將元素插入到索引i處,并得到新的Index。

      is_monotonic 當各元素均大于等于前一個元素時,返回True。

      is_unique 當Index沒有重復值時,返回True。

      unique 計算Index中唯一值得數組

      '''

      import numpy as np

      import pandas as pd

      import sys

      from pandas import Series,DataFrame,Index

      print('獲取index')

      obj = Series(range(3),index=['a','b','c'])

      index = obj.index

      print(index[1:]) #打印index從1開始的所有索引

      try:

      index[1] = 'd' #Index對象是不可修改的(immutable),因此用戶不能對其進行修改。不

      except:

      print

      print(sys.exc_info()[0])

      print('Index對象')

      index = Index(np.arange(3))

      obj2 = Series([1.6,23.3,6],index= index)

      print(obj2)

      print('判斷列和索引是否存在')

      pop = {'Nevada':{20001:2.4, 2002:2.9},

      'Ohio':{2000:1.5, 2001:1.7, 2002:3.6}}

      frame3 = DataFrame(pop)

      print(frame3)

      print('Ohio'in frame3.columns) # True

      print('3923' in frame3.index) # False

      重新索引

      '''

      基本功能 重新索引

      ? 創建一個適應新索引的新對象,該Series的reindex將會根據新索引進行重排。

      如果某個索引值當前不存在,就引入缺失值

      ? 對于時間序列這樣的有序數據,重新索引時可能需要做一些插值處理。

      method選項即可達到此目的。

      ? reindex函數的參數

      類型 說明

      index 用作索引的新序列。既可以是Index實例,也可以是其它序列型的Python數據

      結構。Index會被完全使用,就像沒有任何復制一樣。

      method 插值填充方式,ffill或bfill。

      fill_value 在重新索引過程中,需要引入缺失值時使用的替代值。

      limit 前向或后向填充時的最大填充量

      level 在MultiIndex的指定級別上匹配簡單索引,否則選取其子集。

      copy 默認為True,無論如何都復制。如果為False,則新舊相等就不復制。

      '''

      import numpy as np

      from pandas import DataFrame,Series

      print('重新指定索引及順序')

      obj = Series([3.4,5.4,5.6,-4],index=['d', 'b', 'a', 'c'])

      print(obj)

      obj2 = obj.reindex(['a', 'b', 'd', 'c', 'e'])

      print('重新指定索引obj2\n',obj2)

      print('指定不存在元素的默認值')

      print(obj.reindex(['a', 'b', 'd', 'c', 'e'], fill_value = 0)) # 指定不存在元素的默認值

      print('重新指定索引并指定填元素充方法')

      obj3 = Series(['libai','dufu','tangshi'],index=[0,2,4])

      print(obj3)

      print(obj3.reindex(range(6),method='ffill')) #method 插值填充方式,ffill或bfill。

      print('對DataFrame重新指定索引')

      frame = DataFrame(np.arange(9).reshape(3, 3),

      index = ['a', 'c', 'd'],

      columns = ['Ohio', 'Texas', 'California'])

      print(frame)

      frame2 = frame.reindex(['a', 'b', 'c', 'd'])

      print(frame2)

      print('重新指定column')

      states = ['Texas', 'Utah', 'California']

      print(frame.reindex(columns = states))

      print('對DataFrame重新指定索引并指定填元素充方法')

      print(frame.reindex(index = ['a', 'b', 'c','d'],

      # method='ffill',

      columns = states))

      print(frame.ix[['a', 'b', 'd', 'c'], states])

      刪除索引上的值

      '''

      基本功能 丟棄指定軸上的項

      ? 丟棄某條軸上的一個或多個項很簡單,只要有一個索引數組或列表即可。由于

      需要執行一些數據整理和集合邏輯,所以drop方法返回的是一個在指定軸上刪

      除了指定值的新對象

      '''

      import numpy as np

      from pandas import Series,DataFrame

      print('Series根據索引刪除元素')

      obj = Series(np.arange(5),index=['a','b','c','d','e'])

      obj2 = obj.drop('c')

      print(obj2) #刪除C索引對應的值

      print(obj.drop(['d','e']))

      print('DataFrame刪除元素,可指定索引或列。')

      data = DataFrame(np.arange(16).reshape((4,4)),

      index=['A','B','C','D'],

      columns=['N1','N2','N3','N4'])

      print(data)

      print('刪除A行的元素')

      print(data.drop('A'))

      print('刪除N1列的元素')

      print(data.drop('N1',axis=1))

      print(data.drop(['N1','N3'],axis=1))

      索引、選取和過濾

      '''

      python-pandas之Index數據分析(六)

      基本功能 索引、選取和過濾

      ? Series索引(obj[...])的工作方式類似于NumPy數組的索引,只不過Series的

      索引值不只是整數。

      ? 利用標簽的切片運算與普通的Python切片運算不同,其末端是包含的

      (inclusive)。

      ? 對DataFrame進行索引其實就是獲取一個或多個列

      ? 為了在DataFrame的行上進行標簽索引,引入了專門的索引字段ix。

      ? DataFrame的索引選項

      類型 說明

      obj[val] 選取DataFrame的單個列或一組列。在一些特殊情況下會比較便利:布爾型數組(過濾

      行)、切片(行切片)、布爾型DataFrame(根據條件設置值)。

      obj.ix[val] 選取DataFrame的單個行或一組行

      obj.ix[:, val] 選取單個列或列子集

      obj.ix[val1, val] 同時選取行或列

      reindex方法 將一個或多個軸匹配到新索引

      xs方法 根據標簽選取單行或單列,并返回一個Series。

      icol、irow方法 根據整數位置選取單行或單列,并返回一個Series。

      get_value、set_value方法 根據行標簽或列標簽選取單個值

      '''

      import numpy as np

      from pandas import Series,DataFrame

      print('Series的索引,默認數字索引可以工作。')

      obj = Series(np.arange(4),index=['a','b','c','d'])

      print('obj的b索引對應的值')

      print(obj['b'])

      print(obj[2])

      print(obj[[2,3]])

      print(obj[obj<2])

      print('Series的數組切片')

      print(obj['b':'c']) # 閉區間

      obj['b':'c'] = 5 #將b和c索引的值重新賦值

      print(obj)

      print('DataFrame的索引')

      data = DataFrame(np.arange(16).reshape((4,4)),

      index=['A','B','C','D'],

      columns=['N1','N2','N3','N4'])

      print(data['N1']) #打印N1列元素

      print('打印N1、N3列元素,同時顯示行索引\n',data[['N1','N3']])#打印N1、N3列元素,同時顯示行索引

      print('分片方式打印前兩行元素\n',data[:2])

      print('指定索引和列')

      print(data.ix['B',['N2','N4']])

      print('指定行索引顯示A和B,列索引將按照3,0,1順序顯示即N4,N1,N2')

      print(data.ix[['A', 'B'], [3, 0, 1]])

      print(data.ix[0]) #打印第一行

      print(data.ix[:'C', 'N2']) # 從A到C行的第2列元素顯示。

      print('根據條件選擇')

      print(data[data.N3>3]) #帥選第三列大于3的元素

      print(data<5) # 打印True或者False

      data[data < 5] = 0 #將小于5的元素填充為0

      print(data)

      Python 數據挖掘

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格重新安裝的教程步驟(Excel怎么重新安裝)
      下一篇:汽車制造業精益生產管理(汽車精益生產方式)
      相關文章
      亚洲高清最新av网站| 亚洲高清一区二区三区电影| 亚洲国产精品成人一区| 亚洲AV无码专区在线电影成人 | 亚洲国产成人精品久久| 久久精品国产亚洲AV嫖农村妇女| 国产亚洲精品国看不卡| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产精品亚洲天堂| 亚洲av无码乱码在线观看野外| 爱爱帝国亚洲一区二区三区| 亚洲av永久中文无码精品综合| 亚洲AV无码精品国产成人| 亚洲精品美女久久久久久久| 亚洲精品成a人在线观看☆| 亚洲精品无码久久| 丰满亚洲大尺度无码无码专线| 毛片亚洲AV无码精品国产午夜| 另类小说亚洲色图| 亚洲无码日韩精品第一页| 中文字幕亚洲电影| 亚洲AV无码成人精品区天堂| 亚洲国产二区三区久久| 日韩亚洲Av人人夜夜澡人人爽| 亚洲视频中文字幕在线| 亚洲成AV人片久久| 亚洲国产成人99精品激情在线| 亚洲熟女乱色一区二区三区| 亚洲国产欧美国产综合一区| 国产成人综合亚洲| 亚洲最大AV网站在线观看| 亚洲成AV人片在线观看无码| 久久久亚洲AV波多野结衣| 亚洲精品电影天堂网| 国产精品亚洲精品观看不卡| 亚洲精品女同中文字幕| 亚洲精品视频在线看| 亚洲韩国精品无码一区二区三区 | 亚洲欧洲一区二区| 亚洲国产成人精品久久| 亚洲色大成网站www|