Python數據分析與實戰(微課版)課件 第3章 pandas統計分析基礎_第1頁
Python數據分析與實戰(微課版)課件 第3章 pandas統計分析基礎_第2頁
Python數據分析與實戰(微課版)課件 第3章 pandas統計分析基礎_第3頁
Python數據分析與實戰(微課版)課件 第3章 pandas統計分析基礎_第4頁
Python數據分析與實戰(微課版)課件 第3章 pandas統計分析基礎_第5頁
已閱讀5頁,還剩61頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

pandas統計分析基礎1DataFrame的常用操作目錄讀/寫不同數據源的數據2轉換與處理時間序列數據3使用分組聚合進行組內計算4pandas是Python的核心數據分析支持庫,提供了快速、靈活、明確的數據結構,旨在簡單、直觀地處理關系型、標記型數據。pandas建造在NumPy之上,所以使得pandas在以NumPy為中心的應用中得以容易的使用,而pandas庫在與其它第三方科學計算支持庫結合時也能夠完美的進行集成。在Python中,pandas庫的功能十分強大,它可提供高性能的矩陣運算。可用于數據挖掘和數據分析,同時也提供數據清洗功能;支持類似SQL的數據增、刪、查、改等操作,并且帶有豐富的數據處理函數;支持時間序列數據分析功能;支持靈活處理缺失數據等。認識pandas庫pandas有兩個強大的利器。Series(一維數據)是一種類似于一維數組的對象,是由一組數據(各種NumPy數據類型)以及一組與之相關的數據標簽(即索引)組成,而僅由一組數據也可產生簡單的Series對象。DataFrame是pandas中的一個表格型的數據結構,包含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾型等),DataFrame既有行索引也有列索引,可以被看做是由Series組成的字典。認識pandas庫文本文件是一種由若干行字符構成的計算機文件,它是一種典型的順序文件。CSV是一種用分隔符分隔的文件格式,因為其分隔符不一定是逗號,所以又被稱為字符分隔文件。文本文件以純文本形式存儲表格數據(數字和文本),它是一種通用、相對簡單的文件格式,較廣泛地應用是在程序之間轉移表格數據,而這些程序本身是在其他程序不兼容的格式上進行操作的(往往是私有的、無通用規范的格式)。大量程序都支持CSV或其變體,所以CSV或其變體可以作為大多數程序的輸入和輸出格式。讀/寫文本文件CSV文件根據其定義也是一種文本文件。在數據讀取過程中可以使用文本文件的讀取函數對CSV文件進行讀取。同時,如果文本文件是字符分隔文件,那么可以使用讀取CSV文件的函數進行讀取。pandas提供了read_table()函數讀取文本文件,提供了read_csv()函數讀取CSV文件。讀/寫文本文件1.文本文件讀取read_table()函數和read_csv()函數具有許多參數,如果有多個<expression>,那么表達式之間用逗號隔開,基本使用格式如下。讀/寫文本文件pandas.read_table(filepath_or_buffer,*,sep=_NoDefault.no_default,delimiter=None,header='infer',names=_NoDefault.no_default,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skipinitialspace=False,skiprows=None,skipfooter=0,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=_NoDefault.no_default,skip_blank_lines=True,parse_dates=False,infer_datetime_format=_NoDefault.no_default,keep_date_col=_NoDefault.no_default,date_parser=_NoDefault.no_default,date_format=None,dayfirst=False,cache_dates=True,iterator=False,chunksize=None,compression='infer',thousands=None,decimal='.',lineterminator=None,quotechar='"',quoting=0,doublequote=True,escapechar=None,comment=None,encoding=None,encoding_errors='strict',dialect=None,on_bad_lines='error',delim_whitespace=_NoDefault.no_default,low_memory=True,memory_map=False,float_precision=None,storage_options=None,dtype_backend=_NoDefault.no_default)讀/寫文本文件pandas.read_csv(filepath_or_buffer,*,sep=_NoDefault.no_default,delimiter=None,header='infer',names=_NoDefault.no_default,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skipinitialspace=False,skiprows=None,skipfooter=0,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=_NoDefault.no_default,skip_blank_lines=True,parse_dates=None,infer_datetime_format=_NoDefault.no_default,keep_date_col=_NoDefault.no_default,date_parser=_NoDefault.no_default,date_format=None,dayfirst=False,cache_dates=True,iterator=False,chunksize=None,compression='infer',thousands=None,decimal='.',lineterminator=None,quotechar='"',quoting=0,doublequote=True,escapechar=None,comment=None,encoding=None,encoding_errors='strict',dialect=None,on_bad_lines='error',delim_whitespace=_NoDefault.no_default,low_memory=True,memory_map=False,float_precision=None,storage_options=None,dtype_backend=_NoDefault.no_default)read_table()函數和read_csv()函數的多數參數相同,它們的常用參數及其說明如下表。讀/寫文本文件參數名稱參數說明filepath_or_buffer接收str。表示文件路徑。無默認值sep接收str。表示分隔符。read_csv函數默認為“,”,read_table函數默認為制表符“Tab”header接收int或列表形式的int。表示將某行數據作為列名。默認為infernames接收array。表示列名。無默認值index_col接收int、sequence或False。表示索引列的位置,取值為sequence則代表多重索引。默認為Noneread_table()函數和read_csv()函數的多數參數相同,它們的常用參數及其說明如下表。讀/寫文本文件參數名稱參數說明dtype接收字典形式的列名或type_name。表示寫入的數據類型(列名為key,數據格式為values)。默認為Noneengine接收c語言或python語言。表示要使用的數據解析引擎。默認為Nonenrows接收int。要讀取的文件行數。默認為Noneskiprows接收list或int或callable。表示讀取數據時跳過開頭的行數。默認為None堅持把發展經濟的著力點放在實體經濟上,推進新型工業化,加快建設制造強國。某公司收集了工業制品銷售數據信息,部分信息如下表。讀/寫文本文件商品ID商品類別訂單時間銷售量/個銷售價格/元10004328類別A2023/3/114:51314710000346類別A2023/3/94:16823910001192類別A2023/3/822:2145310003708類別A2023/2/251:22343根據工業制品銷售數據表,分別使用read_table()和read_csv()這兩個函數讀取數據。read_table()函數和read_csv()函數應注意。sep參數是指定文本的分隔符,如果分隔符指定錯誤,那么在讀取數據的時候,每一行數據將連成一片。header參數用于指定列名,如果header參數值是None,那么將會添加一個默認的列名。encoding代表文件的編碼格式,常用的編碼格式有UTF-8、UTF-16、GBK、GB2312、GB18030等。如果編碼格式指定錯誤,那么數據將無法讀取,IPython解釋器會報解析錯誤。讀/寫文本文件文本文件的存儲和讀取類似,對于結構化數據,可以通過pandas庫中的to_csv()方法實現以CSV文件格式存儲。to_csv()函數同樣具有許多參數,如果有多個<expression>,那么表達式之間用逗號隔開,基本使用格式如下。讀/寫文本文件2.文本文件存儲DataFrame.to_csv(path_or_buf=None,sep=',',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,mode='w',encoding=None,compression='infer',quoting=None,quotechar='"',line_terminator=None,chunksize=None,date_format=None,doublequote=True,escapechar=None,decimal='.',errors='strict',storage_options=None)to_csv()方法的常用參數及其說明如下表。讀/寫文本文件參數名稱參數說明path_or_buf接收str。表示文件路徑。默認為Nonesep接收str。表示分隔符。默認為“,”na_rep接收str。表示缺失值。默認為“”columns接收list。表示寫出的列名。默認為Noneheader接收bool或列表形式的str。表示是否將列名寫出。默認為Trueindex接收bool。表示是否將行名(索引)寫出。默認為Trueindex_label接收sequence或str或false。表示索引名。默認為Nonemode接收特定str。表示數據寫入模式。默認為wencoding接收特定str。表示存儲文件的編碼格式。默認為NoneExcel是微軟公司的辦公軟件MicrosoftOffice的組件之一,它可以對數據進行處理、統計分析等操作,廣泛地應用于管理、財經和金融等眾多領域,其文件擴展名依照程序版本的不同分為以下兩種。MicrosoftOfficeExcel2007之前的版本(不包括2007)默認保存的文件擴展名為.xls。MicrosoftOfficeExcel2007之后的版本默認保存的文件擴展名為.xlsx。讀/寫Excel文件pandas庫提供了read_excel()函數讀取“xls”和“xlsx”兩種Excel文件,基本使用格式如下。讀/寫Excel文件1.Excel文件讀取pandas.read_excel(io,sheet_name=0,*,header=0,names=None,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=False,parse_dates=False,date_parser=_NoDefault.no_default,date_format=None,thousands=None,decimal='.',comment=None,skipfooter=0,storage_options=None,dtype_backend=_NoDefault.no_default,engine_kwargs=None)read_excel()函數的常用參數及其說明如下表。讀/寫Excel文件參數名稱參數說明io接收str。表示文件路徑。無默認值sheet_name接收str、int、list或None。表示Excel表內數據的分表位置。默認為0header接收int或列表形式的int。表示將某行數據作為列名。如果傳遞整數列表,那么行位置將合并為MultiIndex。如果沒有表頭,那么使用None。默認為0names接收array。表示要使用的列名列表。默認為Noneindex_col接收int或列表形式的int。表示將列索引用作dataframe的行索引。默認為Nonedtype接收dict。表示寫入的數據類型(列名為key,數據格式為values)。默認為Noneskiprows接收list、int或callable。表示讀取數據開頭跳過的行數。默認為None將數據存儲至Excel,可以使用to_excel()方法,基本使用格式如下。讀/寫Excel文件2.Excel文件存儲DataFrame.to_excel(excel_writer,*,sheet_name='Sheet1',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,startrow=0,startcol=0,engine=None,merge_cells=True,inf_rep='inf',freeze_panes=None,storage_options=None,engine_kwargs=None)to_excel()函數的常用參數及其說明如下表。讀/寫Excel文件參數名稱參數說明excel_writer接收str。表示文件路徑。無默認值sheet_name接收str。表示Excel文件中工作簿的名稱。默認為Sheet1na_rep接收str。表示缺失值。默認為“”columns接收列表形式的str或sequence。表示寫出的列名。默認為Noneheader接收bool或列表形式的str。表示是否將列名寫出。默認為Trueindex接收bool。表示是否將行名(索引)寫出。默認為Trueindex_label接收sequence或str。表示索引名。默認為None在生產環境中,絕大多數的數據都存儲在數據庫中。pandas庫提供了讀取與存儲關系型數據庫數據的函數與方法。除了pandas庫外,還需要使用SQLAlchemy庫建立對應的數據庫連接。pandas支持MySQL、postgresql、Oracle、SQLServer和SQLite等主流數據庫。SQLAlchemy是配合相應數據庫的Python連接工具。MySQL數據庫需要安裝mysqlclient或pymysql庫。Oracle數據庫需要安裝cx_oracle庫。使用create_engine()函數,建立一個數據庫連接。下面將以MySQL數據庫為例,介紹pandas數據庫數據的讀取與存儲。讀/寫數據庫數據pandas可實現數據庫數據的讀取,但前提是讀者在進行讀取操作前確保已安裝數據庫,并且數據庫可以正常打開及使用。進行數據庫的讀取可利用3種函數進行操作。read_sql_table()函數只能讀取數據庫的某一個表格,不能實現查詢的操作。read_sql_query()函數則只能實現查詢操作,不能直接讀取數據庫中的某個表。read_sql()函數是兩者的綜合,既能夠讀取數據庫中的某一個表,也能夠實現查詢操作。讀/寫數據庫數據1.數據庫數據讀取read_sql_table()函數、read_sql_query()函數和read_sql()函數具有許多參數,參數的表達式之間用逗號隔開,基本使用格式如下。讀/寫數據庫數據pandas.read_sql_table(table_name,con,schema=None,index_col=None,coerce_float=True,parse_dates=None,columns=None,chunksize=None,dtype_backend=_NoDefault.no_default)pandas.read_sql_query(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,chunksize=None,dtype=None,dtype_backend=_NoDefault.no_default)pandas.read_sql(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,columns=None,chunksize=None,dtype_backend=_NoDefault.no_default,dtype=None)read_sql_table()、read_sql_query()和read_sql()這3個數據庫數據讀取函數的參數幾乎完全一致,唯一的區別在于傳入的是語句還是表名。3個函數的參數及其說明如下表。讀/寫數據庫數據參數名稱參數說明sqlortable_name接收str。表示讀取的數據的表名或SQL語句。無默認值con接收數據庫連接或str。表示數據庫連接信息。無默認值index_col接收str或列表形式的str。表示列設置為索引。默認為Nonecoerce_float接收bool。表示嘗試將非字符串、非數字對象(如十進制)的值轉換為浮點。默認為Truecolumns接收list。表示要從SQL表中選擇的列名列表。默認為None在讀取數據庫數據前,需要先創建數據庫連接。Python提供了SQLAlchemy庫的create_engine函數用于創建數據庫連接,在creat_engine函數中輸入的是一個連接字符串。在使用Python的SQLAlchemy時,MySQL和Oracle數據庫連接字符串的格式如下。讀/寫數據庫數據數據庫產品名+連接工具名://用戶名:密碼@數據庫IP地址:數據庫端口號/數據庫名稱?charset=數據庫數據編碼格式將DataFrame寫入數據庫中,同樣也要依賴SQLAlchemy庫的create_engine函數創建數據庫連接。數據庫數據讀取有3個函數,但數據存儲則只有一個to_sql()方法。to_sql()方法的基本使用格式如下。讀/寫數據庫數據2.數據庫數據存儲DataFrame.to_sql(name,con,schema=None,if_exists='fail',index=True,index_label=None,chunksize=None,dtype=None,method=None)to_sql()函數的常用參數及其說明如下表。讀/寫Excel文件參數名稱參數說明name接收str。表示數據庫表名。無默認值con接收數據庫連接。表示數據庫連接信息。無默認值if_exists接收str。表示對表進行操作的方式,可選“fail”“replace”“append”。fail表示如果表名存在,那么不執行寫入操作;replace表示如果表名存在,那么將原數據庫表刪除,再重新創建;append則表示在原數據庫表的基礎上追加數據。默認為failindex接收bool。表示是否將DataFrame索引寫入列并使用index_Label作為表中的列名。默認為Trueindex_label接收str或sequence。表示索引列的列標簽。如果沒有給定(默認)且索引為True,那么使用索引名稱。如果DataFrame使用MultiIndex,那么應該給出序列。默認為Nonedtype接收dict或scalar。表示指定列的數據類型。默認為None1DataFrame的常用操作目錄讀/寫不同數據源的數據2轉換與處理時間序列數據3使用分組聚合進行組內計算4DataFrame的基礎屬性如下。values,可以獲取元素;index,可以獲取索引;column,可以獲取列名;dtypes,可以獲取數據類型。除了上述4個基本屬性外,還可以通過size、ndim和shape屬性獲取DataFrame的元素個數、維度數和數據形狀(行列數目)。T屬性能夠實現DataFrame的轉置(行列轉換)。在某些特殊場景下,某些函數或方法只能作用于列或行,此時即可試著用轉置來解決這一問題。查看DataFrame的常用屬性學習過數據庫相關知識的讀者都知道,在數據庫中最常使用的操作為查改增刪。DataFrame作為一種二維數據表結構,能夠像數據庫一樣實現查改增刪操作,如添加一行、刪除一行、添加一列、刪除一列、修改某一個值、某個區間的值替換等。查看訪問DataFrame中的數據除了可以使用基本的查看方式查看訪問DataFrame中的數據之外,還可以通過loc()方法和iloc()方法進行訪問。(1)DataFrame數據的基本查看方式DataFrame的單列數據為一個Series。根據DataFrame的定義可知,DataFrame是一個帶有標簽的二維數組,每個標簽相當于每一列的列名。只要以字典訪問某一個key的值的方式使用對應的列名,即可實現對單列數據的訪問當訪問DataFrame數據中某一列的某幾行數據時,單獨一列的DataFrame可以視為一個Series,而訪問Series基本和訪問一維的ndarray相同。查改增刪DataFrame數據訪問DataFrame多列數據時可以將多個列索引名稱放入一個列表,同時,訪問DataFrame多列數據中的多行數據和訪問單列數據的多行數據的方法基本相同。如果只是需要訪問DataFrame某幾行數據,那么實現方式和上述的訪問多列多行的方式相似,選擇所有列,使用“:”代替即可。除了使用上述方法能夠得到多行數據以外,通過DataFrame提供的方法head()和tail()也可以得到多行數據,但是用這兩種方法得到的數據都是從開始或末尾獲取的連續數據。head()方法和tail()方法使用的都是默認參數,所以訪問的是前、后5行。在方法后的“()”中輸入訪問行數,即可實現目標行數的查看。查改增刪DataFrame數據DataFrame的數據查看與訪問基本方法雖然能夠基本滿足數據查看要求,但是終究還是不夠靈活。pandas提供了loc()和iloc()兩種更加靈活的方法來實現數據訪問。loc()方法是針對DataFrame索引名稱的切片方法,如果傳入的不是索引名稱,那么切片操作將無法執行。利用loc()方法,能夠實現對所有單層索引的切片操作。iloc()方法接收的必須是行索引和列索引的位置。查改增刪DataFrame數據(2)DataFrame的loc、iloc訪問方式loc()方法和iloc()方法基本使用格式如下。查改增刪DataFrame數據DataFrame.loc[行索引名稱或條件,列索引名稱]DataFrame.iloc[行索引位置,列索引位置]使用loc()方法和iloc()方法可以對DataFrame進行多種操作。單列切片。多列切片,其原理是將多列的列名或位置作為一個列表或數據傳入。取出DataFrame中的任意數據。在使用loc()方法的時候,如果內部傳入的行索引名稱為一個區間,那么前后均為閉區間。而使用iloc()方法時,如果內部傳入的行索引位置或列索引位置為區間,那么為前閉后開區間。查改增刪DataFrame數據loc()方法的內部還可以傳入表達式,結果會返回滿足表達式的所有值。iloc()方法不能接收表達式,原因在于,iloc()方法可以接收的數據類型并不包括Series。根據Series的構成,應取出該Series的values。總體來說,loc()方法更加靈活多變,代碼的可讀性更高;iloc()方法的代碼簡潔,但可讀性不高。在數據分析工作中具體使用哪一種方法,應根據情況而定,大多數時候建議使用loc()方法。查改增刪DataFrame數據更改DataFrame中的數據的原理是將這部分數據提取出來,重新賦值為新的數據。需要注意的是,數據更改是直接對DataFrame原數據更改,操作無法撤銷。如果不希望直接對原數據做出更改,那么需要對更改條件進行確認或對數據進行備份。查改增刪DataFrame數據2.更改DataFrame中的數據為DataFrame添加一列數據的方法非常簡單,只需要新建一個列索引,并對該索引下的數據進行賦值操作即可。如果新增的一列值是相同的,那么可以直接為其賦值一個常量。查改增刪DataFrame數據3.為DataFrame增添數據刪除某列或某行數據需要用到pandas提供的方法drop()。drop()方法的基本使用格式如下。查改增刪DataFrame數據4.刪除某列或某行數據DataFrame.drop(labels=None,*,axis=0,index=None,columns=None,level=None,inplace=False,errors='raise')drop()函數的常用參數及其說明如下表。刪除某行數據,只需要將drop()方法參數中的“labels”參數換成對應的行索引,將“axis”參數設置為0即可。查改增刪DataFrame數據參數名稱參數說明labels接收單一標簽。表示要刪除的列或行的索引。默認值為Noneaxis接收0或1。表示操作的軸向。默認為0inplace接收bool。表示操作是否對原數據生效。默認為False描述性統計是用于概括、表述事物整體狀況,以及事物間關聯、類屬關系的統計方法。通過幾個統計值可簡捷地表示一組數據的集中趨勢和離散程度等。數值型特征的描述性統計數值型特征的描述性統計主要包括了計算數值型數據的最小值、均值、中位數、最大值、四分位數、極差、標準差、方差、協方差和變異系數等。描述分析DataFrame數據在NumPy庫中已經提到了為數不少的統計函數,為方便讀者查看,將NumPy庫簡寫為np,部分統計函數如下表。pandas庫是基于NumPy庫的,自然也可以使用表中的統計函數對數據進行描述性統計。描述分析DataFrame數據函數名稱參數說明函數名稱函數說明np.min最小值np.max最大值np.mean均值np.ptp極差np.median中位數np.std標準差np.var方差np.cov協方差pandas還提供了更加便利的方法來進行數值型數據的統計。用np.mean函數實現計算某列的均值,也可以通過pandas實現。作為專門為數據分析而生的Python庫,pandas還提供了一個describe()方法,能夠一次性得出數據框中所有數值型特征如下。非空值數目。均值。四分位數。標準差。最大值和最小值。描述分析DataFrame數據pandas還提供了與統計相關的主要函數,這些函數能夠滿足絕大多數數據分析所需要的數值型特征的描述性統計工作,統計方法如下表。描述分析DataFrame數據函數名稱參數說明函數名稱函數說明min最小值max最大值mean均值ptp極差median中位數std標準差var方差cov協方差sem標準誤差mode眾數skew樣本偏度kurt樣本峰度quantile分位數count非空值數目describe描述統計mad平均絕對離差描述類別型特征的分布狀況,可以使用頻數統計。在pandas庫中實現頻數統計的方法為value_counts()。除了使用value_counts()方法分析頻率分布外,pandas提供了category類,可以使用astype()方法將目標特征的數據類型轉換為category類型。describe()方法除了支持傳統數值型數據以外,還能夠支持對category類型的數據進行描述性統計,4個統計量如下。列非空元素的數目。類別的數目。數目最多的類別。數目最多類別的數目。描述分析DataFrame數據2.類別型特征的描述性統計1DataFrame的常用操作目錄讀/寫不同數據源的數據2轉換與處理時間序列數據3使用分組聚合進行組內計算4在多數情況下,對時間類型數據進行分析的前提就是將原本為字符串的時間轉換為標準時間。pandas繼承了NumPy庫和datetime庫的時間相關模塊,提供了6種時間相關的類如下表。轉換字符串時間為標準時間函數名稱參數說明Timestamp最基礎的時間類。表示某個時間點。絕大多數的場景中的時間數據都是Timestamp形式Period表示某個時間段,如某一天、某一小時等Timedelta表示不同單位的時間,如1d、1.5h、3min、4s等,而非具體的某個時間段DatetimeIndex一組Timestamp構成的Index,可以用于作為Series或DataFrame的索引PeriodIndex一組Period構成的Index,可以用于作為Series或DataFrame的索引TimedeltaIndex一組Timedelta構成的Index,可以用于作為Series或DataFrame的索引Timestamp是時間類中較為基礎的,也是較為常用的。在多數情況下,會將與時間相關的字符串轉換成為Timestamp。pandas提供的to_datetime函數,能夠實現這一目標。to_datetime函數的基本使用格式如下。轉換字符串時間為標準時間pandas.to_datetime(arg,errors='raise',dayfirst=False,yearfirst=False,utc=False,format=None,exact=_NoDefault.no_default,unit=None,infer_datetime_format=_NoDefault.no_default,origin='unix',cache=True)to_datetime()函數的常用參數及其說明如下表。轉換字符串時間為標準時間函數名稱參數說明arg接收str、int、float、list、tuple、datetime或array。表示需要轉換的時間日期對象。無默認值errors接收“ignore”“raise”“coerce”。表示無效解析。默認為raisedayfirst\yearfirst接收bool。表示指定日期的解析順序。默認為False值得注意的是,Timestamp類型的時間是有限制的,在作者計算機中最早只能夠表示至1677年9月21日,最晚只能表示至2262年4月11日。除了將數據從原始DataFrame中直接轉換為Timestamp類型外,還可以將數據單獨提取出來,將其轉換為DatetimeIndex類型或PeriodIndex類型。但DatetimeIndex和PeriodIndex在日常使用的過程中并無太大區別。DatetimeIndex是用于指代一系列時間點的一種數據結構。PeriodIndex則是用于指代一系列時間段的數據結構。轉換字符串時間為標準時間DatetimeIndex類與PeriodIndex類的基本使用格式如下。轉換字符串時間為標準時間classpandas.DatetimeIndex(data=None,freq=_NoDefault.no_default,tz=_NoDefault.no_default,normalize=_NoDefault.no_default,closed=_NoDefault.no_default,ambiguous='raise',dayfirst=False,yearfirst=False,dtype=None,copy=False,name=None)classpandas.PeriodIndex(data=None,ordinal=None,freq=None,dtype=None,copy=False,name=None,**fields)DatetimeIndex可以用于轉換數據,還可以用于創建時間序列數據,常用參數及其說明如下表。轉換字符串時間為標準時間函數名稱參數說明data接收類數組。表示用可選的類似日期時間的數據來構造索引。默認為Nonefreq接收str。表示一種pandas周期字符串或相應的對象。無默認值tz接收時區或str。表示設置數據的時區。默認為Nonedtype接收Numpy.dtype或DatetimeTZDtype或str。表示數據類型。默認為NonePeriodIndex可以用于轉換數據,還可以用于創建時間序列數據,常用參數及其說明如下表。當將數據格式轉換為PeriodIndex類型時,需要通過freq參數指定時間間隔,常用的時間間隔參數值有Y(年)、M(月)、D(日)、H(小時)、T(分鐘)、S(秒)。Period類用于表示時間上的一個區間或周期,如月份、季度、年份等的時間間隔,Period比Timestamp更適合用于表示一段時間的概念,而不僅僅是時間點。轉換字符串時間為標準時間函數名稱參數說明data接收類數組。表示用可選的類似周期的數據來構造索引。默認為Nonefreq接收str。表示一種pandas周期字符串或相應的對象。默認為Nonedtype接收str或PeriodDtype。表示數據類型。默認為None在多數涉及與時間相關的數據處理、統計分析的過程中,都需要提取時間中的年份、月份等數據。使用對應的Timestamp類屬性就能夠實現這一目的,其常用類屬性及說明如下表。提取時間序列數據信息屬性名稱屬性說明屬性名稱屬性說明year年week一年中第幾周month月quarter季節day日weekofyear一年中第幾周hour小時dayofyear一年中的第幾天minute分鐘dayofweek一周第幾天second秒weekday一周第幾天date日期is_leap_year是否閏年time時間

時間數據的算術運算在現實中隨處可見,例如,2020年1月1日減一天就是2019年12月31日。pandas的時間數據和現實生活中的時間數據一樣可以做運算。這時就涉及pandas的Timedelta類。Timedelta是時間相關類中的一個異類,不僅能夠使用正數,還能夠使用負數表示單位時間,如weeks=1、days=-2等。使用Timedelta類,配合常規的時間相關類能夠輕松實現時間的算術運算。加減時間數據在Timedelta類的時間周期中沒有年和月,所有周期名稱、對應單位及其說明如下表(注:表中單位采用程序定義的符號,與法定單位符號可能不一致)。加減時間數據周期名稱單位說明weeks無星期daysD天hoursh小時minutesm分secondss秒millisecondsms毫秒microsecondsus微秒nanosecondsns納秒1DataFrame的常用操作目錄讀/寫不同數據源的數據2轉換與處理時間序列數據3使用分組聚合進行組內計算4groupby()方法提供的是分組聚合步驟中的拆分功能,能夠根據索引或特征對數據進行分組,其基本使用格式如下。groupby()方法拆分數據DataFrame.groupby(by=None,axis=_NoDefault.no_default,level=None,as_index=True,sort=True,group_keys=True,observed=_NoDefault.no_default,dropna=True)groupby()方法的常用參數及其說明如下表。groupby()方法拆分數據函數名稱參數說明by接收list、str、mapping、function或generator。表示用于確定進行分組的依據,若傳入的是一個函數,則對索引進行計算并分組;若傳入的是一個字典或Series,則字典或Series的值用于作為分組依據;若傳入一個NumPy數組,則數據的元素作為分組依據;若傳入的是字符串或字符串列表,則使用這些字符串所代表的特征作為分組依據。默認為Noneaxis接收0或1。表示操作的軸向。默認為0level接收int或索引名。表示標簽所在級別。默認為Noneas_index接收bool。表示聚合后的聚合標簽是否以DataFrame索引形式輸出。默認為Truesort接收bool。表示是否對分組依據、分組標簽進行排序。默認為Truegroup_keys接收bool。表示是否顯示分組標簽的名稱。默認為True分組后的結果并不能直接查看,而是被存在內存中,輸出的是內存地址。實際上,分組后的數據對象groupby類似于Series與DataFrame,也是pandas提供的一種對象。groupby對象常用的描述性統計方法及說明如下表。groupby()方法拆分數據方法名稱方法說明方法名稱方法說明count返回各組的計數值,不包括缺失值cumcount對每個分組中的組員進行標記,0~n-1head返回每組的前n個值size返回每組的大小max返回每組最大值min返回每組最小值mean返回每組的均值std返回每組的標準差median返回每組的中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論