版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單元4數(shù)據(jù)預處理《Python數(shù)據(jù)分析任務驅動教程》學習目標/Target
掌握缺失值檢測方法,能夠通過isnull()和notnull()函數(shù)檢測是否有缺失值
掌握缺失值處理方法,能夠通過dropna()或fillna()方法刪除或填充缺失值
掌握重復值檢測方法,能夠通過duplicated()方法檢測數(shù)據(jù)中是否有重復值
掌握重復值的處理方法,能夠通過drop_duplicates()方法刪除重復值
熟悉異常值檢測方法,能夠通過3σ原則和箱形圖檢測數(shù)據(jù)中是否有異常值學習目標/Target
掌握異常值的處理方法,能夠通過replace()方法替換數(shù)據(jù)中的異常值
熟悉轉換數(shù)據(jù)類型方法,能夠通過astype()或to_numberic()轉換數(shù)據(jù)類型
掌握查看摘要信息的方法,能夠通過info()方法查看DataFrame的摘要信息
掌握數(shù)據(jù)合并的方法,能夠根據(jù)需求選擇相應方法實現(xiàn)數(shù)據(jù)合并的操作
熟悉設置索引的方法,能夠通過set_index()將一列或多列數(shù)據(jù)設置為索引學習目標/Target
掌握重塑分層索引,能夠通過stack()和unstack()實現(xiàn)重塑分層索引操作
掌握軸向旋轉操作,能夠通過pivot()方法實現(xiàn)軸向旋轉的操作
掌握面元劃分操作,能夠通過cut()函數(shù)實現(xiàn)面元劃分的操作
熟悉遍歷DataFrame行的方法,能夠實現(xiàn)遍歷DataFrame行的操作
掌握啞變量處理的方法,能夠通過get_dummies()對類別數(shù)據(jù)進行啞變量處理章節(jié)概述/Summary在數(shù)據(jù)分析中,前期收集的原始數(shù)據(jù)或多或少會存在著一些瑕疵或不足,比如數(shù)據(jù)缺失、重復、格式不統(tǒng)一等,因此在分析之前需要對數(shù)據(jù)進行一些預處理操作,包括填充缺失值、刪除重復值、替換異常值、合并數(shù)據(jù)等,使數(shù)據(jù)更好地服務于數(shù)據(jù)分析的項目。為此,pandas提供了很多用于數(shù)據(jù)預處理的函數(shù)與方法。本單元以6個任務為主線,對pandas中數(shù)據(jù)預處理的相關內容進行詳細地講解。目錄/Contents任務4-1清洗二手房數(shù)據(jù)任務4-2合并員工、部門和薪資數(shù)據(jù)任務4-3重塑學生信息目錄/Contents任務4-4調整產(chǎn)品訂單數(shù)據(jù)任務4-5劃分用戶群體任務4-6統(tǒng)計電影類型清洗二手房數(shù)據(jù)任務4-1任務描述已知secondhandhouse_one.xlsx文件保存了二手房數(shù)據(jù),包括小區(qū)名稱、房屋信息、關注人數(shù)、附近地鐵、每平米單價等。任務描述本任務要求在base環(huán)境中安裝第三方庫Pyecharts?!救蝿盏木唧w要求】本任務要求編寫代碼,對二手房數(shù)據(jù)進行清洗處理,具體要求如下:(1)檢測是否有缺失值,一旦發(fā)現(xiàn)有就將其刪除。(2)檢測是否有重復值,一旦發(fā)現(xiàn)有就將其刪除。(3)檢測單價(元/平米)一列是否有異常值,一旦確定是異常值就將其刪除。掌握缺失值的檢測方法,能夠通過isnull()和notnull()函數(shù)檢測數(shù)據(jù)中是否有缺失值學習目標知識儲備1.缺失值的檢測缺失值是指數(shù)據(jù)集中某個或某些屬性的值是不完整的,產(chǎn)生的原因主要有數(shù)據(jù)采集設備故障、人為錄入錯誤或者人為有意隱瞞等。缺失值的概念在pandas中,缺失值一般使用None或np.nan表示,統(tǒng)一標記為NaN。缺失值的顯示知識儲備1.缺失值的檢測為了幫助用戶檢測數(shù)據(jù)中是否包含缺失值,pandas中提供了兩個函數(shù),分別是isnull()和notnull(),它們會接收一個Series或DataFrame對象,返回一個跟原對象形狀相同的新對象,新對象中的數(shù)據(jù)都是表示檢測結果的布爾值。缺失值的檢測方法檢測到缺失值的位置標記True,其他位置標記為False。isnull()檢測到缺失值的位置標記False,其他位置標記為True。notnull()知識儲備1.缺失值的檢測defmissing_values_table(df):mis_val=df.isnull().sum()mis_val_percent=df.isnull().sum()/len(df)*100mis_val_table=pd.DataFrame({'數(shù)量':mis_val,'占比(%)':mis_val_percent})mis_val_table_sorted=mis_val_table.sort_values('數(shù)量',ascending=False)returnmis_val_table_sorted如果想了解DataFrame對象中缺失值的數(shù)量和占比情況,那么可以自定義一個函數(shù),在該函數(shù)中統(tǒng)計isnull()函數(shù)的返回值為True的數(shù)量和占比。知識儲備1.缺失值的檢測缺失值的檢測方法掌握缺失值的處理方法,能夠通過dropna()或fillna()方法刪除缺失值或填充缺失值學習目標知識儲備2.缺失值的處理通常情況下,缺失值對數(shù)據(jù)分析而言是沒有意義的,如果使用包含大量缺失值的數(shù)據(jù)進行分析,那么一定會降低分析結果的準確性。為了避免這類問題,需要采取一些方式來處理缺失值,常見的處理方式包括刪除缺失值和填充缺失值。知識儲備2.缺失值的處理刪除缺失值pandas中提供了刪除缺失值的方法dropna(),該方法會刪除包含缺失值的一行或一列數(shù)據(jù),并返回一個刪除缺失值后的對象。dropna(*,
axis=0,
how=_NoDefault.no_default,
thresh=_NoDefault.no_default,
subset=None,
inplace=False,ignore_index=False)axis:用于確定刪除行還是刪除列,取值可以為0或'index'、1或'columns',其中0或'index'表示刪除包含缺失值的行,1或'columns'表示刪除包含缺失值的列,默認值為0。how:表示刪除缺失值的方式,該參數(shù)支持'any'和'how'兩種取值,其中'any'為默認值,表示有NaN時便刪除整行或整列;'all'表示只有所有值為NaN時才刪除整行或整列。知識儲備2.缺失值的處理保留了沒有任何缺失值的行知識儲備2.缺失值的處理刪除缺失值知識儲備2.缺失值的處理刪除缺失值df_na.dropna()(1)保留沒有任何缺失值的行:df_na.dropna(thresh=3)(2)保留至少有3個非缺失值的行:pandas中提供了填充缺失值的方法fillna(),fillna()方法既可以使用指定的值填充,也可以使用缺失值前面或后面的有效值填充。fillna(value=None,
*,
method=None,
axis=None,
inplace=False,limit=None,
downcast=_NoDefault.no_default)value:用于填充的值,可以是標量、字典、Series或DataFrame對象。method:表示填充方式,默認值為None,該參數(shù)還支持'pad'、'ffill'、'backfill'和'bfill'這幾種取值,其中'pad'或'ffill'表示前向填充,也就是說用缺失值前面的有效值填充;'backfill'或'bfill'表示后向填充,也就是用缺失值后面的有效值填充。注意,method參數(shù)不能與value參數(shù)同時使用。limit:
可以連續(xù)填充的NaN值最大數(shù)量。知識儲備2.缺失值的處理填充缺失值1.
填充常量缺失值所在的位置全部變成66.0知識儲備2.缺失值的處理填充缺失值1.
填充常量知識儲備2.缺失值的處理填充缺失值importpandasaspdimportnumpyasnpdf_na=pd.DataFrame({'Num1':[1,2,None,4],'Num2':[5,6,7,8],
'Num3':[9,10,11,12],
'Num4':[13,14,np.NaN,np.NaN]})df_na.fillna(value=66.0)
2.
填充指定列Num1列缺失值的位置變成平均數(shù)2.3,Num4列缺失值的位置變成平均數(shù)13.5知識儲備2.缺失值的處理填充缺失值2.
填充指定列知識儲備2.缺失值的處理填充缺失值#計算Num1列的平均數(shù),并保留一位小數(shù)mean_num1=round(df_na['Num1'].mean(),1)#計算Num4列的平均數(shù),并保留一位小數(shù)mean_num4=round(df_na['Num4'].mean(),1)#給指定的列填充平均數(shù)df_na.fillna(value={'Num1':mean_num1,'Num4':mean_num4})3.
前向填充Num1列缺失值的位置變成2.0,Num4列缺失值的位置變成14.0知識儲備2.缺失值的處理填充缺失值3.
前向填充知識儲備2.缺失值的處理填充缺失值df_na.fillna(method='ffill')當采用前向填充或后向填充的方式給DataFrame填充缺失值時,如果缺失值的前面或后面沒有任何有效值,則它們不會被填充。df_na.fillna(method='bfill')掌握重復值的檢測方法,能夠通過duplicated()方法檢測數(shù)據(jù)中是否存在重復值學習目標知識儲備3.重復值的檢測重復值是指數(shù)據(jù)集中某個或某些記錄是完全相同的,產(chǎn)生的原因主要有設備故障、人工重復錄入等。重復值的概念知識儲備3.重復值的檢測重復值的檢測方法pandas中提供了一個檢測重復值的方法duplicated(),該方法默認會對所有數(shù)據(jù)進行檢測,檢測的標準為:只要一行數(shù)據(jù)與其他行數(shù)據(jù)的所有值完全相同,就會將其他行數(shù)據(jù)判定為重復值,并標記為True,非重復值標記為False。duplicated(subset=None,
keep='first')subset:用于指定檢測重復值的列索引或列索引序列,默認檢測所有列。keep:用于確定標記哪一行是重復值,該參數(shù)的取值可以為‘first’(默認值)、‘last’或False,其中‘first’表示標記第一次出現(xiàn)重復值的行為False,其余出現(xiàn)重復值的行會被標記為True;‘last’表示標記最后一次出現(xiàn)重復值的行為False,其余出現(xiàn)重復值的行會被標記為True;False表示所有出現(xiàn)重復值的行均被標記為True。知識儲備3.重復值的檢測duplicated()方法檢測完成后,會返回一個Series對象,該對象中的索引對應被檢測對象的行索引,數(shù)據(jù)是表示檢測結果的布爾值,其中True代表重復值,F(xiàn)alse代表非重復值。知識儲備3.重復值的檢測重復值的檢測方法掌握重復值的處理方法,能夠通過drop_duplicates()方法刪除重復值學習目標知識儲備4.重復值的處理在數(shù)據(jù)分析中,重復值會影響分析結果的準確性,一般情況下需要進行刪除,保證數(shù)據(jù)的唯一性。知識儲備4.重復值的處理刪除重復值的方法pandas中提供了刪除重復值的方法drop_duplicates(),該方法的語法格式如下。drop_duplicates(subset=None,
*,
keep='first',
inplace=False,
ignore_index=False)上述方法中,inplace參數(shù)接收一個布爾類型的值,表示是否替換原來的數(shù)據(jù),默認值為False;ignore_index參數(shù)表示是否重新分配索引,默認值為False。其他參數(shù)與duplicated()方法中的參數(shù)含義相同,此處不再贅述。知識儲備4.重復值的處理熟悉異常值的檢測方法,能夠通過3σ原則和箱形圖檢測數(shù)據(jù)中是否存在異常值學習目標知識儲備5.異常值的檢測異常值是指數(shù)據(jù)集中的個別值明顯偏離它所屬數(shù)據(jù)集的其余值,這些數(shù)值是不合理的或錯誤的。例如,人的年齡是200歲,身高是3米,商品的總數(shù)量是負數(shù)等。異常值的概念知識儲備5.異常值的檢測異常值的檢測方法213σ原則只適用于符合或近似正態(tài)分布的數(shù)據(jù)集。3σ原則箱形圖沒有什么嚴格的要求,可以檢測任意的數(shù)據(jù)集。箱形圖知識儲備5.異常值的檢測通過3σ原則檢測異常值3σ原則,又稱為拉依達原則,它是指先假設一組檢測數(shù)據(jù)只含有隨機誤差,對這組數(shù)據(jù)進行計算處理得到標準差,再依據(jù)特定概率劃定一個包含數(shù)據(jù)大部分正常波動的區(qū)間。數(shù)值幾乎全部集中在(μ-3σ,μ+3σ)內,超出這個區(qū)間的可能性僅占不到0.3%?!彩钦`差超過(μ-3σ,μ+3σ)的數(shù)值就認為是異常值。知識儲備5.異常值的檢測pandas中并沒有直接提供基于3σ原則檢測的方法,不過可以根據(jù)3σ原則定義一個函數(shù),用來檢測一組數(shù)據(jù)中是否有異常值。importnumpyasnpimportpandasaspddefthree_sigma(ser):mean_data=ser.mean()
std_data=ser.std()
rule=(mean_data–3*std_data>ser)|(mean_data+
3*std_data<ser)index=np.arange(ser.shape[0])[rule]outliers=ser.iloc[index]returnoutliers知識儲備5.異常值的檢測通過3σ原則檢測異常值通過箱形圖檢測異常值箱形圖是一種用于展示一組數(shù)據(jù)分散情況的統(tǒng)計圖表,它通過5個數(shù)據(jù)節(jié)點:上界(除異常值以外的最大值)、上四分位數(shù)(居于四分之三位置的值)、中位數(shù)(居于中間位置的值)、下四分位數(shù)(居于四分之一位置的值)、下界(除異常值以外的最小值)來概括數(shù)據(jù)的離散特征。此外,箱形圖還可以展示異常值,幫助用戶識別數(shù)據(jù)中的離群值或異常情況。知識儲備5.異常值的檢測pandas中提供了一個boxplot()方法,該方法會根據(jù)一組數(shù)據(jù)繪制箱形圖,便于用戶從箱形圖中查看數(shù)據(jù)中是否有異常值。df_obj=pd.read_csv(r'data\example_data.csv')df_obj.boxplot(column=['A','B'])左側箱形的上方有兩個空心圓點,這兩個空心圓點就表示異常值。知識儲備5.異常值的檢測通過箱形圖檢測異常值要想準確知道異常值,即圖中空心圓圈對應的y值,可以通過以下步驟實現(xiàn):當使用boxplot()方法繪制箱形圖時,可以先通過return_type參數(shù)指定返回值的類型為字典,再通過字典的鍵'fliers'獲取包含多組圖形對象的列表,獲取相應的圖形對象,最后通過圖形對象的get_ydata()方法便可以獲取空心圓圈的y值,也就是異常值。知識儲備5.異常值的檢測通過箱形圖檢測異常值importpandasaspddf_obj=pd.read_csv(r'data\example_data.csv')box_dict=df_obj.boxplot(column=['A','B'],return_type='dict')box_dict['fliers'][0].get_ydata()importnumpyasnpdefbox_outliers(ser):new_ser=ser.sort_values()ifnew_ser.count()%2==0:Q3=new_ser[int(len(new_ser)/2):].median()Q1=new_ser[:int(len(new_ser)/2)].median()elifnew_ser.count()%2!=0:Q3=new_ser[int((len(new_ser)-1)/2):].median()Q1=new_ser[:int((len(new_ser)-1)/2)].median()IQR=round(Q3-Q1,1)rule=(round(Q3+1.5*IQR,1)<ser)|
(round(Q1-1.5*IQR,1)>ser)index=np.arange(ser.shape[0])[rule]outliers=ser.iloc[index]returnoutliers通過箱形圖檢測異常值還可以自定義一個函數(shù),在該函數(shù)中根據(jù)箱形圖識別異常值的規(guī)則進行判斷,即只要一組數(shù)據(jù)中的值小于Q1–1.5IQR或者大于Q3+1.5IQR,就判斷這個值是異常值。知識儲備5.異常值的檢測掌握異常值的處理方法,能夠通過replace()方法替換數(shù)據(jù)中的異常值學習目標知識儲備6.異常值的處理異常值被檢測出來之后,需要進一步確認是否為真正的異常值,確認以后再根據(jù)實際情況選擇合適的方法進行處理。如果是異常值,通常情況下會使用指定的值或根據(jù)一些算法計算的值替換異常值。知識儲備6.異常值的處理替換異常值的方法pandas中提供了用于替換值的方法replace(),該方法不僅可以對單個值進行替換,還可以對多個值進行批量替換。replace(to_replace=None,
value=_NoDefault.no_default,
*,
inplace=False,
limit=None,
regex=False,method=_NoDefault.no_default)to_replace:表示被替換的值。value:表示替換后的值。inplace:表示是否修改原數(shù)據(jù)。若設為True,則表示直接修改原數(shù)據(jù);若設為False,則表示生成原數(shù)據(jù)的副本,并在副本上進行修改。method:表示替換的方式,pad/ffill表示向前填充,bfill表示向后填充。知識儲備6.異常值的處理替換異常值的示例1.
替換一個異常值df_obj.replace(to_replace=23,value=3)知識儲備6.異常值的處理2.
替換多個異常值df_obj.replace(to_replace=[23,50],value=[3,2])如果希望同時替換數(shù)據(jù)中的多個異常值,那么可以在調用replace()方法替換異常值時給to_replace和value參數(shù)分別傳入一個列表,列表中分別存放了多個要被替換的異常值和替換的新值,它們的長度必須相同。知識儲備6.異常值的處理替換異常值的示例熟悉數(shù)據(jù)類型的轉換方式,能夠通過astype()方法或to_numberic()函數(shù)轉換數(shù)據(jù)類型學習目標知識儲備7.轉換數(shù)據(jù)類型轉換數(shù)據(jù)類型的場景如何統(tǒng)計平均交易金額?交易金額一列的數(shù)據(jù)帶有符號“¥”,它們其實都是字符串類型的,無法直接進行計算平均值的操作。知識儲備7.轉換數(shù)據(jù)類型先把交易金額一列數(shù)據(jù)的符號“¥”去掉,再把去掉符號后剩余的數(shù)字轉換成相應的數(shù)字類型。如何統(tǒng)計平均交易金額?交易金額一列的數(shù)據(jù)帶有符號“¥”,它們其實都是字符串類型的,無法直接參與統(tǒng)計運算。知識儲備7.轉換數(shù)據(jù)類型轉換數(shù)據(jù)類型的場景轉換數(shù)據(jù)類型的方式知識儲備7.轉換數(shù)據(jù)類型通過astype()方法轉換數(shù)據(jù)的類型通過to_numeric()函數(shù)轉換數(shù)據(jù)類型方式一:方式二:通過astype()方法轉換數(shù)據(jù)的類型astype(dtype,copy=True,errors='raise',**kwargs)dtype:表示數(shù)據(jù)的類型。copy:是否建立副本,默認值為True,即建立副本。errors:錯誤采取的處理方式,可以取值為‘raise’或‘ignore’。其中‘raise’表示直接拋出異常,'ignore'表示忽略異常,在引發(fā)異常時返回原始對象,默認值為'raise'。astype()方法用于
將Series或DataFrame的數(shù)據(jù)類型轉換為指定的數(shù)據(jù)類型,讓數(shù)據(jù)更適合進行計算。需要注意的是,數(shù)據(jù)類型的轉換通常是有一定的約束條件的,數(shù)據(jù)的值必須能夠被合理地轉換,否則可能會導致錯誤。知識儲備7.轉換數(shù)據(jù)類型to_numeric(arg,
errors='raise',
downcast=None,
dtype_backend=_NoDefault.no_default)arg:表示要轉換的數(shù)據(jù),可以是列表、一維數(shù)組、Series等。errors:表示對于錯誤采取的處理方式。該參數(shù)支持‘ignore’、‘raise’(默認值)、‘coerce’三種取值,其中‘ignore’表示無效轉換時會忽略異常;‘raise’表示無效轉換時會引發(fā)異常;‘coerce’表示無效轉換時會將數(shù)值設置為NaN。to_numeric()函數(shù)用于將字符串、混合類型等一些復雜類型的數(shù)據(jù)轉換為數(shù)值類型的數(shù)據(jù),并能夠按照不同的參數(shù)配置靈活地處理這些復雜類型的數(shù)據(jù)。知識儲備7.轉換數(shù)據(jù)類型通過to_numeric()函數(shù)轉換數(shù)據(jù)類型to_numeric(arg,
errors='raise',
downcast=None,
dtype_backend=_NoDefault.no_default)downcast:用于指定最終要轉換的類型,該參數(shù)的取值可以是'integer'、'signed'、'unsigned'、'float'、None。to_numeric()函數(shù)用于將字符串、混合類型等一些復雜類型的數(shù)據(jù)轉換為數(shù)值類型的數(shù)據(jù),并能夠按照不同的參數(shù)配置靈活地處理這些復雜類型的數(shù)據(jù)。知識儲備7.轉換數(shù)據(jù)類型通過to_numeric()函數(shù)轉換數(shù)據(jù)類型掌握查看摘要信息的方式,能夠通過info()方法查看DataFrame的摘要信息學習目標知識儲備8.查看摘要信息知識儲備8.查看摘要信息為了便于用戶從整體了解數(shù)據(jù)的摘要信息,比如每一列總共有多少個數(shù)據(jù),每一列數(shù)據(jù)是什么類型的,哪一列存在缺失值等,可以使用info()方法查看Series和DataFrame的摘要信息。arr_2d=np.arange(1,31).reshape((6,5))df_obj=pd.DataFrame(data=arr_2d,columns=['No1','No2','No3','No4','No5'])#將指定位置的值修改為NaNdf_obj.iloc[2,2]=np.NaNdf_obj.iloc[3,2]=np.NaNdf_obj.info()任務分析【任務的實現(xiàn)思路】讀取二手房數(shù)據(jù)。檢測并處理缺失值。檢測并處理重復值。檢測并處理單價(元/平方米)一列的異常值。合并員工、部門和薪資數(shù)據(jù)任務4-2任務描述假設現(xiàn)有4個Excel文件,分別是employees1.csv、employees2.csv、salaries.xlsx、departments.xlsx,其中employees1.csv和employees2.csv文件保存了所有員工的基本信息,salaries.xlsx文件保存了所有員工的薪資信息,departments.xlsx文件保存了部門的基本信息。employees1.csvemployees2.csvsalaries.xlsxdepartments.xlsx任務描述本任務要求在base環(huán)境中安裝第三方庫Pyecharts。【任務的具體要求】本任務要求編寫代碼,結合4個Excel文件中數(shù)據(jù)本身的特點,選擇合適的方法依次合并數(shù)據(jù),并將合并后的最終數(shù)據(jù)保存到新Excel文件。掌握堆疊合并的方式,能夠靈活使用concat()函數(shù)實現(xiàn)堆疊合并操作學習目標知識儲備1.堆疊合并concat()的語法格式堆疊合并指的是沿著某個軸的方向將兩個或兩個以上的對象按照一定的邏輯關系進行合并。pandas中提供了一個用于堆疊合并的函數(shù)concat(),該函數(shù)的語法格式如下。concat(objs,
*,
axis=0,
join='outer',
ignore_index=False,
keys=None,
levels=None,
names=None,
verify_integrity=False,
sort=False,
copy=None)objs:表示要合并的多個對象,該參數(shù)接收包含Series或DataFrame對象的序列或字典。axis:表示堆疊的方向,取值可以是0(默認值)、'index'、1或'columns',其中0或'index'表示縱向堆疊,1或'columns'表示橫向堆疊。知識儲備1.堆疊合并concat()的語法格式堆疊合并指的是沿著某個軸的方向將兩個或兩個以上的對象按照一定的邏輯關系進行合并。pandas中提供了一個用于堆疊合并的函數(shù)concat(),該函數(shù)的語法格式如下。concat(objs,
*,
axis=0,
join='outer',
ignore_index=False,
keys=None,
levels=None,
names=None,
verify_integrity=False,
sort=False,
copy=None)join:表示連接的方式,取值可以是'inner'或'outer'(默認值),其中'inner'表示內連接,即取所有對象共有的行索引或列索引(交集部分),沒有數(shù)據(jù)的位置填充為NaN;'outer'表示外連接,即取所有對象全部的行索引或列索引(并集部分),沒有數(shù)據(jù)的位置填充為NaN。ignore_index:是否忽略索引,默認值為False,即忽略索引。如果設置為True,則會清除現(xiàn)有索引并重置索引。知識儲備1.堆疊合并橫向堆疊與外連接當使用concat()函數(shù)合并多個對象時,若axis參數(shù)的值是1或'columns',且給join參數(shù)的值是'outer',則此時會采用橫向堆疊與外連接的方式進行合并。知識儲備1.堆疊合并當使用concat()函數(shù)合并多個對象時,若axis參數(shù)的值是0或'index',且join參數(shù)的值是'inner',則此時會采用縱向堆疊與內連接的方式進行合并。知識儲備1.堆疊合并縱向堆疊與內連接掌握主鍵合并的方法,能夠靈活使用merge()函數(shù)實現(xiàn)主鍵合并操作學習目標知識儲備2.主鍵合并主鍵合并的概念主鍵合并類似于關系型數(shù)據(jù)庫的主鍵查詢操作,它指的是根據(jù)一個或多個鍵將兩個對象進行合并,大多數(shù)情況下會將這兩個對象中共有的列作為合并的鍵。知識儲備2.主鍵合并merge()的語法格式pandas中提供了一個用于主鍵合并的函數(shù)merge(),該函數(shù)的語法格式如下。merge(left,
right,
how='inner',
on=None,
left_on=None,
right_on=None,
left_index=False,
right_index=False,
sort=False,
suffixes=('_x',
'_y'),
...,
validate=None)left:參與合并的DataFrame對象。right:參與合并的對象,可以是DataFrame或Series對象,其中Series對象必須有名稱。on:表示合并時所依據(jù)的列名(鍵),可以是單個列名或多個列名組成的列表,但這些列名必須同時存在于left與right中。sort:是否排序,默認值為False,表示不排序。suffixes:表示重名的列添加的后綴,默認值為('_x',
'_y')。知識儲備2.主鍵合并merge()的語法格式pandas中提供了一個用于主鍵合并的函數(shù)merge(),該函數(shù)的語法格式如下。merge(left,
right,
how='inner',
on=None,
left_on=None,
right_on=None,
left_index=False,
right_index=False,
sort=False,
suffixes=('_x',
'_y'),
...,
validate=None)how:表示合并方式,支持'inner'(默認值)、'outer'、'left'、'right'、'cross'共5種取值,其中'inner'代表基于left與right鍵的交集合并;'outer'代表基于left與right鍵的并集合并,'left'代表基于left的鍵合并;'right'代表基于right的鍵合并;'cross'代表基于left與right創(chuàng)建的笛卡兒積合并。知識儲備2.主鍵合并根據(jù)一個鍵合并兩個對象知識儲備2.主鍵合并知識儲備2.主鍵合并根據(jù)兩個鍵合并兩個對象知識儲備2.主鍵合并采用外連接的方式合并兩個對象知識儲備2.主鍵合并采用左連接的方式合并兩個對象若兩個對象沒有標簽索引相同的列,則可以在調用merge()函數(shù)進行合并時,同時給left_index與right_index參數(shù)傳入值True,此時會將這兩個對象的行索引作為鍵。importpandasaspdleft=pd.DataFrame({'A':['A0','A1','A2'],'B':['B0','B1','B2']})right=pd.DataFrame({'C':['C0','C1','C2'],'D':['D0','D1','D2']},index=['a','b','c'])result=pd.merge(left=left,right=right,how='outer',
left_index=True,right_index=True)知識儲備2.主鍵合并沒有相同列合并兩個對象掌握根據(jù)索引合并的方法,能夠靈活使用join()方法實現(xiàn)根據(jù)索引合并的操作學習目標知識儲備3.根據(jù)索引合并根據(jù)索引合并的概念根據(jù)索引合并指的是根據(jù)行索引或列索引將多個對象合并成一個對象。知識儲備3.根據(jù)索引合并join()的語法格式pandas的DataFrame類中提供了一個用于根據(jù)索引合并多個對象的方法join(),該方法通常會根據(jù)列索引來合并多個對象,如果多個對象中有重名的列,且沒有明確區(qū)分重名的列,此時合并會導致程序報錯。join(other,
on=None,
how='left',
lsuffix='',
rsuffix='',
sort=False,
validate=None)other:表示要合并的對象,可以是DataFrame對象、Series對象或者包含DataFrame對象的列表,其中Series對象必須有名稱,該名稱會作為合并后對象的列名。on:表示合并的列索引。lsuffix:表示左側對象有重名的列時給該列的名稱添加的后綴名。rsuffix:表示右側對象有重名的列時給該列的名稱添加的后綴名。知識儲備3.根據(jù)索引合并join()的語法格式pandas的DataFrame類中提供了一個用于根據(jù)索引合并多個對象的方法join(),該方法通常會根據(jù)列索引來合并多個對象,如果多個對象中有重名的列,且沒有明確區(qū)分重名的列,此時合并會導致程序報錯。join(other,
on=None,
how='left',
lsuffix='',
rsuffix='',
sort=False,
validate=None)how:表示合并的方式,該參數(shù)支持‘left’、‘right’、‘outer’、‘inner’共4種取值,默認值為‘left’,代表采用左連接的方式合并多個對象,即以調用join()方法的對象(稱為左對象)為基準,保留左對象的全部數(shù)據(jù)。如果要合并的其他對象(稱為右對象)中存在與左對象重疊的索引或合并鍵,則保留右對象中這些重疊索引或鍵對應的數(shù)據(jù),并將其添加到左對象相應行的右側,否則對象行的右對象數(shù)據(jù)列將填充為NaN。知識儲備3.根據(jù)索引合并沒有重疊列時合并兩個對象知識儲備3.根據(jù)索引合并知識儲備3.根據(jù)索引合并有重疊列時合并兩個對象掌握合并重疊數(shù)據(jù)的方法,能夠靈活使用combine_first()方法實現(xiàn)合并重疊數(shù)據(jù)的操作學習目標知識儲備4.合并重疊數(shù)據(jù)combine_first()的語法格式在處理數(shù)據(jù)時,如果一個DataFrame對象有缺失的數(shù)據(jù),希望將這些缺失的數(shù)據(jù)用其他DataFrame對象的數(shù)據(jù)進行填充,這時可以通過combine_first()方法實現(xiàn)這個效果。combine_first()方法的語法格式如下。combine_first(other)上述方法中只有一個參數(shù)other,該參數(shù)表示用于填充缺失值的DataFrame對象。知識儲備4.合并重疊數(shù)據(jù)合并重疊數(shù)據(jù)的示例left存在3個缺失的數(shù)據(jù),而right的數(shù)據(jù)是完整的。知識儲備4.合并重疊數(shù)據(jù)掌握設置索引的方法,能夠靈活使用set_index()方法為DataFrame重新設置一組索引學習目標知識儲備5.設置索引set_index()的語法格式在數(shù)據(jù)分析中,設置索引是一項常見且重要的操作。通過設置索引,可以提高數(shù)據(jù)檢索的效率,并在進行數(shù)據(jù)合并、篩選和分組等操作時提供便利。在pandas中,通過set_index()方法可以指定DataFrame的某一列或多列作為索引。set_index(keys,
*,
drop=True,
append=False,
inplace=False,
verify_integrity=False)keys:用于指定要設置為索引的列名或列名列表。drop:用于指定在設置索引時是否刪除指定的列,默認值為True,即刪除。append:用于指定在設置索引時是否保留原有的索引,形成多級索引,默認值為False,即替換原有的索引。知識儲備5.設置索引set_index()的語法格式在數(shù)據(jù)分析中,設置索引是一項常見且重要的操作。通過設置索引,可以提高數(shù)據(jù)檢索的效率,并在進行數(shù)據(jù)合并、篩選和分組等操作時提供便利。在pandas中,通過set_index()方法可以指定DataFrame的某一列或多列作為索引。combine_first(other)inplace:用于指定在設置索引時是否在原DataFrame上直接修改,默認值為False,即不修改原DataFrame,返回新的DataFrame。若設置為True,則將修改原始DataFrame,并且不會返回新的DataFrame。知識儲備5.設置索引任務分析【任務的實現(xiàn)思路】讀取每個文件的數(shù)據(jù)。合并全部數(shù)據(jù)。將合并后的最終數(shù)據(jù)寫入文件。重塑學生信息任務4-3任務描述本任務要求在base環(huán)境中安裝第三方庫Pyecharts?!救蝿盏木唧w要求】本任務要求編寫代碼重塑表格的學生信息,將表格的行標題和列標題交換位置,并在互換位置后增加一列來統(tǒng)計每個班級的總人數(shù)。掌握重塑分層索引的方式,能夠通過stack()和unstack()方法實現(xiàn)重塑分層索引的操作學習目標知識儲備重塑分層索引重塑分層索引是非常有用的技巧,通常指的是重新排列或重新組織分層索引,能夠在包含分層索引的DataFrame或Series之間靈活轉換,以滿足不同的數(shù)據(jù)處理的需求。在pandas中,實現(xiàn)重塑分層索引功能的方法包括stack()和unstack()。知識儲備重塑分層索引stack()的語法格式stack(level=-1,
dropna=_NoDefault.no_default,
sort=_NoDefault.no_default,
future_stack=False)level:表示要操作的分層索引的級別,默認值為-1,表示操作最內層的索引。若設為0,表示DataFrame中第一層級的列索引。dropna:表示是否將重塑后產(chǎn)生的缺失值刪除。若設置為True,則表示自動刪除缺失值;如果設置為False,則表示不刪除。知識儲備重塑分層索引stack()方法用于將DataFrame的列索引轉換為行索引,從而生成一個包含多層索引的Series或DataFrame。DataFrame重塑為有兩層索引的Series知識儲備重塑分層索引知識儲備重塑分層索引unstack()的語法格式unstack(level=-1,
fill_value=None,
sort=True)level:表示要操作的分層索引的級別,默認值為-1,表示操作最內層的索引。若設為0,則表示操作最外層的索引。fill_value:用于指定在產(chǎn)生缺失值時要填充的值。sort:表示是否根據(jù)列索引對結果進行排序,默認值為True,表示排序。unstack()方法的功能相當于stack()方法的逆操作,用于將包含分層索引的Series或者DataFrame的行索引中的某一層級轉換為DataFrame的列索引。知識儲備重塑分層索引有兩層索引的Series重塑為DataFrame前面介紹了DataFrame和有分層索引Series的重塑操作,除此之外,stack()與unstack()方法還可以將有分層索引的DataFrame對象重塑成另一個有分層索引的DataFrame對象。知識儲備重塑分層索引DataFrame重塑為其他DataFrame默認情況下,重塑分層索引是對分層索引的最內層索引進行旋轉,當需要對分層索引的其他層級的索引進行旋轉時,可以將stack()方法中l(wèi)eve參數(shù)的值設置為相應的層級。知識儲備重塑分層索引DataFrame重塑為其他DataFrame任務分析【任務的實現(xiàn)思路】創(chuàng)建數(shù)據(jù)結構。交換行列標題的位置。增加總人數(shù)一列。調整產(chǎn)品訂單數(shù)據(jù)的展示方式任務4-4任務描述假設現(xiàn)有一份文件sales_orders.xlsx,該文件中記錄了當月不同地區(qū)客戶購買產(chǎn)品的訂單信息,包括訂單編號、客戶地區(qū)、產(chǎn)品名稱、購買數(shù)量和訂單金額。任務描述本任務要求在base環(huán)境中安裝第三方庫Pyecharts?!救蝿盏木唧w要求】本任務要求編寫代碼,調整產(chǎn)品訂單數(shù)據(jù)的展示方式,只展示每個地區(qū)每種產(chǎn)品的購買數(shù)量和訂單金額,方便用戶快速了解不同產(chǎn)品在不同地區(qū)的訂購情況,從而制定合理的庫存和營銷策略。掌握軸向旋轉的方法,能夠通過pivot()方法實現(xiàn)軸向旋轉的操作學習目標知識儲備軸向旋轉軸向旋轉的場景這張表格無法快速比較同一款商品在活動前后的價格浮動情況。這張表格可以快速比較同一款商品在活動前后的價格浮動情況。知識儲備軸向旋轉軸向旋轉的場景舉例知識儲備軸向旋轉軸向旋轉是一種調整數(shù)據(jù)布局的操作,它通過行列轉置或行列互換等方式,改變數(shù)據(jù)在行列方向上的排列,以適配不同的分析或展示需求。與重塑分層索引不同,軸向旋轉不會改變索引的層級結構,而是直接轉換行列的布局,實現(xiàn)行轉列、列轉行或行列互換等轉換。pivot()的語法格式pandas中提供了pivot()方法實現(xiàn)軸向旋轉的功能,它會根據(jù)給定的行索引、列索引和值重新組織一個DataFrame對象,該方法的語法格式如下。pivot(*,
columns,
index=_NoDefault.no_default,
values=_NoDefault.no_default)columns:用于生成結果對象的列索引。index:用于生成結果對象的行索引。如果未設置,則使用原對象的行索引。values:用于填充結果對象的值。如果沒有設置該參數(shù),則會使用除index和columns參數(shù)指定的行索引或列索引之外的所有數(shù)據(jù)作為結果對象的值。知識儲備軸向旋轉任務分析【任務的實現(xiàn)思路】讀取產(chǎn)品訂單數(shù)據(jù)。調整產(chǎn)品訂單數(shù)據(jù)的展示方式。劃分用戶群體任務4-5任務描述根據(jù)用戶的購買或咨詢等行為,可以將用戶劃分為興趣用戶、新用戶、活躍用戶、成熟用戶、流失用戶、其他總共6類。假設現(xiàn)有一份保存了用戶購買或咨詢相關信息的customer.xlsx文件。任務描述本任務要求在base環(huán)境中安裝第三方庫Pyecharts?!救蝿盏木唧w要求】本任務要求編寫代碼,根據(jù)購買次數(shù)和咨詢次數(shù)劃分用戶群體,具體要求如下:如果用戶從未購買且從未咨詢過產(chǎn)品,則劃分為流失用戶。如果用戶從未購買但是咨詢過產(chǎn)品,則劃分為興趣用戶。如果用戶購買過一次且咨詢過產(chǎn)品,則劃分為新用戶。如果用戶購買過多次且咨詢過產(chǎn)品,則劃分為活躍用戶。如果用戶購買過多次且沒有咨詢過產(chǎn)品,則劃分為成熟用戶。如果以上情況都沒出現(xiàn)過,則劃分為其他。掌握面元劃分的方法,能夠通過cut()函數(shù)實現(xiàn)面元劃分的操作學習目標知識儲備1.面元劃分面元劃分是指將連續(xù)型數(shù)據(jù)進行離散化處理,按一定的劃分規(guī)則將數(shù)據(jù)分配到相應的面元,這里的面元可以理解為區(qū)間。左側表格的每個數(shù)值對應著右側表格中的一個面元。知識儲備1.面元劃分面元劃分的概念cut()的語法格式pandas中使用cut()函數(shù)實現(xiàn)面元劃分操作,cut()函數(shù)會采用等寬法對連續(xù)型數(shù)據(jù)進行離散化處理,該函數(shù)的語法格式如下。cut(x,
bins,
right=True,
labels=None,
retbins=False,
precision=3,
include_lowest=False,
duplicates='raise',
ordered=True)x:表示面元劃分的連續(xù)型數(shù)據(jù),可以取值為一維數(shù)組或Series對象。bins:表示劃分面元的依據(jù)。若為int類型的值,則代表面元的數(shù)目;若為list、tuple、array類型的值,則手動指定每個區(qū)間的邊界值。right:表示右端點是否為閉區(qū)間,默認為True,表示閉區(qū)間。知識儲備1.面元劃分cut()的語法格式pandas中使用cut()函數(shù)能夠實現(xiàn)面元劃分操作,cut()函數(shù)會采用等寬法對連續(xù)型數(shù)據(jù)進行離散化處理,該函數(shù)的語法格式如下。cut(x,
bins,
right=True,
labels=None,
retbins=False,
precision=3,
include_lowest=False,
duplicates='raise',
ordered=True)labels:表示劃分的各區(qū)間的標簽。retbins:表示是否返回區(qū)間的邊界。precision:表示區(qū)間標簽的精度,默認為3,表示保留3位小數(shù)。include_lowest:表示是否包含區(qū)間的左端點,默認為False,表示不包含。知識儲備1.面元劃分※cut()函數(shù)會返回一個Categorical類對象,該對象可以被看作一個包含若干個面元名稱的數(shù)組,通過categories屬性可以獲取所有的分類,即劃分時定義的全部面元區(qū)間。知識儲備1.面元劃分cut()的語法格式pand
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥劑學試題庫及答案
- 術后復發(fā)性糖尿病的預防策略
- 術后不明原因發(fā)熱的感染源分析方法
- 大型國有集團公司信息化系統(tǒng)轉讓和報廢管理辦法
- 鳴鳴很忙商業(yè)公司招聘面試題及答案
- 栽植黃山松施工方案視頻
- 本科模擬教學的多元化能力培養(yǎng)體系
- 護理質量改善中的風險管理與危機處理
- 碧云天讀后感
- 醫(yī)療衛(wèi)生政策與法規(guī)培訓與解析
- 投資者適當性管理課件
- 中西方餐桌禮儀的差異課件
- 駕照考試科目一學習內容
- 化工課件-油品儲運工藝
- 電力電纜基礎知識課件
- 代理記賬申請表
- 模型五:數(shù)列中的存在、恒成立問題(解析版)
- 印品整飾工等級題庫技能鑒定C卷
- 2023武漢市元調-化學卷及答案
- 商業(yè)地產(chǎn)招商部管理辦法
- GB∕T 799-2020 地腳螺栓-行業(yè)標準
評論
0/150
提交評論