Pandas——進階一(資料處理)
以下所有的例子都匯入以下包
import pandas as pd
from pandas import DataFrame,Series
import numpy as np
from numpy import nan as Na
一、Pandas資料算術運算
1.1 Dateframe元素相加
在將物件相加時,如果存在不同的索引對,則結果的索引就是該索引對的並集。
1.2 Dateframe與Series元素相減
現將一維資料廣播成二維,再進行運算
1.3 apply 與 applymap
二、Pandas資料修改
2.1 資料複製–直接賦值
若直接賦值的話,只是複製索引,元素儲存在相同記憶體位置中,對元素修改會影響另外一個 train1 = train.head() train1.iloc[0,0] #源資料 train.iloc[0,0] = 100 #修改其中一個物件 #對2個物件都起作用 train.iloc[0,0] train1.iloc[0,0]
2.2 資料複製–copy()函式
對索引、記憶體進行復制,還建立了新儲存位置,對元素修改不影響另外一個 train1 = train.head().copy() train1.iloc[0,0] #源資料 train.iloc[0,0] = 200 #修改其中一個物件 #只對修改的物件起作用 train.iloc[0,0] train1.iloc[0,0]
2.3 行列刪除
▶ Del 只能刪除一列:del df['column_name'] train1.column del train['Age'] train.column ▶ pd.drop 刪除多列:pd.drop(labels,axis=1,inplace = False) labels:行列名稱列表 axis: 0表示刪除行,1表示刪除列 inplace: False表示源 DataFrame 不變(預設) True 表示源 DataFrame改變 train1.columns train1.drop(labels=['Name','Ticket'],inplace=True,axis=1) train1.column ▶ pd.pop() 只能刪除一列並把刪除的一列賦值給新的物件 train.columns sex = train.pop('Sex') train1.columns type(sex) ▶ pd.drop 刪除行:pd.drop(labels,axis=0,inplace = False) train1.index train1.drop(labels=['index1','index3'],inplace=True,axis=0) train1.index
示例:(刪除是操作檢視) df = DataFrame(np.arange(20).reshape((4,5)), index = ["山東","山西","湖南","湖北"], columns = ["one","two","three","four","five"]) >>> one two three four five 山東 0 1 2 3 4 山西 5 6 7 8 9 湖南 10 11 12 13 14 湖北 15 16 17 18 19 df.drop(["湖南","山東"]) #預設刪除行 >>> one two three four five 山西 5 6 7 8 9 湖北 15 16 17 18 19 df.drop(["one","two"],axis = 1) #指定axis = 1 刪除列 >>> three four five 山東 2 3 4 山西 7 8 9 湖南 12 13 14 湖北 17 18 19
2.4 列增加
▶ 通過 [] 操作符+列名方式增加多列 #新增列在最後 df['new_column1','new_column2'……] = train1.columns train1.[['age_copy','sex_copy']]= train[['Age','Sex']] train1.columns ▶ 通過 loc+列名新增,不能新增多列 #新增列在最後 pd.loc[:,'new_column'] = train1.columns train1.loc[:,'new_copy'] = train['Name'] #每列只能插入一列 train1.columns ▶ 通過 insert(loc,column,value,allow_duplicates = False) loc 位置引數:0<=loc <=len(columns) 新增列在中間,一次只能增加一列 #新增列在指定位置,只能插入單列 train1.columns train1.insert(1,'insert_column',np.linspace(0,1,len(train1 ))) train1.columns
2.5 行增加
通過 loc函式新增一行,不能新增多行 pd.loc[:,'new_index'] = #新增行在最後,只能插入單行 train1.index train1.loc['new_copy'] = train1.loc['index'] train1.index
三、索引重新命名
3.1 整體重新命名
pd.index = pd.column = #整體重新命名,不能生成新的物件 train1.index train1.index ='new_' = train1.index train1.index
3.2 部分重新命名
● 列行同時修改 rename(index = None,columns = None,**kwargs) inplace:boolean,default False(生成新物件) copy: inplace為 False 時生效,表示只是生成新的行列索引。True 時,建立新的儲存位置 train2 = train.rename(index={'index':'new_index',……},columns = {'column':'new_column'}) train2.index.difference(train1.index) #檢視新索引 train2.column.difference(train1.columns) ● 單獨修改行列 rename_axis(mapper,axis = 0,copy = True,inplace = False) mapper:dict示例為{'oldname':'newname'} axis:0表示行,1表示列 train2 = train1.rename_axis(mapper={'name':'new_name',……},axis =1) train2.columns.difference(train1.column)
四、索引順序調整
4.1 同時調整行和列
reindex(index = None,columns = None,**kwargs) fill_value:出現新的索引時預設的值 method = ffill ffill/pad 前向填充; bfill/backfill 後向填充
4.2 單獨調整行或列
reindex_axis(labels,axis = 0,method = None copy = True,fill_value = NaN)
五、列格式修改
astype(dtype,copy = True)
只能生成新物件dtype取值方式 1:格式:np.float64 2: 字典{'column_name':np.float64,……}
六 、資料排序
pd.sort_index(axis= 1,ascending = False, inplace = True) train.sort_index(axis= 1,ascending = False, inplace = True) ascending #順序排序/ False倒序排序(大->小) 列值排序 pd.sort_values(by = 'b',ascending = False, inplace = True)
七 、資料轉換(索引列名轉換)df.T
train2 = train.T train.info() train2 轉換後會將 數值型轉換為字串
八、重複值、唯一值、統計
8.1 重複值檢視
duplicated(subset = None,keep = 'first') Subset 是否只需要檢查某幾列 Keep:First:支援從前向後,後面出現的為重複值 Last: 從後至前
8.2 刪除重複值
drop.duplicates(subset = None,keep = 'first',inplace= False)
data=DataFrame({"k1":["one"]*3+["two"]*4, 'k2':[1,1,2,3,3,4,4]}) 輸出:data k1 k2 0 one 1 1 one 1 2 one 2 3 two 3 4 two 3 5 two 4 6 two 4 mask = data.duplicated() 輸出: 0 False 1 True 2 False 3 False 4 True 5 False 6 True dtype: bool
8.3 統計重複值
九、部分值替換
replace(to_replace = None,value = None,regex = False,inplace = False) ▶直接指定方式:to_replace 與value 配套使用。old->new 單獨值: to_replace = old value = new 相同長度list: to_replace = [old1,old2] value = [new1,new2] list->單值 to_replace = [old1,old2] value = new 指定相同列dict:to_replace={col1:old1,col2:old2} value={col1:new1,col2:new2} dict->單值: to_replace={col1:old1,col2:old2} value=new old,new組成dict: to_replace={old:new1,old2:new2} value=new ▶正則匹配法:to_replace、value、regex 搭配使用 所有使用方式和上面一致,只是多了regex = True ,to_replace 值用正則表示 缺失值處理 - isnull 缺失值處理步驟: 缺失值確認:isnull notnull 缺失值處理:dropno fillna
十、缺失值處理 -isnull
缺失值處理步驟:
缺失值確認:isnull,notnull 缺失值處理:dropna,fillna isnull(): 返回一個含有布林值的物件,表示哪些值是NA Notnull(): isnull的否定式 缺失值處理 -dropna() 判定指定軸是否存在缺失資料,對軸進行過濾(調節閾值對缺失值的容忍度) DataFrame.dropna(axis = 0,how="any",thresh=None,subset=None,inplace=False) how: any表示出現Na就刪除,all表示所有制為Na才刪除 thresh: 指定非缺失值個數,若個數沒有超過這個thresh,則刪除 inplace: false表示原DataFrame不變,生成新物件(操作檢視) 缺失值處理 -fillna 用指定值或者插值方法,填充缺失值資料 DataFrame.fillna(value =None,methed=None,axis=None,inplace=None,downcast=None,**kwargs) value: 填充值的標量值或者字典物件,與methed只能同時使用一個,只能用於列填充,axis不能賦值 axis: 待填充的軸 limit: 可以連續填充最大數量(method為ffill,bfill時有效)
相關推薦
Pandas——進階一(資料處理)
目錄 以下所有的例子都匯入以下包 import pandas as pd from pandas import DataFrame,Series import numpy as np from
python進階一(檔案的處理方式)
一、檔案操作方法: 檔案操作的結果都是str,需要將 str轉化為 python 的物件才能後續進行操作。 1
Pandas進階筆記 (一) Groupby 重難點總結
如果Pandas只是能把一些資料變成 dataframe 這樣優美的格式,那麼Pandas絕不會成為叱吒風雲的資料分析中心元件。因為在資料分析過程中,描述資料是通過一些列的統計指標實現的,分析結果也需要由具體的分組行為,對各組橫向縱向對比。 GroupBy 就是這樣的一個有力武器。事實上,SQL語言在Pand
python進階一(簡易爬蟲一)
一、爬蟲的基本知識: 1、爬蟲的理解: (1)網路爬蟲,即Web Spider,網路蜘蛛是通過網頁的連結地址來尋找網頁的。 2、爬蟲的設計過程: 根
IntelliJ IDEA的外掛使用進階一( Lombok)
當我們使用idea的時候,有很多註解的使用能大大的減少我們的程式碼量,使我們的程式碼看起來更加的簡潔清晰,方便了我們程式設計師的程式碼開發,在idea中就有一個Lombok的外掛,其有很多我們不知道的註解使用,下面我們就來具體的看一下如何的使用Lombok。 首先我們需要安裝Lombok
iOS開發筆記之七十四——FRP與RAC進階篇(資料黑白板XYReactDataBoard的介紹)
******閱讀完此文,大概需要30分鐘****** 一、簡介 XYReactDataBoard是一款已經比較成熟的基於RAC的響應式程式設計元件,它主要用來實現任意模組之間的資料通訊,它可以替代原生的Notification、KVO,delegate、NSUserdef
Pod控制器應用進階五(kubernetes service)
kubernetes service是強依賴CoreDNS或者是kube-dns功能 node network節點網路 pod network pod網路 cluster network service ip kube-proxy元件是監控apiservice和service 資源變動的資訊,通
spring cloud進階三(消費者feign)
一、Feign簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。它具有可插拔的註解特性,可使用Feign 註解和JAX-RS註解。Feign支援可插拔的編碼器和解碼器。Feign預設集成了Ribbon,並和Eureka結合,
Less迴圈等進階用法(MD.6)
有幾天沒更新我的漫島系列了哈,設定十一月底完成漫島的第一版,時間挺緊迫的,另外,大家能看到的漫島的部分頁面,就截止到個人中心了,其餘的先不給看了。 由於知識雜又多,記不過來,像less稍微複雜一點的語法,每次我還得查一查文件,所以把平時遇到的比較不常規的用法記錄下來,隨時查閱。
學校OJ——26進位制(字串處理)
問題 B: 26進位制數 時間限制: 1 Sec 記憶體限制: 32 MB 提交: 831 解決: 249 [提交][狀態][討論版] 題目描述 現在我們用A表示26,用B表示25,依次類推,到用Z表示1,即A=26, …X = 3, Y = 2, Z=1,用這種方式構建一個26進位制的計數
Redis核心技術進階三(主從複製)
Redis主從複製 分析:主從複製:容錯。 思考:主從複製,需要至少2臺redis服務。一臺主機器(讀寫),一臺從機器(備份,讀)。 模擬2個redis服務: 建立2個redis服務,2個redis服務埠不相同。 建立redis
Anaconda安裝和使用Numpy、scipy、pandas、Scikit-learn(資料分析)(2018年12月28日)
1、Anaconda介紹 安裝python的方法有很多種,資料分析方面比較常用Anaconda。Anaconda是一個開源的Python發行版本,其包含了conda、Python等多個科學包及其依賴項,也可以使用Miniconda這個較小的發行版,僅包含conda和 Python。Anacond
Python 進階用法 (持續更新)
裝飾器(Decorator) Python 的裝飾器是任何可呼叫物件(callable object),用於修改函式(Function)或類(Class)。按照用途可分為: 函式裝飾器 類裝飾器 裝飾器的介面定義可概括為: 接收某個函式或類的引用作為引數; 修改該函式或類並返回
IDEA Window 安裝破解與進階使用(超全)
IDEA 全稱 IntelliJ IDEA,是java語言開發的整合環境,IntelliJ在業界被公認為最好的java開發工具之一,尤其在智慧程式碼助手、程式碼自動提示、重構、J2EE支援、各類版本工具(git、svn、github等)、JUnit、CVS整合、程式碼分析、
SQL進階基礎(面試基礎)—Part 2
前言 本文原題及實驗資料均出自: http://www.cnblogs.com/edisonchou/p/3886801.html,但本文是基於SQL Server的訓練模型,經過筆者的簡單改動,現用於訓練SQL/HQL。本文只針對DML語句進行訓練,原文中還有很多DDL訓
Redis核心技術進階四(Java開發)
Jedis Jedis使用java語言開發的程式,用來連線redis服務java API。呼叫jedis 介面就可以操作redis服務。 建立java工程 建立java工程,匯入jar檔案。
最牛Java架構師進階路線(年薪80W)
1、原始碼分析專題 詳細介紹原始碼中所用到的經典設計思想,看看大牛是如何寫程式碼的,提升技術審美、提高核心競爭力。
python進階—OpenCV之影象處理(一)
文章目錄 顏色空間轉換 RGB色彩空間 HSV色彩空間 YUV色彩空間 簡單的物體跟蹤示例 HSV空間目標閾值選取 影象幾何變換 影象的縮放 影象的位移 影象的旋轉 影
C#進階系列——WebApi 異常處理解決方案(轉)
機制 輸出 ges 如果 但是 rom lba slist 解決 出處:http://www.cnblogs.com/landeanfen/p/5363846.html 閱讀目錄 一、使用異常篩選器捕獲所有異常 二、HttpResponseException自
【SSH進階之路】Struts + Spring + Hibernate 進階開端(一)
height 一段 ioc 效率 陽光大道 面向對象的思想 text ase 們的 Long Long ago。就聽說過SSH。起初還以為是一個東東,詳細內容更是不詳,總認為高端大氣上檔次,經過學習之後才發現,不不過高大上,更是低調奢華有內涵,經過一段時間的