----------------接上一篇《數據分析------數據處理(1)》https://www.cnblogs.com/lifengB511/p/10848862.html--------------html
Pandas裏並無直接指定索引的插入行的方法,須要用戶自行設置。算法
代碼以下:框架
In[1]: import pandas as pd df = pd.DataFrame({'a': [1,2,3], 'b':['a','b','c'], 'c':["A","B","C"]}) df Out[1]: a b c 0 1 a A 1 2 b B 2 3 c C In[2]:line = pd.DataFrame({df.columns[0]:"--", df.columns[1]:"--", df.columns[2]:"--"} index = [1]) line Out[2]: a b c 0 -- -- -- In[3]: df0 = pd.concat([df.loc[:0] , line , df.loc[1:]]) #執行插入line的語句,在索引爲0和1之間插入
df0
Out[3]: a b c 0 1 a A 1 -- -- -- 1 2 b B 2 3 c C
注意:df.loc[:0] 不能寫成 loc[0] ,由於 df.loc[0] 表示抽取 index=0 的行,返回的是 Series 而不是 DataFrame 。機器學習
插入事後,df0 的索引和以前的有重複,須要對索引從新設定,方法以下:函數
(1)reset_index() 函數給出新的索引,原索引將做爲新增長的 index 列,再對新增長的列使用 drop() 函數,刪除新增的 index 列。性能
(2)直接對 reset_index() 函數添加 drop=True 參數,便可。學習
(3)先找出 df0 的索引長度:lenth=len(df0.index),再利用整數序列函數生成索引:range(lenth),而後把生成的索引賦值給 df0.index 。測試
(1)總體替換優化
整列、整行的替換,直接替換便可。spa
(2)個別修改
把 df 中的 NaN 替換成 0 便於計算,相似 word 的查找替換。
① 單值替換:df.replace('B' , 'A') ,用 A 替換 B,也能夠用 df.replace({'B' : 'A'}) 實現;
② 指定列單值替換:df.replace({'列1' : '值1' ,'列2' : '值2'} , 0) ,用 0 替換列1 中的值1,以及列2 中的值2 。
③ 多值替換:df.replace(['B' , 'A'] , ['b' , 'a']),用 b 替換 B,a 替換 A 。
直接使用 df.reindex 方法交換數據中的兩行或者兩列。
代碼:
In[1]: import pandas as pd df = pd.DataFrame({'a': [1,2,3], 'b':['a','b','c'], 'c':["A","B","C"]}) df Out[1]: a b c 0 1 a A 1 2 b B 2 3 c C In[2]: hang = [0 ,2, 1] df.reindex(hang) #交換行數據 Out[2]: a b c 0 1 a A 2 3 c C 1 2 b B In[3]: lie = ['a' ,'b' ,'c'] df.reindex(columns = lie) #交換列數據 Out[3]: a c b 0 1 A a 1 2 B b 2 3 C c
Series 的 sort_index(ascending=True) 方法能夠對 index 進行排序操做,ascending 參數用於控制升序(ascending=True)或降序(ascending=False),默認升序。
DataFrame 中,sort_index(axis=0, by=None, ascending=True) 方法多了一個軸向的選擇參數與一個 by 參數,by 參數是針對某一列或某一些進行排序(不能對行使用 by)。
In[1]: from pandas import DataFrame dt0={'Ohio': [0, 6,3], 'Texas': [7, 4, 1], 'California': [2,8, 5]} df = DataFrame (df0, index=['a','d','c']) df Out[1]: California Ohio Texas a 2 0 7 c 8 6 4 d 5 3 1 In[2]: df.sort_index()#默認按 index 升序排序,降序: df.sort_index(ascending=False) Out [2]: California Ohio Texas a 2 0 7 c 5 3 1 d 8 6 4 In[3]:df.sort_index(by='Ohio')#按 Ohio 列升序排序,也能夠是多列 by=['Ohio', 'Texas'] Out[3]: California Ohio Texas a 2 0 7 c 5 3 1 d 8 6 4 In[4]: df.sort_index(by=['California','Texas']) Out[4]: California ohio Texas a 2 0 7 c 5 3 1 d 8 6 4 In[5]: df.sort_index(axis=1) Out[5]: California ohio Texas a 2 0 7 c 8 6 4 d 5 3 1
注意:排名方法(Series.rank(method='average', ascending=True))與排序的不一樣之處:排名方法會把對象的 values 替換成名稱(從 1 到 n ),對於平級項能夠經過該方法裏的 method 參數來處理,method 參數有四個可選項:average、min、max、first 。
Series 對象的從新索引經過其 reindex(index=None, **kwargs) 方法實現。**kwargs 中經常使用的參數有兩個:method=None 和 fill_value=np.NaN 。reindex() 方法會返回一個新對象,其 index 嚴格遵循給出的參數,method:{'backfill', 'bfill', 'pad', 'ffill', None} 參數用於指定插值方式,當沒有給出時,默認用 fill_value 填充,值爲 NaN(ffill=pad,bfill=back fill,分別指插值時向前仍是向後取值)。
參數說明:pad/ffill :用前一個非缺失值去填充該缺失值;backfill/bfill :用下一個非缺失值填充該缺失值;None:指定一個值去替換缺失值。
---set_index:重置索引
---reset_index:索引還原
———————————————分割線———————————————
主要是介紹本文主要內容:
第一章:初步介紹了AutoML的相關概念及發展歷程。
第二章:給出了自動構建機器學習框架的數學健全公式。
第三章:介紹了決定機器學習框架的不一樣方法。
第四章:從理論上解釋了機器學習模型選擇和超參數優化的各類方法。
第五章:介紹了自動數據清洗的方法。
第六章:介紹了特徵工程的方法。
第七章:解釋了提升生成的機器學習框架性能和減小優化運行時間的措施。
第八章:簡要介紹了現有的AutoML的實現及其框架。
第九章:根據各類數據集對這些框架進行評估。
第十章:提出瞭如何進一步研究AutoML的觀點。
第十一章:做了簡短的結論。
AutoML 旨在經過自動化提升構建ML應用程序,能夠自動化執行一些任務,提升效率,好比超參數優化(hyperparameter optimization HPO),這樣該領域的專家就能夠本身構建機器學習框架(ML pipelines),而沒必要依賴於數據科學家。
從 20 世紀 90 年代開始,commercial 臉部識別爲網格搜索選擇的分類算法提供了自動實現超參數優化 (HPO) (Dinsmore, 2016)。
2004 年,首次提出了超參數優化的有效策略。對於模擬的設置,例如對支持向量機 (SVM) 的 C 和 γ 進行調優 (Chen et al.2004),證實了引導搜索策略比網格搜索在更短的時間內能夠產生更好的結果。
一樣在 2004 年,第一個用於自動選擇特徵的方法已經發布 (Samanta, 2004)。全模型選擇 (Escalante et al.,2009) 是第一次嘗試自動構建完整的機器學習框架,經過在調整每種方法超參數的時候,同時選擇預處理方法、選擇特徵和分類算法。經過在各類數據集上測試這種方法,也證實了這種方法在未知領域的潛力 (Guyon et al.,2008)。
2011年開始,提出了許多將貝葉斯優化應用於超參數優化 (Bergstra et al.,2011,Snoek et al.,2012) 和模型選擇 (Thornton et al.,2013) 上的方法。
2015年,提出了第一個無該領域知識的自動選擇特徵工程的方法 (Kanter and Veeramachaneni, 2015)。自
2016年以來,能夠建造任意形狀的機器學習框架 (Olson and Moore, 2016)。
在2017年和2018年,隨着全球各大廠商發佈的商業化 AutoML 解決方案 (Golovin et al.,2017;Clouder, 2018;Baidu,2018),AutoML這個話題受到了大量媒體的關注(Google,2019)。同時,AutoML領域的研究取得了顯著的進展,致使許多性能得以改進。最新方法可以將AutoML應用程序的運行時間從幾小時減小到幾分鐘(Hutter et al..2018)。
---接下來還將繼續學習數據分析相關知識以及 AutoML 後續知識。