程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

pandas

編輯:Python

4. pandas

文章目錄

    • 4. pandas
      • 4.1 pandas介紹
      • 4.2 使用pandas的原因
      • 4.3 pandas數據結構
        • 4.3.1 Series
        • 4.3.2 DataFrame
        • 4.3.3 MuliIndex
        • 4.3.4 panel
      • 4.4 基本數據操作
        • 4.4.1 索引操作
        • 4.4.2 賦值操作
        • 4.4.3 排序
      • 4.5 DataFrame 運算
        • 4.5.1 算術運算
        • 4.5.2 邏輯運算
        • 4.5.3 統計運算
        • 4.5.4 自定義運算
      • 4.6 pandas畫圖
        • 4.6.1 pandas.DataFrame.plot(kind="line")
        • 4.6.2 pandas.Series.plot
      • 4.7 文件讀取與存儲
        • 4.7.1 CSV
        • 4.7.2 HDF5
        • 4.7.3 JSON
      • 4.8 高級處理
        • 4.8.1 缺失值處理
        • 4.8.2 數據離散化
        • 4.8.3 合並
        • 4.8.4 交叉表與透視表
        • 4.8.5 分組與聚合

4.1 pandas介紹

2008年WesMcKinney開發出的庫

專門用於數據挖掘的開源python庫

以Numpy為基礎,借力Numpy模塊在計算方面性能高的優勢

基於matplotlib,能夠簡便的畫圖

獨特的數據結構

4.2 使用pandas的原因

  • 增強圖表可讀性

  • 便捷的數據處理能力

  • 讀取文件方便

  • 封裝了Matplotlib、Numpy的畫圖和計算

4.3 pandas數據結構

4.3.1 Series

  • 一維數據結構,類似於一維數組

    • 能夠保存任何類型的數據
    • 由一組數據和與之相關的索引兩部分構成
  • 創建

    • pd.Series(data=None, index=None, dtype=None)

      • data:傳入的數據,可以是ndarray、list等
      • index:索引,必須是唯一的,且與數據的長度相等。如果沒有傳入索引參數,則默認會自動創建一個從0-N的整數索引。
      • dtype:數據的類型
    • 通過已有數據創建

      • 指定內容,默認索引
      • 指定內容,指定索引
    • 通過字典數據創建

  • 屬性

    • index
    • values

4.3.2 DataFrame

  • 二維表格型數據結構,類似於二維數組或表格

    • 行索引

      • 表明不同行。橫向索引,叫index,0軸,axis = 0
    • 列索引

      • 表明不同列。縱向索引,叫columns,1軸,axis = 1
  • 創建

    • pd.DataFrame(data=None, index=None, columns=None)

      • index:行標簽。如果沒有傳入索引參數,則默認會自動創建一個從0-N的整數索引。
      • columns:列標簽。如果沒有傳入索引參數,則默認會自動創建一個從0-N的整數索引。
    • 通過已有數據創建

  • 屬性

    • shape

    • index

      • dataframe的行索引列表
    • columns

      • dataframe的列索引列表
    • values

      • 直接獲取其中array的值
    • T

      • 轉置
    • .head(5)

      • 顯示前5行內容,不補充參數,默認5行,填入參數則顯示前N行
    • .tail(5)

      • 顯示後5行內容,不補充參數,默認5行,填入參數則顯示後N行
  • 索引的設置

    • 修改行列索引值

      • 必須整體全部修改
    • 重設索引

      • reset_index(drop=False)

        • drop:默認為False,不刪除原來索引,如果為True,刪除原來的索引值
    • 以某列值設置為新的索引

      • set_index(keys, drop=True)

        • keys : 列索引名成或者列索引名稱的列表
        • drop : boolean, default True.當做新的索引,刪除原來的列

4.3.3 MuliIndex

  • 三維數據結構

  • 多級或分層索引對象

    • index屬性

      • names:levels的名稱
      • levels:每個level的元組值
  • 創建

    • pd.MultiIndex.from_arrays()

4.3.4 panel

  • 存儲3維數組

  • class pandas.Panel(data=None, items=None, major_axis=None, minor_axis=None)

    • data : ndarray或者dataframe
    • items : 索引或類似數組的對象,axis=0
    • major_axis : 索引或類似數組的對象,axis=1
    • minor_axis : 索引或類似數組的對象,axis=2
  • panel數據要是想看到,則需要進行索引到dataframe或者series才可以

4.4 基本數據操作

4.4.1 索引操作

  • 直接使用行列索引(先列後行)

  • 結合loc或者iloc使用索引

    • 使用loc:只能指定行列索引的名字
    • 使用iloc可以通過索引的下標去獲取
  • 使用ix組合索引

    • 使用ix進行下表和名稱組合做引

4.4.2 賦值操作

  • 對DataFrame當中的close列進行重新賦值為1

    • data[‘close’] = 1
    • data.close = 1

4.4.3 排序

  • 形式

    • 對於索引進行排序
    • 對於內容進行排序
  • dataframe排序

    • df.sort_values(by=, ascending=) , 單個鍵或者多個鍵進行排序

      • by:指定排序參考的鍵

      • ascending:默認升序

        • ascending=False:降序
        • ascending=True:升序
    • df.sort_index給索引進行排序

  • Series排序

    • series.sort_values(ascending=True)
    • series.sort_index()

4.5 DataFrame 運算

4.5.1 算術運算

  • add
  • sub

4.5.2 邏輯運算

  • >

  • 多個邏輯 &

  • 邏輯運算函數

    • query(expr)

      • expr:查詢字符串
    • isin(values)

      • 是否為某(些)值

4.5.3 統計運算

  • describe

    • 綜合分析: 能夠直接得出很多統計結果,count, mean, std, min, max 等
  • 統計函數

    • max(0 代表列求結果,1代表行求統計結果)

    • std() → 標准差

    • var() → 方差

    • median() → 中位數

    • idxmax() 求最大值的位置

    • idxmin() 求最小值的位置

    • 累計統計函數

4.5.4 自定義運算

  • apply(func, axis=0)

    • func:自定義函數
    • axis=0:默認是列,axis=1為行進行運算

4.6 pandas畫圖

4.6.1 pandas.DataFrame.plot(kind=“line”)

  • kind

    • ‘line’ : line plot (default)
    • ‘bar’ : vertical bar plot
    • ‘barh’ : horizontal bar plot
    • ‘hist’ : histogram
    • ‘pie’ : pie plot
    • ‘scatter’ : scatter plot

4.6.2 pandas.Series.plot

4.7 文件讀取與存儲

4.7.1 CSV

  • pandas.read_csv(filepath_or_buffer, sep =‘,’, usecols )

    • filepath_or_buffer:文件路徑
    • sep :分隔符,默認用","隔開
    • usecols:指定讀取的列名,列表形式
  • DataFrame.to_csv(path_or_buf=None, sep=', ’, columns=None, header=True, index=True, mode=‘w’, encoding=None)

    • path_or_buf :文件路徑
    • sep :分隔符,默認用","隔開
    • columns :選擇需要的列索引
    • header :boolean or list of string, default True,是否寫進列索引值
    • index:是否寫進行索引
    • mode:‘w’:重寫, ‘a’ 追加

4.7.2 HDF5

  • HDF5文件的讀取和存儲需要指定一個鍵,值為要存儲的DataFrame

  • pandas.read_hdf(path_or_buf,key =None,** kwargs)

    • path_or_buffer:文件路徑
    • key:讀取的鍵
    • return:Theselected object
  • DataFrame.to_hdf(path_or_buf, key, \kwargs)

  • 優先選擇使用HDF5文件存儲

    • HDF5在存儲的時候支持壓縮,使用的方式是blosc,這個是速度最快的也是pandas默認支持的
    • 使用壓縮可以提磁盤利用率,節省空間
    • HDF5還是跨平台的,可以輕松遷移到hadoop 上面

4.7.3 JSON

  • pandas.read_json(path_or_buf=None, orient=None, typ=‘frame’, lines=False)

    • 將JSON格式准換成默認的Pandas DataFrame格式
  • DataFrame.to_json(path_or_buf=None, orient=None, lines=False)

    • 將Pandas 對象存儲為json格式

4.8 高級處理

4.8.1 缺失值處理

  • 如何處理nan

    • 獲取缺失值的標記方式

      • NAN

        • 判斷數據中是否包含nan

          • 存在nan

            • 刪除,dropna(axis=‘rows’)
            • 替換,fillna(value, inplace=True)
          • 沒有使用nan

            • 先替換為nan,再繼續處理
          • pd.isnull(df)

          • pd.notnull(df)

4.8.2 數據離散化

  • 減少給定連續屬性值的個數

  • 連續屬性的離散化就是在連續屬性的值域上,將值域劃分為若干個離散的區間,最後用不同的符號或整數 值代表落在每個子區間中的屬性值

  • qcut、cut實現數據分組

    • qcut:大致分為相同的幾組
    • cut:自定義分組區間
  • get_dummies實現啞變量矩陣

4.8.3 合並

  • pd.concat([data1, data2], axis=1)

    • 按照行或列進行合並,axis=0為列索引,axis=1為行索引
  • pd.merge(left, right, how=‘inner’, on=None)

    • 可以指定按照兩組數據的共同鍵值對合並或者左右各自

      • left: DataFrame
      • right: 另一個DataFrame
      • on: 指定的共同鍵
      • how:按照什麼方式連接

4.8.4 交叉表與透視表

  • 交叉表

    • 計算一列數據對於另外一列數據的分組個數
  • 透視表

    • 指定某一列對另一列的關系

4.8.5 分組與聚合

  • 分組與聚合通常是分析數據的一種方式,通常與一些統計函數一起使用,查看數據的分組情況
  • pandas中,拋開聚合談分組,無意義

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved