Python數(shù)據(jù)處理| Pandas知識(shí)大全

寫在前面的話

  • Pandas是專門做數(shù)據(jù)處理和分析的慢宗,擁有許多各種復(fù)雜的函數(shù)。
  • Pandas功能強(qiáng)大余素,支持類似于SQL的數(shù)據(jù)處理豹休。
  • Pandas的底層依賴于Numpy,是在Numpy的基礎(chǔ)上發(fā)展而來桨吊。

導(dǎo)入數(shù)據(jù)庫:import pandas as pd

1威根、Pandas基礎(chǔ)知識(shí)

1.1、常用數(shù)據(jù)結(jié)構(gòu)

  • Series:由一組數(shù)據(jù)以及一組與之對(duì)應(yīng)的數(shù)據(jù)標(biāo)簽(即索引組成)视乐;可以通過pandas.Series來創(chuàng)建Series洛搀,每個(gè)Series可以看成是DataFrame的一個(gè)列。
  • DataFrame:Pandas基本數(shù)據(jù)結(jié)構(gòu)佑淀,類似excel中的表格形式留美;既有行索引、列索引伸刃,相當(dāng)于多個(gè)Series谎砾。

1.1.1、Series創(chuàng)建與屬性

函數(shù) 用法 舉例
pd.Series(data= ,index= ,dtype= ,name= ) 創(chuàng)建Series奕枝,其中data可以為列表棺榔、一維數(shù)組或字典;index表示索引隘道,必須與數(shù)據(jù)等長(zhǎng)症歇;dtype表示數(shù)據(jù)類型;name表示對(duì)象名稱 s=pd.Series(np.array([1,2,3,4,5,6]),index=('a','b','c','d','e','f'),dtype=int,name='this is a Series')
Series1.append(Series2) 將Series2的數(shù)據(jù)加在Series1之后 s1=pd.Series({'father':40,'mother':38})>>s2=pd.Series({'son':12,'daughter':5})>>s1.append(s2)
Series.drop(index= ,inplace= )) 刪除指定數(shù)據(jù)谭梗。inplace=False(默認(rèn))返回視圖忘晤;inplace=True改變Series。 s1=pd.Series({'father':40,'mother':38})>>s1.drop('father',inplace=True)>>s1
Series屬性 用法
Series.values 返回所有元素
Series.index 返回索引
Series.dtype 返回?cái)?shù)據(jù)類型
Series.ndim Series都是一維的
Series.shape 返回series的形狀
Series.size 返回對(duì)象的個(gè)數(shù)

1.1.2激捏、DataFrame創(chuàng)建與屬性

函數(shù) 用法 舉例
pd.DataFrame(data,index,dtype,columns) 創(chuàng)建Dataframe设塔。data可以為列表,二維數(shù)組和字典远舅;index表示行索引闰蛔,columns表示列索引痕钢。 df2=pd.DataFrame({"name":['alice','tom','peter'],'age':[23,26,30]},index=(1,2,3))>>df2['name']=np.array(np.char.capitalize(list(df2['name'])))>>df2
DataFrame屬性 用法
DataFrame.values 返回所有元素
DataFrame.index 返回索引
DataFrame.dtypes 返回每個(gè)變量的數(shù)據(jù)類型
DataFrame.ndim 一般為二維
DataFrame.shape 一般為二維的形狀
DataFrame.size 返回對(duì)象的個(gè)數(shù)
DataFrame.columns 返回列標(biāo)簽

1.2、數(shù)據(jù)獲取和保存

  • pandas內(nèi)置了10多種數(shù)據(jù)源讀取函數(shù)序六,常見的是csv和excel任连。
  • pandas讀取出來的數(shù)據(jù)直接就是數(shù)據(jù)框格式,方便后續(xù)的數(shù)據(jù)處理和分析例诀。
  • 讀取csv文件時(shí)随抠,需注意編碼,常用編碼有utf-8繁涂、gbk拱她、gbk2312等。
函數(shù) 參數(shù) 用法 舉例
os.getcwd() 無參數(shù) 獲取當(dāng)前工作目錄(current working directory) import os>>os.getcwd()
os.chdir(path) path:路徑 改變當(dāng)前工作目錄為path扔罪,方便直接讀取文件 import os>>os.chdir('D:')
pd.read_csv(path,encoding= ,dtype= ,nrows= ,sep= ,na_values= ,header= ,index_col=[values]) 該函數(shù)有很多參數(shù)秉沼,常用的有:①encoding:編碼,有中文字符使用utf-8矿酵、gbk氧猬、gbk2312;②dtype:規(guī)定數(shù)據(jù)類型坏瘩,可使用字典對(duì)指定變量進(jìn)行規(guī)定;③nrows:規(guī)定讀取的行數(shù)漠魏,默認(rèn)為None倔矾;④sep:分隔符,默認(rèn)為','柱锹。⑤na_values:規(guī)定指定值顯示為NaN哪自;⑥header:規(guī)定第幾行作為表頭,默認(rèn)第1行禁熏。⑦index_col:規(guī)定某幾列變量為索引壤巷。 導(dǎo)入csv文件 pd.read_csv('data.csv',encoding= 'gbk',dtype={'info_id':str,'ID':str},nrows=10 ,header=0)
DataFrame.head(n) n:查看行數(shù),默認(rèn)等于5 查看Dataframe的前n行 df2=pd.DataFrame({"name":['Alice','Tom','Peter'],'age':[23,26,30]},index=(1,2,3))>>df2.head(2)
DataFrame.tail(n) n:查看行數(shù)瞧毙,默認(rèn)等于5 查看Dataframe的最后n行 df2=pd.DataFrame({"name":['Alice','Tom','Peter'],'age':[23,26,30]},index=(1,2,3))>>df2.tail(2)
pd.read_excel(path,sheet_name= ,encoding= ,dtype= ,nrows= ,sep= ,na_values= ,header= ) 讀取excel比csv多了一個(gè)參數(shù)胧华,即工作表名稱(sheet_name),sheet_name默認(rèn)等于None宙彪,讀取全部工作表矩动。 導(dǎo)入excel文件 pd.read_excel('data.csv',sheet_name=0,encoding= 'gbk',dtype={'info_id':str,'ID':str},nrows=10 ,header=0)
DataFrame.to_csv(path,index= ,encoding= ) index:是否保存索引,一般寫False释漆。 保存為csv文件 data4.to_csv('data4.csv',index=False)
DataFrame.to_excel(path,index= ,encoding= ) index:是否保存索引悲没,一般寫False。 保存為excel文件 data4.to_excel('data4.xlsx',index=False)

1.3男图、數(shù)據(jù)篩選

1.3.1示姿、簡(jiǎn)單篩選

函數(shù) 用法 舉例
DataFrame[x:y] 篩選x至y-1行的行數(shù)據(jù)甜橱,只能是切片查詢 data[:10]
DataFrame[values]/DataFrame.value 篩選特定的列數(shù)據(jù),前者可以通過列表一次篩選多列栈戳,后者一次只能篩選一列 data[['info_id','ID']]
DataFrame[values][ : ] 篩選特定的列和行岂傲,可先寫行,也可先寫列荧琼,無特別規(guī)定譬胎。 data[['info_id','ID']][:50]
DataFrame.loc[A,B] 篩選特定的行和列,A表示行標(biāo)簽命锄,可以是單個(gè)標(biāo)簽A1堰乔,切片A1:A2,[A1,A2]脐恩;B表示列標(biāo)簽镐侯,可以是單個(gè)標(biāo)簽B1,切片B1:B2驶冒,[B1,B2]苟翻;注意不能寫索引。 data.loc[[7,10],['info_id','ID']]
DataFrame.iloc[A,B] 篩選特定的行和列骗污,AB均為索引崇猫。A表示行索引,可以是單個(gè)索引A1需忿,切片A1:A2诅炉,[A1,A2];B表示列索引屋厘,可以是單個(gè)索引B1涕烧,切片B1:B2,[B1,B2]汗洒。 data.iloc[2:7,[2,3]]

1.3.2议纯、條件篩選

函數(shù) 用法 舉例
DataFrame.loc[criteria,B] 篩選特定條件下的列,criteria表示篩選條件溢谤,如'info_id'==200;B表示列標(biāo)簽瞻凤,注意不能寫索引。 data.loc[data['info_id']==200,['info_id','name','ID']]
DataFrame[values][criteria] 篩選特定條件下的列溯香,criteria可以有多個(gè)鲫构,用‘&’連接即可;values可以是列表玫坛。 data[(data['order_id']==458) & (data['amounts']>3)][['order_id','amounts','dishes_name']]
DataFrame[values].between(n1,n2,inclusive= ) 規(guī)定數(shù)字型變量的篩選區(qū)間结笨,inclusive=True(默認(rèn))包含n1和n2,輸出布爾型 data[(data['order_id']==458) & (data['amounts'].between(0,30,inclusive=True))][['order_id','amounts','dishes_name']]
DataFrame[values].isin([str1,str2,...]) 規(guī)定字符型變量的篩選區(qū)間,篩選變量中與(str1,str2,...)字符相匹配的值炕吸。 data[data['dishes_name'].isin(['內(nèi)蒙古烤肉','蒜香包'])][['order_id','amounts','dishes_name']]
DataFrame[values].str.contains(str) 規(guī)定字符型變量的篩選區(qū)間伐憾,篩選變量中含有str字符的值。 data[data['dishes_name'].str.contains('烤')][['order_id','amounts','dishes_name']]

1.3.3赫模、增刪改查

功能 函數(shù) 用法 舉例
增加列變量 DataFrame['new_value']= 增加新變量 Data['payment']=data['price']*data['amount']
刪除列變量 DataFrame.drop([value1,value2,...],axis=1,inplace= True) 刪除value1,value2,...等變量 data.drop('dishes_id',axis=1,inplace=True)
刪除列變量 del DataFrame['value'] 刪除列變量树肃,一次只能刪一個(gè) del Data['payment']
調(diào)整列順序 DataFrame.insert(n,value_name,Series) 調(diào)整列順序,先刪后插 Series=data['dishes_id']>>data.drop('dishes_id',axis=1,inplace=True)>>data.insert(0,'dishes_id',series)
刪除指定行 DataFrame.drop(labels=[n1,n2,...],axis=0,inplace= True) 刪除[n1,n2,...]的行 Data.drop([2,3],axis=0)
修改指定值 DataFrame.loc[criteria,B]= 修改指定值 data.loc[data['order_id']==458,'order_id']=45800
列重命名 DataFrame.rename(columns={'value_oldname':'value_newname'},inplace=True) 為指定列重命名 data.rename(colunms={'price':'單價(jià)'},inplace=True)
行重命名 DataFrame.rename(index={'index_oldname':'index_newname'},inplace=True) 為指定行重命名 data.rename(index={0:0900},inplace=True)
查看數(shù)據(jù) np.sum(DataFrame.isnull(),axis=0) 查看每一列的缺失值數(shù)量 --

2瀑罗、Pandas高級(jí)操作

2.1胸嘴、數(shù)據(jù)庫數(shù)據(jù)讀取和保存

  • 訪問數(shù)據(jù)庫:使用pymysql和sqlalchemy建立連接

導(dǎo)入相關(guān)的庫:

  • import pymysql
  • from sqlalchemy import create_engine
函數(shù) 參數(shù) 用法 舉例
create_engine('mysql+pymysql://user:password@IP:3306/test01') ①mysql+pymysql:dialect[+driver];②user:用戶名斩祭;③password:密碼劣像;④IP:IP地址;⑤3306:端口號(hào)摧玫;⑥test01:數(shù)據(jù)庫名 建立mysql連接耳奕,格式固定 create_engine('mysql+pymysql://root:123456@localhost:3306/test01')
pd.read_sql(sql,con) sql:指定的sql文件,eg:sql='select * from customer_info'诬像;con:連接引擎屋群,即create_engine函數(shù) 讀取sql文件 --
DataFrame.to_sql(name,con= ,if_exists= ,index= ) ①name:命名;②con:連接引擎坏挠,即create_engine函數(shù)芍躏;③if_exists:如果表已存在,如何執(zhí)行降狠。if_exists='fail':引發(fā)ValueError纸肉,if_exists='replace':替換原來的表,if_exists='append':追加在原來的表之后喊熟;④index: 是否將索引寫入,默認(rèn)為True姐刁,一般選False芥牌。 存為sql文件 --

注:數(shù)據(jù)分析需要頻繁讀取文件數(shù)據(jù),為了方便讀取聂使,可以直接建立一個(gè)函數(shù)壁拉。

Image.png

2.2息裸、數(shù)據(jù)整合

  • 數(shù)據(jù)整合又叫數(shù)據(jù)合并上炎,將不同的數(shù)據(jù)合并在一起泽论,集成在一張表上拜姿,有利于之后的分析传于。
  • 常見的合并方法有堆疊粉洼、按主鍵進(jìn)行合并按价,堆疊又分為橫向堆疊和縱向堆疊餐茵,按主鍵合并類似于sql里面的關(guān)聯(lián)操作。
功能 函數(shù) 用法
橫向堆疊 pd.concat([d1,d2,...],axis=1,join= ) 橫向合并辆苔,join='inner',只顯示重疊部分算灸;join='outer',顯示全部。
縱向堆疊 pd.concat([d1,d2,...],axis=0,ignore_index=True ) 縱向合并驻啤,ignore_index=True忽略之前的索引菲驴。
重置索引 DataFrame.reset_index(drop=True,inplace=True) 對(duì)數(shù)據(jù)表進(jìn)行索引重置
按主鍵合并 pd.merge(left=d1,right=d2,how= ,left_on= ,right_on=,sort=True ) 左右表按指定變量合并。①how='left'骑冗,則匹配左表進(jìn)行合并赊瞬;how='right',則匹配右表進(jìn)行合并贼涩;how='outer',則全部輸出巧涧,匹配不上的顯示NaN;how='inner',則只輸出匹配數(shù)據(jù)磁携,其余不輸出褒侧;②sort=True表示根據(jù)鍵進(jìn)行排序;③right_on和left_on:合并的鍵谊迄,如果兩者相同闷供,可直接用on參數(shù)。
按索引合并 pd.merge(left=d1,right=d2,how= ,left_index=True ,right_index=True) 左右表按索引合并统诺,現(xiàn)實(shí)操作不常用歪脏。

2.3、層次化索引

  • 在導(dǎo)入文件上時(shí)增加index_loc[values]參數(shù)設(shè)置多層索引粮呢。
  • 利用loc函數(shù)元組進(jìn)行多層索引婿失,格式:loc[(index1,index2),values]。

3啄寡、Pandas分組聚合和透視圖

3.1豪硅、數(shù)據(jù)排序

  • 使用DataFrame.sort_values函數(shù)進(jìn)行排序,并使用DataFrame.reset_index函數(shù)重置索引挺物。
函數(shù) 用法 參數(shù) 舉例
DataFrame.sort_values([values],ascending= ,na_position= 懒浮,inplace= ) 對(duì)數(shù)據(jù)按values進(jìn)行排序 ①[values]:排序的變量,可以為單個(gè)字符或列表识藤;②ascending:是否升序砚著,True(默認(rèn))表示升序,F(xiàn)alse表示降序痴昧;③na_position:NaN值放置位置稽穆,'first'放最前,'last'(默認(rèn))放最后赶撰。 data.sort_values('Year',ascending=True,na_position='last',inplace=True)

3.2舌镶、分組聚合

3.2.1柱彻、描述性統(tǒng)計(jì)

函數(shù) 用法
DataFrame.describe() 統(tǒng)計(jì)數(shù)值型數(shù)據(jù)的基本信息,包括計(jì)數(shù)乎折、平均值绒疗、標(biāo)準(zhǔn)差、百分位數(shù)骂澄、最小最大值
DataFrame.describe(include=['object']) 統(tǒng)計(jì)字符型數(shù)據(jù)基本信息吓蘑,包括計(jì)數(shù)、頻率最大字符等坟冲。
DataFrame.mean/max/min/quantile/median/count/value_counts/cumcount/unique 定向查看數(shù)據(jù)的平均值/最大值/最小值/百分位數(shù)/中位數(shù)/計(jì)數(shù)/值計(jì)數(shù)/累計(jì)計(jì)數(shù)/取值范圍磨镶。

3.2.2、分組運(yùn)算

函數(shù) 參數(shù) 用法 舉例
DataFrame.groupby([values]), values:用于分組的變量健提,可寫成by='' 使用變量進(jìn)行分組琳猫。 data[['Year','Sales','income']].groupby('Year')
DataFrame.agg(func, axis=0) func:函數(shù)、字符私痹、列表或字典脐嫂;axis默認(rèn)等于0。 聚合查詢多個(gè)數(shù)據(jù) group=data[['Year','Sales','income']].groupby('Year')>>group.agg([np.sum,np.mean]).loc[[1980,3490],('Sales',['mean','sum'])>>group.agg({Sales':np.sum,'income':[np.mean,np.median]})
DataFrame.apply(func, axis=0) func:只能為函數(shù)紊遵;axis默認(rèn)等于0账千。 和agg函數(shù)類似,但func只能為函數(shù)暗膜,可以接lambda表達(dá)式匀奏。 DataFrame.apply(lambda x: x[2]-x[3],axis=1)
DataFrame.transform(func,axis=0) func:函數(shù)、字符学搜、列表或字典娃善。 對(duì)行和值進(jìn)行操作,但無法進(jìn)行聚合操作瑞佩。 data['Sales].transform(lambda x: x*2)

<u>注:agg/apply/transform的區(qū)別:</u>

  • agg:agg方法靈活聚磺,能夠?qū)Ψ纸M對(duì)象進(jìn)行相同的聚合,還可以選擇不同的聚合方法炬丸。
  • apply:apply可以進(jìn)行聚合計(jì)劃咧最,還可以按行進(jìn)行計(jì)算。
  • transform:返回與數(shù)據(jù)同樣長(zhǎng)度的行御雕,無法進(jìn)行聚合計(jì)算。

3.3滥搭、透視表和交叉表

Image [2].png
函數(shù) 參數(shù) 用法 舉例
pd.pivot_table(data,index,columns,value,aggfunc,fill_value,margins,margins_name= ) ①index:行分組鍵酸纲,可以是列表;②columns:列分組鍵瑟匆,可以是列表闽坡;③value:透視圖統(tǒng)計(jì)的變量,只能為數(shù)值型;④aggfunc:聚合函數(shù)疾嗅,默認(rèn)為mean外厂;⑤margins:是否需要總計(jì)。⑥fill_value:用來替代NaN的值代承。 用于對(duì)某個(gè)指定的變量進(jìn)行數(shù)據(jù)透視 pd.pivot_table(data,index='Year',columns='Games',value='US_Revenue',aggfunc=[np.mean,np.sum],fill_value=0,margins=True,margins_name='總計(jì)值')
pd.crosstab(index,columns,values,aggfunc,margins,margins_name,normalize) 參數(shù)無data汁蝶,normalize用于計(jì)算頻率,normalize='index'论悴,計(jì)算行頻率掖棉;normalize='columns',計(jì)算列頻率膀估;normalize='all'幔亥,計(jì)算全部的頻率。其余參數(shù)和pivot_table功能類似察纯。 可以實(shí)現(xiàn)和pivot_table一樣的功能帕棉,不過一般用來查看頻率和頻數(shù)(默認(rèn))。 pd.crosstab(index=data['Platform'],columns=data['Game'],margins=True])

4饼记、Pandas數(shù)據(jù)預(yù)處理

4.1香伴、Pandas其他函數(shù)運(yùn)用

4.1.1、數(shù)據(jù)類型轉(zhuǎn)換(日期等)

函數(shù) 參數(shù) 用法 舉例
pd.to_datetime
(arg,format,errors) ①arg:需要轉(zhuǎn)化的參數(shù)握恳,可以是多種形式瞒窒;②errors:無法轉(zhuǎn)化的表示,errors='coerce',無效值返回NaN乡洼;errors='raise'(默認(rèn)),無效值引發(fā)異常報(bào)錯(cuò)崇裁;errors='ignore',無效值返回原來的值。③format:參數(shù)格式束昵,eg:%d%m%Y拔稳。 將變量轉(zhuǎn)化為日期,返回視圖。 data['time']=pd.to_datetime(data['time'],format='%Y年%m月',errors='coerce')
DataFrame.dt.time锹雏、DataFrame.dt.time 無參數(shù) 取出變量中的日期/時(shí)間巴比。 data['date']=data['data'].dt.date
pd.datetime.today() 無參數(shù) 當(dāng)前日期和時(shí)間,精確到毫秒礁遵。 --
np.timedelta64(a,b) a:表示間隔或周期轻绞;b:表示單位,可以是'm'(分),'h'(小時(shí)),'D'(天)等佣耐。 用于控制時(shí)間間隔政勃,間隔多少年/月/天/時(shí)/分/秒/ (date_end-date_start)/np.timedelta64(1,'D')
datetime.year 無參數(shù) 查看datetime變量的年份 --
DataFrame.astype(dtype) dtype:強(qiáng)制轉(zhuǎn)換的數(shù)據(jù)類型或類別代碼 強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型,輸出視圖兼砖。 data['price']=data['price'].str[:-1].astype('float')

<u>注:Numpy中區(qū)分了str和object類型奸远,而pandas使用本機(jī)Python字符串既棺,因此使用Numpy字符串函數(shù)直接處理pandas的'object'會(huì)報(bào)錯(cuò),需要先將dtype轉(zhuǎn)成str懒叛。</u>

4.1.2丸冕、數(shù)據(jù)抽樣與計(jì)算

函數(shù) 參數(shù) 用法 舉例
DataFrame.sample(n,replace= ) n:抽樣的行數(shù);replace=False即不放回抽樣薛窥。 抽樣 data.sample(n=5000,replace=False)
np.prod(ndarray,axis=1) axis:作用軸 計(jì)算給定軸上數(shù)組的乘積胖烛。 data['total_price'=data[['Quantity',Unitprice']].apply(np.prod,axis=1)(*相當(dāng)于data['Quantity']* data['Unitprice'])
DataFrame.pct_change() -- 計(jì)算當(dāng)前元素與先前元素之間的百分比變化,即(x1-x2)/x1 data['總價(jià)變化率']=data['total_price'].pct_change()
DataFrame.rolling(window) window:整數(shù)拆檬,設(shè)置滾動(dòng)窗口的大小洪己。 提供滾動(dòng)窗口的計(jì)算 data['5天平均值']=data['total_price'].rolling(5).mean()
DataFrame.shift(periods= ,fill_value= ,axis=0) periods
:整數(shù),向下平移的大芯构帷答捕;fill_value:填充值,默認(rèn)為NaN屑那;axis:移動(dòng)的軸拱镐,默認(rèn)為0。 按給定軸平移持际。 data['總價(jià)變化率'=(data['total_price']-data['total_price'].shift(1))/data['total_price'],即相當(dāng)于pct_change函數(shù)沃琅。

4.2、數(shù)據(jù)清洗

Image [3].png

4.2.1蜘欲、重復(fù)值

  • 重復(fù)值一般采取刪除法來處理益眉。
  • 但有些重復(fù)值不能刪除,例如訂單明細(xì)姥份、數(shù)據(jù)或交易明細(xì)數(shù)據(jù)等郭脂。
函數(shù) 參數(shù) 用法 舉例
DataFrame.duplicated(subset= ,keep= ) ①subset:依據(jù)哪些變量判斷是否是重復(fù)值,可以是列表澈歉;②keep:保留哪些結(jié)果為“True”展鸡,='first'(默認(rèn)),保留第一個(gè)重復(fù)值為True埃难;='last'莹弊,保留最后一個(gè)為True;=False涡尘,全部標(biāo)記為'True'忍弛。 判斷是否有重復(fù)行,返回布爾型考抄。 np.sum(data.duplicated(subset=['name','ID']))
DataFrame.drop_duplicates(subset= ,keep= ,inplace= ) 見DataFrame.duplicated
根據(jù)subset细疚,忽略索引,返回刪除重復(fù)行的DataFrame --

4.2.2座泳、缺失值

Image [4].png
函數(shù) 參數(shù) 用法 舉例
DataFrame.isnull() 無參數(shù) 判斷是否有缺失值惠昔,輸出布爾型。 data.apply(lambda x: np.sum(x.isnull())/len(x),axis=0)
DataFrame.dropna() -- 不加參數(shù)挑势,直接刪除含有缺失值的行 data.dropna(inplace=True)
DataFrame.dropna(how= ,subset= ,inplace= ) ①how:='all'镇防,只刪除全部為NaN值的行;='any'潮饱,刪除任何含有NaN值的行来氧。②subset:數(shù)組或列表,可指定參照列 香拉。 按條件刪除有缺失值的行啦扬。 data.dropna(how='any',subset=['gender'],inplace=True)
DataFrame.fillna(value= ,inplace= ,method= ) ①value:填充NaN值的值,可以是標(biāo)量凫碌、字典和數(shù)據(jù)表扑毡。 填充NaN為指定值,如平均數(shù)(Mean)盛险、中位數(shù)(Median)瞄摊、眾數(shù)(Mode)。②method:填補(bǔ)方法苦掘,='ffill',用上一行數(shù)據(jù)填補(bǔ)换帜;='bfill',用下一行數(shù)據(jù)填補(bǔ)鹤啡; data.gender.fillna(value=data.gender.mode()[0]/data.fillna(value={'gender':data.gender.mode()[0]})
DataFrame.interpolate(method= ,axis= ) method:插值方法惯驼,='linear'(默認(rèn)),線性插值递瑰;='polynomial'祟牲,多項(xiàng)式插值 根據(jù)不同的方法在NaN處插入新值。 data.age.interpolate(method='polynomial',order=1)

4.2.3泣矛、異常值

Image [5].png
  • 異常值識(shí)別:①:>data.mean()+2*data.std() or <data.mean()-2*data.std() 疲眷;②>Q3+1.5(Q3-Q1) or<Q1-1.5(Q3-Q1)。
  • 最大正常值替換法:data['value'>Q3+1.5(Q3-Q1) ]=data['value'<Q3+1.5(Q3-Q1) ].max()
  • 分位數(shù)替換法:將大于99%分位數(shù)的值用99%分位數(shù)替換您朽,小于1%分?jǐn)?shù)位的值用1%分位數(shù)替換狂丝。
功能 函數(shù) 參數(shù) 舉例
箱型圖 DataFrame.Plot(kind='box') kind:畫圖種類 data.counts.plot(kind='box')
直方圖 DataFrame.Plot(kind='hist') -- --
將變量分成多個(gè)區(qū)間 pd.cut(x= ,bins= ,labels= ) ①x:用于分段的變量;②bins:分段數(shù)哗总;labels:標(biāo)簽几颜,數(shù)量需要和分段一樣。 pd.cut(data['counts'],4,labels=range(1,5))
將變量按百分位分成多個(gè)區(qū)間 pd.qcut(x= ,q= ,labels= ) ①q:分位數(shù)數(shù)組 pd.qcut(data['counts'],[0,0.25,0.5,0.75,1],labels=range(1,5))

寫在最后的話

  • 這是本人學(xué)習(xí)Peter老師的《2020年P(guān)ython數(shù)據(jù)分析師特訓(xùn)營(yíng)》課程整理的學(xué)習(xí)筆記讯屈,有需要觀看視頻的小伙伴蛋哭,B站指路:https://www.bilibili.com/video/av81847305
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涮母,一起剝皮案震驚了整個(gè)濱河市谆趾,隨后出現(xiàn)的幾起案子躁愿,更是在濱河造成了極大的恐慌,老刑警劉巖沪蓬,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彤钟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡跷叉,警方通過查閱死者的電腦和手機(jī)逸雹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來云挟,“玉大人梆砸,你說我怎么就攤上這事≡靶溃” “怎么了帖世?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)俊庇。 經(jīng)常有香客問我狮暑,道長(zhǎng),這世上最難降的妖魔是什么辉饱? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任搬男,我火速辦了婚禮,結(jié)果婚禮上彭沼,老公的妹妹穿的比我還像新娘缔逛。我一直安慰自己,他們只是感情好姓惑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布褐奴。 她就那樣靜靜地躺著,像睡著了一般于毙。 火紅的嫁衣襯著肌膚如雪敦冬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天唯沮,我揣著相機(jī)與錄音脖旱,去河邊找鬼。 笑死介蛉,一個(gè)胖子當(dāng)著我的面吹牛萌庆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播币旧,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼践险,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巍虫,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤彭则,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后占遥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贰剥,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年筷频,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片前痘。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凛捏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芹缔,到底是詐尸還是另有隱情坯癣,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布最欠,位于F島的核電站示罗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芝硬。R本人自食惡果不足惜蚜点,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拌阴。 院中可真熱鬧绍绘,春花似錦、人聲如沸迟赃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纤壁。三九已至左刽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酌媒,已是汗流浹背欠痴。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留馍佑,地道東北人斋否。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拭荤,于是被迫代替她去往敵國(guó)和親茵臭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345