pandas DataFrame運算的實現
1 算術運算
add(other)
比如進行數學運算加上具體的一個數字
data['open'].add(1) 2018-02-27 24.53 2018-02-26 23.80 2018-02-23 23.88 2018-02-22 23.25 2018-02-14 22.49
sub(other)
2 邏輯運算
2.1 邏輯運算符號
例如篩選data[“open”] > 23的日期數據
data[“open”] > 23返回邏輯結果
data["open"] > 23 2018-02-27 True 2018-02-26 False 2018-02-23 False 2018-02-22 False 2018-02-14 False # 邏輯判斷的結果可以作為篩選的依據 data[data["open"] > 23].head()

完成多個邏輯判斷,
data[(data["open"] > 23) & (data["open"] < 24)].head()

2.2 邏輯運算函數
query(expr)
expr:查詢字符串
通過query使得剛才的過程更加方便簡單
# 以字符串形式
data.query("open<24 & open>23").head()
isin(values)
例如判斷'open'是否為23.53和23.85
# 可以指定值進行一個判斷,從而進行篩選操作 data[data["open"].isin([23.53, 23.85])]

3 統(tǒng)計運算
3.1 describe
綜合分析: 能夠直接得出很多統(tǒng)計結果,count, mean, std, min, max 等
# 計算平均值、標準差、最大值、最小值 data.describe()

3.2 統(tǒng)計函數
Numpy當中已經詳細介紹,在這里我們演示min(最小值), max(最大值), mean(平均值), median(中位數), var(方差), std(標準差),mode(眾數)結果:

對于單個函數去進行統(tǒng)計的時候,坐標軸還是按照默認列“columns” (axis=0, default),如果要對行“index” 需要指定(axis=1)
max()、min()
# 使用統(tǒng)計函數:0 代表列求結果, 1 代表行求統(tǒng)計結果 data.max(0) open 34.99 high 36.35 close 35.21 low 34.01 volume 501915.41 price_change 3.03 p_change 10.03 turnover 12.56 my_price_change 3.41 dtype: float64
std()、var()
# 方差 data.var(0) open 1.545255e+01 high 1.662665e+01 close 1.554572e+01 low 1.437902e+01 volume 5.458124e+09 price_change 8.072595e-01 p_change 1.664394e+01 turnover 4.323800e+00 my_price_change 6.409037e-01 dtype: float64 # 標準差 data.std(0) open 3.930973 high 4.077578 close 3.942806 low 3.791968 volume 73879.119354 price_change 0.898476 p_change 4.079698 turnover 2.079375 my_price_change 0.800565 dtype: float64
median():中位數
中位數為將數據從小到大排列,在最中間的那個數為中位數。如果沒有中間數,取中間兩個數的平均值。
df = pd.DataFrame({'COL1' : [2,3,4,5,4,2],
'COL2' : [0,1,2,3,4,2]})
df.median()
COL1 3.5
COL2 2.0
dtype: float64
idxmax()、idxmin()
# 求出最大值的位置 data.idxmax(axis=0) open 2015-06-15 high 2015-06-10 close 2015-06-12 low 2015-06-12 volume 2017-10-26 price_change 2015-06-09 p_change 2015-08-28 turnover 2017-10-26 my_price_change 2015-07-10 dtype: object # 求出最小值的位置 data.idxmin(axis=0) open 2015-03-02 high 2015-03-02 close 2015-09-02 low 2015-03-02 volume 2016-07-06 price_change 2015-06-15 p_change 2015-09-01 turnover 2016-07-06 my_price_change 2015-06-15 dtype: object
3.3 累計統(tǒng)計函數

那么這些累計統(tǒng)計函數怎么用?

以上這些函數可以對series和dataframe操作
這里我們按照時間的從前往后來進行累計
排序
# 排序之后,進行累計求和 data = data.sort_index()
對p_change進行求和
stock_rise = data['p_change'] # plot方法集成了前面直方圖、條形圖、餅圖、折線圖 stock_rise.cumsum() 2015-03-02 2.62 2015-03-03 4.06 2015-03-04 5.63 2015-03-05 7.65 2015-03-06 16.16 2015-03-09 16.37 2015-03-10 18.75 2015-03-11 16.36 2015-03-12 15.03 2015-03-13 17.58 2015-03-16 20.34 2015-03-17 22.42 2015-03-18 23.28 2015-03-19 23.74 2015-03-20 23.48 2015-03-23 23.74
那么如何讓這個連續(xù)求和的結果更好的顯示呢?

如果要使用plot函數,需要導入matplotlib.
import matplotlib.pyplot as plt # plot顯示圖形 stock_rise.cumsum().plot() # 需要調用show,才能顯示出結果 plt.show()
關于plot,稍后會介紹API的選擇
4 自定義運算
apply(func, axis=0)
- func:自定義函數
- axis=0:默認是列,axis=1為行進行運算
定義一個對列,最大值-最小值的函數
data[['open', 'close']].apply(lambda x: x.max() - x.min(), axis=0) open 22.74 close 22.85 dtype: float64
到此這篇關于pandas DataFrame運算的實現的文章就介紹到這了,更多相關pandas DataFrame運算內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Python中打亂列表順序random.shuffle()的使用方法
這篇文章主要介紹了詳解Python中打亂列表順序random.shuffle()的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11
python使用matplotlib的savefig保存時圖片保存不完整的問題
這篇文章主要介紹了python使用matplotlib的savefig保存時圖片保存不完整的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
Pycharm Terminal 與Project interpreter 安裝
本文主要介紹了Pycharm Terminal 與Project interpreter 安裝包不同步問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02

