數據處理階段(一)

此代碼是在ubuntu虛擬機下的jupyter下進行操作的

#導包

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
1、刪除重複元素
使用duplicated()函數檢測重複的行,返回元素爲布爾類型的Series對象,每個元素對應一行,如果該行不是第一次出現,則元素爲True
#檢測是否重複
df=DataFrame({'color':['red','white','black','green'],
             'value':[2,3,7,5]})
df.duplicated()
0    False
1    False
2    False
3    False

dtype: bool
df.drop_duplicates()     #刪除重複的列
2.映射
映射的含義:創建一個映射關係列表,把values元素和一個特定的標籤或者字符串綁定
需要使用字典:
map = {
    'label1':'value1',
    'label2':'value2',
    ...
    }
包含三種操作:
replace()函數:替換元素
最重要:map()函數:新建一列
rename()函數:替換索引
1) replace()函數:替換元素
使用replace()函數,對values進行替換操作
df=DataFrame({'item':['ball','pen','pensil','cup','watch'],
            'color':['red','white','yellow','black','green'],
             'weight':[2,3,4,5,6]})
df
首先定義一個字典
new={'yellow':'blue','black':'white'}
new
df.replace(new)
replace還經常用來替換NaN元素
s=Series([1,np.nan,3])
s
0    1.0                #執行結果
1    NaN
2    3.0

dtype: float64
s1={np.nan:0}
s.replace(s1)
0    1.0
1    0.0
2    3.0
dtype: float64

2) map()函數:新建一列
使用map()函數,由已有的列生成一個新列
適合處理某一單獨的列。
df = DataFrame({'item':['ball','mug','pen'],
               'color':['white','rosso','verde']
               })
df
仍然是新建一個字典
price = {
    'ball':5.56,
    'mug':4.20,
    'pen':1.30
}
price['ball']
使用map()函數新建一個price列
df['color'] = df['item'].map(price)
df
3) rename()函數:替換索引
仍然是新建一個字典
new_index = {
    0:'first',
    1:'second',
    2:'third'
}
使用rename()函數替換行索引
df.rename(new_index)
3. 異常值檢測和過濾
使用describe()函數查看每一列的描述性統計量
df = DataFrame(np.random.randn(1000,3))
df.head()
df.describe()
使用std()函數可以求得DataFrame對象每一列的標準差
In [37]:
df.std()
根據每一列的標準差,對DataFrame元素進行過濾。
藉助any()函數,對每一列應用篩選條件
df[(np.abs(df) > (3*df.std())).any(axis=1)]
刪除某一指定的行
df.drop(288,inplace=True)
df.shape

df.drop(df[(np.abs(df) > (3*df.std())).any(axis=1)].index,inplace=True)
df.shape
4. 排序
使用.take()函數排序
可以藉助np.random.permutation()函數隨機排序
df = DataFrame(np.arange(25).reshape(5,5))
df
new_order = np.random.permutation(5)
new_order
df.take(new_order)
隨機抽樣
當DataFrame規模足夠大時,直接使用np.random.randint()函數,就配合take()函數實現隨機抽樣
sample = np.random.randint(0,len(df),size=3)
sample
df.take(sample)
發佈了39 篇原創文章 · 獲贊 16 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章