利用python进行统计分析的一些笔记(1)
生活随笔
收集整理的這篇文章主要介紹了
利用python进行统计分析的一些笔记(1)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這個姿勢筆記,比較雜亂,記錄學(xué)習(xí)過程的。
?第7章。數(shù)據(jù)清洗
""" Series的map方法可以接受一個函數(shù)或含有映射關(guān)系的字典型對象, 使用map是一種實(shí)現(xiàn)元素級轉(zhuǎn)換以及其他數(shù)據(jù)清理工作的便捷方式。 map 是一個常用的函數(shù),可以使用它,對變量重新賦值,比如這樣的。 """data = pd.DataFrame({'x':range(5), 'y':list('abcde')}) data char2word = {'a':'apple','b':'back','c':'cat','d':'desk','e':'egg' }data['new'] = data['y'].map(char2word) data可以得到。
''' lower 和 title 可以大小寫 ''' x = data['new'].str.title() x.str.lower()?
######################### ############ replace ######################### data = pd.Series([1., -999., 2., -999., -1000., 3.]) data import numpy as npdata.replace(-999, np.nan)data.replace([-999, -1000], np.nan) data.replace([-999, -1000], [np.nan, 0]) data.replace({-999: np.nan, -1000: 0})''' replace 接受 單個值,列表, 字典,那么這樣接受不? ''' ''' data data.replace([{-999, 2:0}, 3:333]) data.replace([[-999,3], 2], [np.nan, 0]) ### 這樣不行 data.map({-999:2}) dat如果用replace, 那么沒有對應(yīng)值的就會被替換成缺失值。
?
data.map({'-999':np.nan}) 結(jié)果就會全都是缺失值,因?yàn)槠渌囊彩菦]有對應(yīng),都變成缺失。rename 方法。
######################## ########### 重命名 軸索引 ########################data = pd.DataFrame(np.arange(12).reshape((3, 4)),index=['Ohio', 'Colorado', 'New York'],columns=['one', 'two', 'three', 'four']) datatransfom = lambda x: x[:4].upper() ''' 這個函數(shù)可以取單詞的前4個字母,然后轉(zhuǎn)換成大寫。 ''' data.index.map(transfom) ''' transorm是一個函數(shù)。 ''' data.index = data.index.map(transfom) datadata.rename(index=str.title, columns=str.upper) #### 可以這樣直接寫,挺方便的。 # 比如 frame = pd.DataFrame(np.arange(12).reshape(3, 4),index = ['apple', 'basketboall', 'celebrate'],columns = ['xmanufact', 'killing', 'zicker', 'tankre'])frame ''' 這里又一個 range的坑 ''' np.arange(12).reshape(3, 4) np.asarray(range(12)).reshape(3, 4) # 這樣才行。 range(12).reshape(3, 4) # 這里用range 就會報(bào)錯,因?yàn)?#xff0c;range不會產(chǎn)生 array, np.arange,才會產(chǎn)生有結(jié)構(gòu)的sarray #繼續(xù)transfom frame.index.map(transfom) frame.index = frame.index.map(transfom) frame frame """ 這里 frame 已經(jīng)修改了, 如果想要創(chuàng)建數(shù)據(jù)集的轉(zhuǎn)換版(而不是修改原始數(shù)據(jù)),比較實(shí)用的方法是 rename: 書中說, """ frame.rename(index = str.title, columns = str.upper) ############特別說明一下,rename可以結(jié)合字典型對象實(shí)現(xiàn)對部分軸標(biāo)簽的更新: frame frame.rename(index = {'APPL':'huawei'}, columns = {'killing':'bill'})data.rename(index={'OHIO': "INDIANA"},columns={'three': 'peekaboo'} ) datadata.rename(index={'OHIO': "INDIANA"}, columns={'three': 'peekaboo'}, inplace=True) data ''' 這里的rename 的方法很有趣, 可以直接接受一個 mapper, 像這樣的,frame.rename(index = str.title, columns = str.upper) 就是制定, 行的索引,按照字符串處理, 都變成大寫的。列的索引都按照字符串處理,都變成大寫的。 '''然后是離散化方法, 就是使用cut
cut函數(shù),
########################################### ################## 7.2 離散化和面元劃分 ###########################################ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32] ages bins = [18, 25, 35, 60, 100] cats = pd.cut(ages, bins)'''44 pandas返回的是一個特殊的Categorical對象。結(jié) 它的底層含有一個表示不同分類名稱 的類型數(shù)組,以及一個codes屬性中的年齡數(shù)據(jù)的標(biāo)簽 '''# cats cats.codes cats.categories # cats # cats.keys() # cats # type(cats) # pd.cut() # cats.categories # cats # cats.Length # cats.tolist() # cats.ordered pd.value_counts(cats)?這個比較簡單,可以再加一個 labels選項(xiàng)。也可以不加。
############### 過濾異常值
''' 7.2 檢測和過濾異常值 '''data = pd.DataFrame(np.random.randn(1000, 4)) data.describe()col = data[2] col col[np.abs(col) > 3]data data.head() data.columnnames =['a', 'b', 'c', 'd'] ################### # columnnames 不會改變列的名字, 那會改變什么呢? data data.columns = ['a', 'b', 'c', 'd'] data[data['a'] > 3].idxmax() data['a'] > 3 data[data['a'] > 3] c = data['c'] c.idxmax() c data['c'].nlargest() c.argmax(2) np.argpartition(c, ) x = np.array([4, 3, 2, 1]) np.argpartition(x, 3)[0] np.argpartition(x, 3) np.argpartition(x,3) np.argpartition(x,2) np.argpartition(x,5) np.argwhere(x, 3)data[(np.abs(data)> 3).any(1)] data[data>3].any(1) (data>3).any(1)######################### 看來必須用上面的方式寫, data[(data>3.5).any(1)]總結(jié)
以上是生活随笔為你收集整理的利用python进行统计分析的一些笔记(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬虫 python 爬取php的网页,带
- 下一篇: 一兆等于多少亿?