資料基本處理
資料缺失值處理有好幾種對應的函式,接下來介紹三種我學習的函式dropna,fillna,replace.這三種函式功能上的區別,以及不同的適用場景.這三種函式都在pandas裡,所以寫**時首先要匯入pandas
dropna()函式是用來濾除缺失值的,預設的情況下是清除所有的含有nan資料的行.
例1.
nacis2016_null.
dropna
()#所有含有nan的資料的行都會被濾除
nacis2016_null.
dropna
(how=
'all'
)#所有的列都是nan的資料的行會被刪除
引數thresh.
thresh=n 保留至少含有n個非空資料.
例2.
nacis2016_null.
dropna
(thresh=10)
.shape #保留有10個非空資料的行.
收集的資料有些列幾乎就沒有有效資料,這是就可以使axis=1濾除某一列.
例3.
nacis2016_null[
'jan. 2016'
]=np.nan
nacis2016_null.
dropna
(axis=
1,how=
"all"
) #就濾除例jan.
2016這一列
fillna能自動填充nan資料,並返回填充後的結果.
例4.
df = pd.
dataframe
(print
(df)
df.fillna(0
, inplace = true) #inplace = true,就將原**修改了
print
(df)
fillna()函式有inplace引數,將inplace設為true就將原dataframe中的資料更改了,不然預設為false,只改了顯示出來的**,原dataframe中的資料並沒有改變,再次列印還是會有空資料.
replace可以替換缺失值,但replace除了可以替換缺失值之外還有其他的拓展功能,可以改變已有的值或者改變某一列的值.
df = pd.
dataframe()
print
('################before replace###########'
)print
(df)
print
('################after replace###########'
)print
(df.
replace
(np.nan,0)
)################before replace###########
id item1 item2
01.0
11.0
12.0
2 nan
2 nan 3
3.0################after replace###########
id item1 item2
01.0
11.0
12.0
20.0
20.0
33.0
但是replace不能替換原表的內容.
總結:dropna是用來濾除缺失值的,但濾除的程度可以控制,不改變原表內容;fillna可以自動填充缺失資料,可以改原表內容;replace是替換缺失值,也可以替換已有的值,不改變原表內容.接下來介紹資料基本處理中常用的幾種資料預處理方法.
mean函式預設求每一列的的均值,如想求每行的均值則可設定axis(1)來求每一行的均值,並且預設跳過缺失值.
print
(df)
print
(df.
mean()
)print
(df.
mean(1
))id item1 item2
01.0
11.0
12.0
2 nan
2 nan 3
3.0id 1.5
item1 2.0
item2 2.0
dtype: float64
01.0
12.0
23.0
dtype: float64
可以設定skipna = false,這樣就不會跳過缺失值,但是這樣會讓計算報錯,所以可以先把缺失值替換成0,再計算,不過這樣意義不大.
計算樣本的標準差,用法與mean函式基本一致.在numpy和pandas中都有這個函式,但是功能有一定的差異.
用法與mean和std相同,預設是忽略缺失值的.
sort函式的用法:
dataframe.
sort_values
(by,axis=
0,ascending=true, inplace=false,kind=
'quicksort'
,na_position=
'last'
)[source]
老版的pandas裡的位sort新版的為sort_values.
.by為要進行的列的名稱;
.ascending為排序的方式,true為公升序,false為降序,預設為true的;
.axis為排序的軸列排序axis為0;
.inplace預設為false,表示對資料進行排序,不建立新例項;
.kind可選擇排序的方式,如快速排序;
no_position對nan值的處理方式,預設為last,就是將缺失值放在排序的最後,也有first表示將缺失值放在最前;
groupby函式用來對資料進行聚集,分組運算.
它的語法結構為:
dataframe[
'運算物件'].
groupby
(dataframe[
'分組物件'
])
計算每個銷售員的總銷售額:
(sales[
'quantity'
]*sales[
'price'])
.groupby
(sales[
'account'])
.sum()
account
146832
130000
714466
40000
714467
10000
737550
35000
dtype: int64
Python資料分析入門
原文 最近,analysis with programming加入了planet python。作為該 的首批特約部落格,我這裡來分享一下如何通過python來開始資料分析。具體內容如下 資料匯入 資料變換 資料統計描述 假設檢驗 視覺化 建立自定義函式。這是很關鍵的一步,為了後續的分析我們首先需要...
Python資料分析筆記
數值型字元型 資料結構 取值 true 真 false 假 運算規則 與 一假為假,兩真為真 true true true false false false 或 兩假為假,一真為真 true true true false false falsenot 非 非真為假,非假為真 not true n...
python資料分析 numpy入門
import numpy as np import random 建立陣列 t1 np.array random.randint 2,9 for i in range 10 t2 np.arange 1,6 t3 np.array range 1,10,2 print t1 t1 print t2 ...