1.案例數據來自python數據分析手冊,github地址:https://github.com/jakevdp/PythonDataScienceHandbook/tree/master/notebooks/datahtml
不克隆項目,怎麼在github下載單個文件?:http://www.javashuo.com/article/p-ygpobtzy-kv.htmlpython
2.pandas讀取文件,參考:http://www.javashuo.com/article/p-dvemruln-dr.htmlgit
1.導入三劍客的包:github
2.讀取數據:函數
read_csv能夠讀取1G的數據(excel沒法打開)spa
讀入各州縮寫:.net
讀入各州面積:3d
讀入各州人口:excel
3.合併pop和abbr兩個dfhtm
使用簡稱,合併全稱,可知,須要使用merge:
而且,左右兩列沒有相同columns,須要使用left_on/right_on來進行限定;
因爲默認使用的是內鏈接,因此經過shape發現會有部分未鏈接上的數據,經過how,能夠控制內外鏈接方式:
//使用right右鏈接,也會出現2448,緣由是雖然右表只有51條,可是左表有多條對應,會出現一對多
發現用於鏈接的列,有重複的列,咱們能夠使用drop進行刪除一列:經過axis控制,咱們就刪除了一列:
可是特別注意,drop返回的是刪除後的新DF,原先的DF未改變(這點能夠經過看控制檯是否輸出了內容,有輸出時則是返回了新的數據,沒有則是在原基礎上修改)
要想在原基礎上修改,須要控制inplace參數:
經過isnull()返回和原先形狀相等的df,再經過any看哪一列有空值:
進一步,經過空值操做,能夠查看具體哪些州有數據缺失:(經過unique來查看惟一值)
下一步,使用正確的值,填充這些缺失值:(經過boolean值來進行篩選,注意boolean這個Series的產生)
USA的處理,同理:
驗證結果:(能夠發現state已經沒有空值)
4.合併pop和areas兩個df
一樣,使用merge:(注意這裏使用left合併)
繼續使用isnull()來檢測空值:
發現area有空值,咱們繼續使用上面相似的方法,空值檢測並填充:
具體這裏是先檢測area列的bool值,再經過pop3取到哪些state是空:
能夠經過dropna來刪除含有空數據的行:(dropna的文檔注意查看)
檢查空值處理結果:
5.使用query查找數據
使用query來進行數據檢索:https://blog.csdn.net/tcy23456/article/details/85887334
對查詢結果進行索引重排,使用set_index,使得state成爲新的Index:(注意經過inplace控制替換原值)
經過計算,返回人口密度的series:
經過sort_values進行數據排序:
進一步的,能夠經過切片或者tail()函數取最小的幾個,取top幾
使用merge,能夠將計算出的密碼,融合進去人口結果集:
此處須要將Series轉換爲df再計算: