本文是作者學(xué)習(xí)課程Python數(shù)據(jù)分析與展示 北京理工大學(xué) 嵩天的簡(jiǎn)要學(xué)習(xí)筆記.
import pandas as pd
基本操作
d=pd.Series(range(20))#創(chuàng)造series
d.cumsum()#計(jì)算前n項(xiàng)和
基于兩個(gè)數(shù)據(jù)類型
- Series
- DataFrame
的四個(gè)操作 - 基本操作
- 運(yùn)算操作
- 特征類操作
- 關(guān)聯(lián)類操作
對(duì)比NumPy和Pandas
|NumPy|Pandas|
|:|:|
|基礎(chǔ)數(shù)據(jù)類型|擴(kuò)展數(shù)據(jù)類型|
|關(guān)注數(shù)據(jù)的結(jié)構(gòu)表達(dá)|關(guān)注數(shù)據(jù)的應(yīng)用表達(dá)|
|維度:數(shù)據(jù)間關(guān)系|數(shù)據(jù)和索引之間關(guān)系|
Series
由一組數(shù)據(jù)機(jī)器相關(guān)聯(lián)的數(shù)據(jù)索引組成
d=pd.Series(range(20))#傳入一個(gè)列表創(chuàng)造series,pandas會(huì)為其自動(dòng)創(chuàng)造索引
#或者傳第二個(gè)參數(shù)--一個(gè)列表給參數(shù)index,這樣可以自助定義索引
Series可以通過(guò)以下類型創(chuàng)建
- Python列表
- index和列表元素一致
- 標(biāo)量值
- index表示其尺寸
- Python字典 {key:value,...}
- 可以傳入index對(duì)參數(shù)順序進(jìn)行規(guī)范
- ndarray
n=pd.Series(np.arange(5))- 其他函數(shù)
- 如range()
Series類型的基本操作
b=pd.Series([9,8,7,6],['a','b','c','d'])
b.index
b.values
b['b']
b[1]
#自動(dòng)索引和自定義索引并存,但是不能混用不然自動(dòng)產(chǎn)生的index會(huì)NaN
#可以用ndarray的操作方法里的ndarray進(jìn)行切片
#如果切片了好幾個(gè)鍵值對(duì)會(huì)默認(rèn)生成新Series然而切片一個(gè)就只會(huì)直接訪問(wèn)
'c' in b
b.get('f',100)
# Series+Series
#索引不同的不運(yùn)算(NaN)索引相同的進(jìn)行運(yùn)算
b.name#對(duì)象的名字
b.index.name#索引的名字
#Series隨時(shí)修改,立刻生效
DataFrame的本質(zhì)是多列數(shù)據(jù)共用一列索引,縱向的column axis=1,橫向的index axis=0;常用于二維數(shù)據(jù)
創(chuàng)建DataFrame
DataFrame類型的基本操作
- 二維ndarray
- 一維ndarray\列表\字典\元組\Series字典
- Series
- 其他DataFrame
d = pd.DataFrame(np.arange(10).reshape(2,5))
dt = {'one':pd.Series([1,2,3],index={'a','b','c'}),'two':pd.Series([9,8,7,6],index=['a','b','c','d'])}
d=pd.DataFrame(dt)
dp.DataFrame(dt,index=[],columns=[])
#調(diào)整dt的行列
d.columns
d.values
d.index
d.ix['']#生成一行新的對(duì)象
d[][]#支持聯(lián)合索引的二位帶標(biāo)簽數(shù)組
d.reindex()#傳列表參數(shù)給index或者column參數(shù)
d.columns.delete()
d.index.insert()
pandas庫(kù)的數(shù)據(jù)類型運(yùn)算
- 算數(shù)運(yùn)算法則
- 根據(jù)行列索引補(bǔ)齊之后運(yùn)算,默認(rèn)產(chǎn)生浮點(diǎn)數(shù)
- 不起的時(shí)候填nan
- 高低維之間采用廣播運(yùn)算
- 四則運(yùn)算可以采用方法運(yùn)算
- .add() .sub() .mul() .div()
- fill_value參數(shù)可以替代nan賦初值
- 可以考慮布爾型對(duì)象
摘要的過(guò)程:有損地利用數(shù)據(jù)對(duì)數(shù)據(jù)進(jìn)行處理.
數(shù)據(jù)基本處理
數(shù)據(jù)的排序
a.sort_index(axis=0,ascending=True)#在指定軸上根據(jù)索引進(jìn)行排序,默認(rèn)升序
#也可以對(duì)縱軸進(jìn)行排序
Series.sort_values(axis=0,ascending=True)
DataFrame.sort_values(by,axis=0,ascending=True)#by表示排序軸的索引 NaN項(xiàng)被放在末尾
基本統(tǒng)計(jì)分析方法
| 方法 | 說(shuō)明 |
|---|---|
| .sum() .count() | 總和\有效值數(shù)量 |
| .mean() .median() | 算術(shù)平均數(shù)\中位數(shù) |
| .var() .std() | 方差\標(biāo)準(zhǔn)差 |
| .min() .max() | 最小\最大值 |
| argmin() argmax() | 計(jì)算極值所在位置的索引位置(自動(dòng)索引)Series Only |
| .idxmin() .idxmax() | 計(jì)算極值所在位置的索引(自定義索引)Series Only |
| .describe() | 生成0軸的所有元素的所有初步統(tǒng)計(jì)結(jié)果,由于生成的是Series類型,因此可以用方括號(hào)索引 |
累計(jì)統(tǒng)計(jì)分析方法
| 方法 | 說(shuō)明 |
|---|---|
| cumsum(n) | 計(jì)算前n個(gè)數(shù)字的和 |
| cumprod(n) | 計(jì)算前n個(gè)數(shù)的積 |
| cummax(n) | 計(jì)算前n個(gè)數(shù)字的最大值 |
| cummin(n) | 計(jì)算前n個(gè)數(shù)字的最小值 |
| .rolling(w) | 獲取w為寬的窗口.后面接基本統(tǒng)計(jì)分析方法可以依次對(duì)相鄰的w個(gè)元素進(jìn)行操作 |
相關(guān)分析方法
| 方法 | 說(shuō)明 |
|---|---|
| .cov() | 計(jì)算協(xié)方差矩陣 |
| .corr() | 計(jì)算相關(guān)系數(shù)矩陣,Pearson\Spearman\Kendall等相關(guān)系數(shù) |