利用python进行数据分析论文_利用Python进行数据分析之pandas的高级用法
pandas
前面我們學習了pandas兩種基本的數據結構Series和DataFrame以及基本功能,這節我們學習一下其他的略高級用法。
匯總和計算描述統計
df.sum(axis=1)
#求和,全為NaN才會NaN
df.mean(axis=1,skipna=False)
#平均數,有NaN結果就為NaN
這種約簡方法的選項:
選項
說明
axis
約簡的軸。DataFrame的行用0,列用1
skipna
排除缺失值,默認值為True
level
如果軸是層次化索引的(即Multilndex),則根據level分組約簡
匯總統計idxmin和idxmax:
df
out:
one two
a 1.40 NaN
b 7.10 -4.5
c NaN NaN
d 0.75 -1.3
df.idxmax()
out:
one b
two d
df.cumsum()
out:
one two
a 1.40 NaN
b 8.50 -4.5
c NaN NaN
d 9.25 -5.8
還有descripe 它是多個匯總統計:
df.describe()
out:
one two
count 3.000000 2.000000
mean 3.083333 -2.900000
std 3.493685 2.262742
min 0.750000 -4.500000
25% 1.075000 -3.700000
50% 1.400000 -2.900000
75% 4.250000 -2.100000
max 7.100000 -1.300000
obj = Series(['a', 'a', 'b', 'c']* 4)
obj.describe()
out:
count 16
unique 3
top a
freq 8
分別說明如下:
方法
說明
count
非NA值的數量
describe
針對Series或各DataFrame列計算匯總統計
min, max
計算最小值和最大值
argmin, argmax
計算能夠獲取到最小值和最大值的索引位置(整數)
idxmin, idxmax
計算能夠獲取到最小值和最大值的索引值
quantile
計算樣本的分位數(0到1)
sum
值的總和
mean
值的平均數
median
值的算術中位數(50%分位數)
mad
根據平均值計算平均絕對離差
var
樣本值的方差
std
樣本值的標準差
skew
樣本值的偏度(三階矩)
kurt
樣本值的峰度(四階矩)
cumsum
樣本值的累計和
cummin. cummax
樣本值的累計最大值和累計最小值
cumprod
樣本值的累計積
diff
計算一階差分《對時間序列很有用)
pct_change
計算百分數變化
相關系數與協方差
corr()計算相關系數
cov()計算協方差
DataFrame的corrwith方法可以計算其列或行與另外一個Series或者DataFrame之間的相關系數
唯一值、值計數以及成員資格
obj=Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
uniques = obj.unique()
uniques
out:
array([c, a, d, b], dtype=object)
計算各值出現的頻率:
obj.value_counts()
同時,它還是一個頂級的pandas方法,所以它還能這樣寫pd.value_count(obj.values)
默認降序排列,如果不要可以添加sort=False
isin用來判斷是否存在,返回bool
obj.isin([‘b’,’c’])
方法
說明
isin
計算一個表示“Series各值是否包含于傳入的值序列中”的布爾型數組
unique
計算Series中的唯一值數組,按發現的順序返回
value_counts
返回一個Series,其索引為唯一值,其值為頻率,按計數值降序排列
處理缺失數據
默認用NaN表示
dropna
fillna
isnull
notnull
濾除缺失數據
dropna默認丟棄任何含有缺失值的行,
加入how=’all’只丟棄全為NA的行。
(丟棄列用axis=1)
thresh=3 保留值(不為NaN)在3個或以上的。
填充缺失數據
這個其實之前也介紹過一點。
主要使用的fillna,它的參數有:
參數
說明
value
用于填充缺失值的標a值或字典對象
method
插值方式。如果函數調用時未指定其他參數的話,默認為”ffill”
axis
待填充的軸,默認axis=0
inplace
修改調用者對象而不產生副本
limit
(對于前向和后向填充)可以連續填充的最大數量
層次化索引 重排分級順序
我的理解感覺就是強行把三維放在二維上,這個篇幅問題不詳細說了,可以自行百度下,應該還是很好理解的。
重排分級順序則是對軸上各級別的順序的重新調整。
根據級別匯總統計
level選項來指定求和的級別。例如:
frame.sum(level='key2')
#則key2相同的進行求和
frame.sum(level='color', axis=1)
#指明列上的級別時,同時要指明axis=1
使用DataFrame的列
這個是什么意思呢,就是把DataFrame的一列或者多列當作行索引使用,如下:
frame =DataFrame({'a':range(7),'b':range(7,0,-1),
'c':['one','one','one','two','two','two','two'],'d': [0, 1, 2, 0,1,2,3]})
frame
out:
a b c d
0 0 7 one 0
1 1 6 one 1
2 2 5 one 2
3 3 4 two 0
4 4 3 two 1
5 5 2 two 2
6 6 1 two 3
frame2 = frame.set_index(['c','d'])
frame2
out:
a b
c d
one 0 0 7
1 1 6
2 2 5
two 0 3 4
1 4 3
2 5 2
3 6 1
默認情況下那些列會被移除,但是可以通過添加參數drop=False保留下來。
移回來使用reset_index()與上面相反。
其他pandas的話題
整數索引
ser=Series(np.arange(3.))
ser[-1]這種情況下會報錯,原因是它并不能分別你是要最后一個 還是索引是-1。
但是當非整數索引時它能知道是最后一個元素。
面板數據
panel數據結構作為三維版的DataFrame,有三個緯度供ix標簽選取。暫時僅供了解。
總結
pandas的初步入門到這就結束了。總的來說其實就是這兩種常用的數據結構Series,DataFrame的常用方法,尤其是DataFrame。感覺看完了也沒有什么整體的概念,之后多使用的時候再來翻翻記錄熟悉。
總結
以上是生活随笔為你收集整理的利用python进行数据分析论文_利用Python进行数据分析之pandas的高级用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 列名或所提供值的数目与表定义不匹配_关于
- 下一篇: python类的构造方法名称_搞懂Pyt