利用Python資料分析 資料規整化(四

2021-07-27 22:00:51 字數 3321 閱讀 3225

# 移除重複項

data = dataframe()

data

data.duplicated() # 返回乙個布林型別的series來表示各行是否為重複行 (duplicated adj. 複製出的,複寫書的)

data.drop_duplicates() # 丟棄掉重複的行

data['v1'] = range(7)

data.duplicated(['k1']) # 指定部分列進行重複判斷

data.drop_duplicates(['k1']) # 根據某一列進行過濾重複項

data.drop_duplicates(['k1','k2'],take_last = true) #duplicated和drop_duplicates預設保留的是乙個出現的值,可以指定為最後乙個

# 利用函式或者對映進行資料轉換 (根據陣列、series或者dataframe列中的值來實現轉換工作

data = dataframe()

data

# 新增一列來表示肉類食物**的動物型別

meat_to_animal = # 先編寫乙個肉類到動物的對映

# series的map方法可以接受乙個函式或者含有對映關係的字典型物件

data['animal'] = data['food'].map(str.lower).map(meat_to_animal) # 先將其全部轉成小寫格式

data

data['food'].map(lambda x:meat_to_animal[x.lower()]) # 使用lambda表示式做相同內容的工作

# 替換值

data = series([1.,-999,2,-999,-1000,3])

data

data.replace(-999,np.nan) # 將-999替換成乙個缺失值,產生的是乙個新的series

data.replace([-999,-1000],np.nan) # 傳入乙個列表一次替換多個值

data.replace([-999,-1000],[np.nan,0]) # 使用兩個列表來對不同的值替換成不同的值

data.replace() # 傳入的引數也可以是字典

# 重新命名軸索引

data = dataframe(np.arange(12).reshape((3,4)),

index=['ohio','colorado','new york'],

columns=['one','two','three','four'])

data.index.map(str.upper) # 使用map方法來把標籤大寫

data.index = data.index.map(str.upper) # 通過賦值的方法就地修改dataframe的軸標籤

data

data.rename(index=str.title,columns=str.upper) # 使用rename方法修改的是副本

data.rename(index=,

columns=) # 結合字典型物件實現對部分軸標籤的更新

_ = data.rename(index=,inplace=true) # 想要就地修改只要傳入inplace = t即可

data

# 離散化和麵元的劃分

ages = [20,22,25,27,21,23,37,31,61,45,41,32]

bins = [18,25,35,60,100] # 按照18~25 25~35 35~60 60~100 的區間進行劃分

cats = pd.cut(ages,bins)

cats # 返回的是乙個特殊的categorical物件,可以看成乙個表示面元名稱的字串

cats.labels # 表示所對應的元素屬於哪個區間

cats.levels # 顯示所劃分的區間

pd.value_counts(cats) # 計算每個區間的數量

pd.cut(ages,[18,26,36,61,100],right=false) # 修改為左邊為開區間,右邊為閉區間

group_names = ['youth','youngadult','middleaged','senior'] # 自己定義分組的名字

pd.cut(ages,bins,labels=group_names) # 使用labels標籤來設定

data = np.random.rand(20) # 生成乙個隨機數

pd.cut(data,4,precision=2) # 傳入的可以是面元的數量而不是確定的便捷這時候會根據資料的最大最小值計算等長的面元

# precision adj. 精確的,準確的,細緻的; 嚴守標準的; 行動精確的;

data = np.random.randn(1000) # 正態分佈

cats = pd.qcut(data,4) # qcut 按照分位數來進行面元的劃分這裡是按照四分位數進行切割

cats

pd.value_counts(cats)

pd.qcut(data,[0,0.1,0.5,0.9,1]) # 設定指定的分位數 包含端點

pd.value_counts(pd.qcut(data,[0,0.1,0.5,0.9,1]))

# 檢測和過濾異常值

np.random.seed(12345)

data = dataframe(np.random.randn(1000,4))

data.describe # 整個資料的概覽

col = data[3] # 找出某列絕對值>3的值

col[np.abs(col) > 3]

data[(np.abs(data) > 3).any(1)] # 選出全部含有超過3或者-3的值的行

data[np.abs(data)> 3] = np.sign(data) *3 # 將值限制在【-3,3】

data.describe

# 排列和隨機取樣

df = dataframe(np.arange(5 * 4).reshape(5,4))

sampler = np.random.permutation(5)

sampler

dfdf.take(sampler) # 隨機重排列

df.take(np.random.permutation(len(df))[:3])

bag = np.array([5,7,-1,6,4])

sampler = np.random.randint(0,len(bag),size=10)

sampler # 使用randint得到一組隨機整數

draws = bag.take(sampler)

draws

利用python做資料分析

3.2 資料分析的目的 主要就是為了在複雜 龐大的資料庫中提取對我們有用的資訊。讓這些資料產生一定的價值,幫助人們在日常生活中做一些決策時做一些參考。比如,在 中買東西,我們會首先看到物品的銷量 排行 以及顧客對物品的評價。這些都是經過資料分析得出來的。可見,資料分析在其中扮演著多麼重要的角色。3....

利用Python資料分析 pandas入門(三)

obj series range 3 index a b c index obj.index index index 1 index 1 d index物件是不能被修改的 index does not support mutable operations index pd.index np.aran...

利用python進行資料分析

目錄 10 minutes to pandas 翻譯 pandas中loc iloc ix的區別 pandas dropna函式 pandas中dataframe的stack unstack 和pivot 方法的對比 pandas中關於set index和reset index的用法 python匿...