摘要:前言在數據分析和建模之前需要審查數據是否滿足數據處理應用的要求,以及對數據進行清洗,轉化,合并,重塑等一系列規整化處理。通過數據信息查看可知數據中存在缺失值,比如各存在個,各存在個。
前言
在數據分析和建模之前需要審查數據是否滿足數據處理應用的要求,以及對數據進行清洗,轉化,合并,重塑等一系列規整化處理。pandas標準庫提供了高級靈活的方法,能夠輕松地將數據規整化為正確的形式,本文通過例程介紹使用pandas庫從獲取數據到最終數據重塑的方法。
數據文件獲取Pandas庫提供專門處理csv文件的方法read_csv(),具體可參考《Pandas庫基礎分析——CSV文件加載和存儲》中的Pandas庫讀寫CSV文件章節。
數據信息查看當數據量較大時,將數據所有信息輸出到控制臺中會顯得過于冗雜,可通過查看部分數據信息,簡要了解數據的特性。
(1)查看數據前5行和尾部倒數5行數據,列名和索引信息,數據行列形狀
print df_csvload.head()#查看前幾行 print df_csvload.tail()#查看后幾行 print df_csvload.columns#查看列名 print df_csvload.index#查看索引 print df_csvload.shape#查看形狀
(2)查看各列數據描述性統計信息,如最小值、最大值、均值、標準差等
print df_csvload.describe()#查看各列數據描述性統計
(3)查看數據是否有缺失及每列數據的類型
print df_csvload.info()#查看缺失及每列數據類型缺失值處理
對Pandas做數據時不可避免會因為一些原因出現缺失值NaN(Not a number),比如兩個DataFrame對象進行運算時對于無法匹配的位置就會出現缺失值。通過數據信息查看可知數據中存在缺失值,比如dataA、dataC、dataE各存在2個NaN,dataB、dataD、各存在1個NaN。
(1)Pandas包中isnull()和notnull()方法用于判斷數據是否為缺失值,若是缺失值則isnull()返回值為True,notnull()返回值為False。
print df_csvload.isnull()#判斷數據缺失值
(2)由于isnull()和notnull()方法判斷缺失值生成的是所有數據的True/False矩陣,對于龐大的Dataframe數據,很難一眼看出缺失值位置,可在df_csvload.isnull()矩陣基礎上結合數據轉置方法.T和篩選滿足True值條件列方法.any(),查找出含有NaN值所在的行。
print df_csvload[df_csvload.isnull().T.any().T]#查看NAN值所在行
(3)對缺失值的處理的方法有刪除和填充,此處通過DataFrame.dropna()方法將所有值都為缺失值的行刪除,DataFrame.fillna()方法在列方向上對缺失值前值填充。
df_csvload = df_csvload.dropna(axis=0,how="all")#NAN值刪除 行所有為NAN刪除 df_csvload.fillna(method="ffill",axis=0,inplace=True)#NAN值填充 列方向前值填充 print df_csvload[df_csvload.isnull().values==True]#查看NAN值刪除填充后值特殊值處理
(1)查看各列數據描述性統計信息時發現“Flow”列最小值為0值,查找出0值具體位置后用“Flow”列通過中位值填充0值
注:loc為通過行和列的標簽名提取相應數據,iloc為通過位置提取特定的數據,而ix為標簽和位置索引混合的方式切片數據
print df_csvload[df_csvload.values==0]#查看所有0值的元素 print df_csvload[df_csvload.Flow.isin([0])]#查看指定列0值 df_csvload.loc[df_csvload.loc[:,"Flow"]==0,"Flow"] = df_csvload.Flow.median()#中位值替換0值
(2)查看各列數據值時發現“dateE”列數據精度保留了6位小數,而“Flow”列數據精度保留了1位小數,此處將“dateE”列數據的精度更改為2位小數,將“Flow”列數據轉化為整數,以便于顯示和運算。
df_csvload = df_csvload.round(2)#保留2位小數 df_csvload.Flow = df_csvload.Flow.astype(int)#轉換為整數數據運算轉化
(1)篩選出“Flow”列值大于該列均值的行,并只提取出所需的“date”列數據用于后續的運算。(可使用&、|符號實現多條件篩選)
new_df = df_csvload[["dataA","dataB","dataC","dataD"]][(df_csvload.Flow>df_csvload.Flow.mean())]
(2)通過apply()方法作用于DataFrame的行,計算出new_df每行數值最大與最小值之差,以及每行數值與平均值之差。
max_min_df = new_df.apply((lambda x:x.max() - x.min()),axis = 1)#計算橫軸最大最小值之差 err_mean_df = new_df.apply((lambda x:x-x.mean()),axis = 1)#計算橫軸數值與平均值之差
也可分別計算new_df中每列數值與mean_df均值的誤差。Pandas中Series與Series之間通過index匹配運算(加減乘除),同理Series與DataFrame之間是Series的index與DataFrame的columns之間匹配,運算的方式是將DataFrame每一行都與Series進行匹配運算,DataFrame之間則同時對index與columns進行匹配成功的元素進行運算,當以上類型出現無法匹配時用NaN進行填充。
mean_df = new_df.apply((lambda x:x.mean()),axis = 1)#計算橫軸平均值 dataA_df = new_df.dataA - mean_df#計算誤差 dataB_df = new_df.dataB - mean_df#計算誤差 dataC_df = new_df.dataC - mean_df#計算誤差 dataD_df = new_df.dataD - mean_df#計算誤差
(3)applymap()方法作用于DataFrame元素級,此處將err_mean_df數值轉換為真值矩陣
err_mean_df = err_mean_df.applymap(lambda x: True if(x>0) else False)# 大于零為True 小于零為False數據合并及連接
pandas提供了三種方式實現數據的合并,pandas.merge根據一個或多個鍵將不同的DataFrame中的行連接起來;pandas.concat沿著一條軸將多個對象堆疊到一起;combine_first將重復數據編接在一起,用一個對象中的值填充另外一個對象中的缺失值。此處使用pd.concat將數據按列方向合并,即axis為1,設置keys值用于形成連接軸上的層次化索引。
mer_df = pd.DataFrame({"max_min":max_min_df,"mean":mean_df}) result =pd.concat([mer_df, err_mean_df],axis=1,keys=["diff_para","diff_err"])
更多python量化交易內容互動請加微信公眾號:PythonQT-YuanXiao
歡迎訂閱量化交易課程:鏈接地址
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41756.html
摘要:數據規整化清理轉換合并重塑數據聚合與分組運算數據規整化清理轉換合并重塑合并數據集可根據一個或多個鍵將不同中的行鏈接起來。函數根據樣本分位數對數據進行面元劃分。字典或,給出待分組軸上的值與分組名之間的對應關系。 本篇內容為整理《利用Python進行數據分析》,博主使用代碼為 Python3,部分內容和書本有出入。 在前幾篇中我們介紹了 NumPy、pandas、matplotlib 三個...
摘要:一大熊貓世界來去自如的老生常談,從基礎來看,我們仍然關心對于與外部數據是如何交互的。函數受限制問題唯一重要的參數,標志著一個的第個頁將會被取出。數據分析入門之總結基礎一歡迎來翔的博客查看完成版。 一.大熊貓世界來去自如:Pandas的I/O 老生常談,從基礎來看,我們仍然關心pandas對于與外部數據是如何交互的。 1.1 結構化數據輸入輸出 read_csv與to_csv 是?對...
摘要:屬于前一種,而且日益被用于數學計算機器學習和多種數據科學應用。近來,由于擁有多個針對機器學習自然語言處理數據視覺化數據探索數據分析和數據挖掘的插件,豐富的數據科學生態體系得到了較大的發展,甚至有將數據科學社區化的趨勢。 譯者注:本文的英文原文地址是:Python for Data Science vs Python for Web Development,發布時間是10月29日。譯者一...
摘要:編程基礎要學習如何用進行數據分析,數據分析師建議第一步是要了解一些的編程基礎,知道的數據結構,什么是向量列表數組字典等等了解的各種函數及模塊。數據分析師認為數據分析有的工作都在處理數據。 showImg(https://segmentfault.com/img/bVbnbZo?w=1024&h=653); 本文為CDA數據分析研究院原創作品,轉載需授權 1.為什么選擇Python進行數...
摘要:去吧,參加一個在上正在舉辦的實時比賽吧試試你所學到的全部知識微軟雅黑深度學習終于看到這個,興奮吧現在,你已經學到了絕大多數關于機器學習的技術,是時候試試深度學習了。微軟雅黑對于深度學習,我也是個新手,就請把這些建議當作參考吧。 如果你想做一個數據科學家,或者作為一個數據科學家你想擴展自己的工具和知識庫,那么,你來對地方了。這篇文章的目的,是給剛開始使用Python進行數據分析的人,指明一條全...
閱讀 2746·2021-11-16 11:45
閱讀 1654·2021-09-26 10:19
閱讀 2051·2021-09-13 10:28
閱讀 2803·2021-09-08 10:46
閱讀 1529·2021-09-07 10:13
閱讀 1525·2019-08-30 13:50
閱讀 1374·2019-08-30 11:17
閱讀 1455·2019-08-29 13:18