5,pandas高級數據處理

一、刪除重複元素 

使用duplicated()函數檢測重複的行,返回元素爲布爾類型的Series對象,每一個元素對應一行,若是該行不是第一次出現,則元素爲True html

 - keep參數:指定保留哪一重複的行數據
  • 建立具備重複元素行的DataFrame
import numpy as np
import pandas as pd
from pandas import Series,DataFrame

#建立一個df
np.random.seed(1)
df = DataFrame(data=np.random.randint(0,100,size=(8,4)))
df

  

#手動將df的某幾行設置成相同的內容
df.iloc[2] = [66,66,66,66]
df.iloc[4] = [66,66,66,66]
df.iloc[7] = [66,66,66,66]
df

  

  • 使用duplicated查看全部重複元素行 
df.duplicated(keep='last')

  

indexs = df.loc[df.duplicated(keep='last')].index
df.drop(labels=indexs,axis=0)

  

使用drop_duplicates()函數刪除重複的行數組

  • drop_duplicates(keep='first/last'/False) 
df.drop_duplicates(keep='last')

 

2. 映射 

1) replace()函數:替換元素 

使用replace()函數,對values進行映射操做 app

Series替換操做

  • 單值替換
    • 普通替換
    • 字典替換(推薦)
  • 多值替換
    • 列表替換
    • 字典替換(推薦)
  • 參數
    • to_replace:被替換的元素
 

DataFrame替換操做

  • 單值替換
    • 普通替換: 替換全部符合要求的元素:to_replace=15,value='e'
    • 按列指定單值替換: to_replace={列標籤:替換值} value='value'
  • 多值替換
    • 列表替換: to_replace=[] value=[]
    • 字典替換(推薦) to_replace={to_replace:value,to_replace:value}

 

2) map()函數:新建一列 , map函數並非df的方法,而是series的方法 

  • map()能夠映射新一列數據
  • map()中可使用lambd表達式
  • map()中可使用方法,能夠是自定義的方法dom

    eg:map({to_replace:value})函數

  • 注意 map()中不能使用sum之類的函數,for循環 
  • 新增一列:給df中,添加一列,該列的值爲英文名對應的中文名

 

map當作一種運算工具,至於執行何種運算,是由map函數的參數決定的(參數:lambda,函數)工具

  • 使用自定義函數

注意:並非任何形式的函數均可以做爲map的參數。只有當一個函數具備一個參數且有返回值,那麼該函數才能夠做爲map的參數。spa

 

3. 使用聚合操做對數據異常值檢測和過濾 

使用df.std()函數能夠求得DataFrame對象每一列的標準差 3d

  • 建立一個1000行3列的df 範圍(0-1),求其每一列的標準差 

 

4. 排序 

使用.take()函數排序

- take()函數接受一個索引列表,用數字表示,使得df根據列表中索引的順序進行排序 - eg:df.take([1,3,4,2,5])

能夠藉助np.random.permutation()函數隨機排序code

 

random_df = df.take(np.random.permutation(1000),axis=0).take(np.random.permutation(3),axis=1)
random_df[0:100]
  • np.random.permutation(x)能夠生成x個從0-(x-1)的隨機數列

 

5. 數據分類處理【重點】 

數據聚合是數據處理的最後一步,一般是要使每個數組生成一個單一的數值。orm

數據分類處理:

  • 分組:先把數據分爲幾組
  • 用函數處理:爲不一樣組的數據應用不一樣的函數以轉換數據
  • 合併:把不一樣組獲得的結果合併起來

數據分類處理的核心:

 - groupby()函數 - groups屬性查看分組狀況 - eg: df.groupby(by='item').groups

分組

from pandas import DataFrame,Series
df = DataFrame({'item':['Apple','Banana','Orange','Banana','Orange','Apple'],
                'price':[4,3,3,2.5,4,2],
               'color':['red','yellow','yellow','green','green','green'],
               'weight':[12,20,50,30,20,44]})
df

6. 高級數據聚合 

使用groupby分組後,也可使用transform和apply提供自定義函數實現更多的運算

  • df.groupby('item')['price'].sum() <==> df.groupby('item')['price'].apply(sum)
  • transform和apply都會進行運算,在transform或者apply中傳入函數便可
  • transform和apply也能夠傳入一個lambda表達式

相關文章
相關標籤/搜索