pandas是一個(gè)強(qiáng)大的分析結(jié)構(gòu)化數(shù)據(jù)的工具集;它的使用基礎(chǔ)是Numpy(提供高性能的矩陣運(yùn)算);用于數(shù)據(jù)挖掘和數(shù)據(jù)分析,同時(shí)也提供數(shù)據(jù)清洗功能。 Pandas中常見的數(shù)據(jù)結(jié)構(gòu)有兩種: Series | DataFrame |
---|
類似一維數(shù)組的對(duì)象 | 類似多維數(shù)組/表格數(shù)組,每列數(shù)據(jù)可以是不同的類型;索引包括行索引和列索引 |
Series 構(gòu)建Series:ser_obj = pd.Series(range(10)); 由索引和數(shù)據(jù)組成(索引在左<自動(dòng)創(chuàng)建的>,數(shù)據(jù)在右); 獲取數(shù)據(jù)和索引:ser_obj.index; ser_obj.values; 預(yù)覽數(shù)據(jù): ser_obj.head(n);ser_obj.tail(n) DateFrame 獲取列數(shù)據(jù):df_obj[col_idx]或df_obj.col_idx; 增加列數(shù)據(jù):df_obj[new_col_idx] = data; 刪除列:del df_obj[col_idx]; 按值排序:sort_values(by = “l(fā)abel_name”)
常用方法: Count | 非NA值得數(shù)量 |
---|
describe | 針對(duì)Series或各DataFrame列計(jì)算匯總統(tǒng)計(jì) | min/max | 計(jì)算最小值/最大值 | argmin/argmax | 計(jì)算能夠獲取到最小值/最大值的索引位置 | idxmin/idxmax | 計(jì)算能夠獲取到最小值/最大值的索引值 | quantile | 計(jì)算樣本的分位數(shù)(0-1) | sum | 值的總和 | mean | 值的平均數(shù) | median | 值的算術(shù)中位數(shù)(50%分位數(shù)) | mad | 根據(jù)平均值計(jì)算平均絕對(duì)離差 | var | 樣本值的方差 | std | 樣本值的標(biāo)準(zhǔn)差 | skew | 樣本值的偏度(三階距) | kurt | 樣本值的峰度(四階距) | cumsum | 樣本值的累計(jì)和 | cummin/cummax | 樣本值的累計(jì)最小值和累計(jì)最大值 | diff | 計(jì)算一階差分(對(duì)時(shí)間序列很有用) | pct_change | 計(jì)算百分?jǐn)?shù)變化 |
讀寫不同數(shù)據(jù)源的數(shù)據(jù)1.數(shù)據(jù)庫數(shù)據(jù)讀取pandas提供了讀取與存儲(chǔ)關(guān)系型數(shù)據(jù)庫數(shù)據(jù)的函數(shù)與方法。除了pandas庫外,還需要使用SQLAIchemy庫建立對(duì)應(yīng)的數(shù)據(jù)庫連接。SQLAIchemy配合相應(yīng)數(shù)據(jù)庫的Python連接工具(例如MySQL數(shù)據(jù)庫需要安裝mysqlclient或者pymysql庫),使用create_engine函數(shù),建立一個(gè)數(shù)據(jù)庫連接。 creat_engine 中填入的是一個(gè)連接字符串。在使用Python的SQLAlchemy時(shí),MySQL和Oracle數(shù)據(jù)庫連接字符串的格式如下: 數(shù)據(jù)庫產(chǎn)品名+連接工具名: //用戶名:密碼 @ 數(shù)據(jù)庫IP地址:數(shù)據(jù)庫端口號(hào)/數(shù)據(jù)庫名稱? charset = 數(shù)據(jù)庫數(shù)據(jù)編碼 read_sql_table只能夠讀取數(shù)據(jù)庫的某一個(gè)表格,不能實(shí)現(xiàn)查詢的操作。 pandas.read_sql_table(table_name, con, schema=None, index_col=None,coerce_float=True, columns=None) read_sql_query則只能實(shí)現(xiàn)查詢操作,不能直接讀取數(shù)據(jù)庫中的某個(gè)表。 pandas.read_sql_query(sql, con, index_col=None, coerce_float=True) read_sql是兩者的綜合,既能夠讀取數(shù)據(jù)庫中的某一個(gè)表,也能夠?qū)崿F(xiàn)查詢操作。 pandas.read_sql(sql, con, index_col=None, coerce_float=True, columns=None)
pandas三個(gè)數(shù)據(jù)庫數(shù)據(jù)讀取函數(shù)的參數(shù)幾乎完全一致,唯一的區(qū)別在于傳入的是語句還是表名。 2.數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)只有一個(gè)to_sql方法。 DataFrame.to_sql(name, con, schema=None, if_exists='fail’, index=True, index_label=None, dtype=None) 3.讀寫文本文件(1)文本文件讀取 文本文件是一種由若干行字符構(gòu)成的計(jì)算機(jī)文件,它是一種典型的順序文件。 csv是一種逗號(hào)分隔的文件格式,因?yàn)槠浞指舴灰欢ㄊ嵌禾?hào),又稱為字符分隔文件,文件以純文本形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本) 使用read_table來讀取文本文件 pandas.read_table(filepath_or_buffer, sep=’\t ', header='infer’, names=None, index_col=None, dtype=None, engine=None, nrows=None) 使用read_csv函數(shù)來讀取csv文件。 pandas.read_csv(filepath_or_buffer, sep=’\t ', header='infer ', names=None, index_col=None,dtype=None, engine=None, nrows=None)
read_table和read_csv常用參數(shù)及其說明。 read_table和read_csv函數(shù)中的sep參數(shù)是指定文本的分隔符的,如果分隔符指定錯(cuò)誤,在讀取數(shù)據(jù)的時(shí)候,每一行數(shù)據(jù)將連成一片。 header參數(shù)是用來指定列名的,如果是None則會(huì)添加一個(gè)默認(rèn)的列名。 encoding代表文件的編碼格式,常用的編碼有utf-8、utf-16、gbk、gb2312、gb18030等。如果編碼指定錯(cuò)誤,數(shù)據(jù)將無法讀取,IPython解釋器會(huì)報(bào)解析錯(cuò)誤。 4.文本文件存儲(chǔ)文本文件的存儲(chǔ)和讀取類似,結(jié)構(gòu)化數(shù)據(jù)可以通過pandas中的csv文件格式存儲(chǔ)。 DataFrame.to_csv(path_or_buf=None, sep=’,’,na_rep=’’, columns=None, header=True) 5.Excel文件讀取pandas提供了read_excel函數(shù)來讀取“xls” "xlsx"兩種Excel文件。 pandas.read_excel(io, header=0, sheetname=0, index_col=None, names=None, dtype=None) 6.Excel文件存儲(chǔ)將文件存儲(chǔ)為Excel文件,可以使用to_excel。 DataFrame.to_excel(excel_writer=None, sheetname=None, na_rep=’’,header=True, index=True, index_label=None, mode='w’, encoding=None) to_csv方法的常用參數(shù)基本一致,區(qū)別之處在于指定存儲(chǔ)文件的文件路徑參數(shù)名稱為excel_writer,并且沒有sep參數(shù),增加了一個(gè)sheetnames參數(shù)用來指定存儲(chǔ)的Excel sheet的名稱,默認(rèn)為sheet1。 DataFrame的常用操作基礎(chǔ)屬性函數(shù) | 返回值 |
---|
values | 元素 | index | 索引 | columns | 列名 | dtypes | 類型 | size | 元素個(gè)數(shù) | ndim | 維度數(shù) | shape | 數(shù)據(jù)形狀(行列數(shù)目) |
增刪改查DataFrame數(shù)據(jù)1. 查看訪問DataFrame中的數(shù)據(jù)——數(shù)據(jù)基本查看方式對(duì)單列數(shù)據(jù)的訪問:DataFrame的單列數(shù)據(jù)為一個(gè)Series。根據(jù)DataFrame的定義可以知曉DataFrame是一個(gè)帶有標(biāo)簽的二維數(shù)組,每個(gè)標(biāo)簽相當(dāng)于每一列的列名。有以下兩種方式來實(shí)現(xiàn)對(duì)單列數(shù)據(jù)的訪問: (1)以字典訪問某一個(gè)key的值的方式使用對(duì)應(yīng)的列名,實(shí)現(xiàn)單列數(shù)據(jù)的訪問。 (2)以屬性的方式訪問,實(shí)現(xiàn)單列數(shù)據(jù)的訪問。(不建議使用,易引起混淆) 對(duì)某幾行訪問: df[1:4], head(n), tail(n) loc和iloc方法loc方法是針對(duì)DataFrame索引名稱的切片方法,如果傳入的部署索引名稱,那么切片操作將無法執(zhí)行。利用loc方法,能夠?qū)崿F(xiàn)所有單層索引切片操作。 df.loc[行索引名稱或條件,列索引名稱] df.iloc[行索引位置,列索引位置] iloc和loc區(qū)別是iloc接收的必須是行索引和列索引的位置。 使用loc和iloc實(shí)現(xiàn)多列切片,其原理的通俗解釋就是將多列的列名或者位置作為一個(gè)列表或者數(shù)據(jù)傳入。 使用loc、iloc方法可以取出DataFrame中的任意數(shù)據(jù)。 loc使用傳入的行索引名稱如果是一個(gè)區(qū)間,前后均為閉區(qū)間;iloc為前閉后開區(qū)間。 loc內(nèi)部還可以傳入表達(dá)式,結(jié)果會(huì)返回滿足表達(dá)式的所有值。 具體例子可見這篇博文https://blog.csdn.net/ITmincherry/article/details/109577480 若使用detail.iloc[detail['order_id’]=='458’,[1,5]]讀取數(shù)據(jù),會(huì)報(bào)錯(cuò),原因在于此處條件返回的是一個(gè)布爾值Series,而iloc可以接收的數(shù)據(jù)類型不包括Series。根據(jù)Series的構(gòu)成只要取出該Series的values就可以了。需改為detail.iloc[(detail['order_id’]=='458’.values[1,5]]) loc更加靈活多變,代碼的可讀性更高,iloc的代碼簡(jiǎn)潔,但可讀性不高。具體用哪個(gè)視情況而定,大多數(shù)時(shí)候建議使用loc方法。 切片方法之ixix方法像是loc和iloc兩種切片方法的融合,ix使用時(shí)既可以接收索引名稱也可以接收索引位置。 df.ix[行索引的名稱或位置或條件,列索引名稱或位置] 使用ix方法有幾個(gè)注意事項(xiàng): 當(dāng)索引名稱和位置存在部分重疊時(shí),ix默認(rèn)優(yōu)先識(shí)別名稱; 使用ix參數(shù)時(shí),盡量保持行索引名稱和行索引位置重疊,使用時(shí)就無須考慮取值時(shí)區(qū)間的問題,一律為閉區(qū)間。 使用列索引名稱,而非列索引位置,主要用來保證代碼可讀性。 使用列索引位置時(shí),需要注解,同樣保證代碼可讀性。 ix還有一個(gè)缺點(diǎn),就是在面對(duì)數(shù)據(jù)量巨大的任務(wù)的時(shí)候,其效率會(huì)低于loc和iloc方法,所以在日常的數(shù)據(jù)分析工作中建議使用loc和iloc方法來執(zhí)行切片操作。
2.更新修改數(shù)據(jù)數(shù)據(jù)修改直接針對(duì)DataFrame原數(shù)據(jù)更改,操作無法撤銷,如果作出更改,需要對(duì)更改條件做確認(rèn)或?qū)?shù)據(jù)進(jìn)行備份。 3.增加數(shù)據(jù)新建一個(gè)列索引,對(duì)該索引下的數(shù)據(jù)賦值操作即可。 新增的一列值是相同的則直接賦值一個(gè)常量即可。 4.刪除某列或某行數(shù)據(jù)drop(labels, axis=0, level=None, inplace=False, errors='raise’) axis為0時(shí)表示刪除行,axis為1表示刪除列。 常用參數(shù)如下: 描述分析DataFrame數(shù)據(jù)數(shù)值型特征的描述性統(tǒng)計(jì)1、Numpy中的描述性統(tǒng)計(jì)函數(shù) 數(shù)值型數(shù)據(jù)的描述性統(tǒng)計(jì)主要包括了計(jì)算數(shù)值型數(shù)據(jù)的完整情況、最小值、均值、中位數(shù)、最大值、四分位數(shù)、極差、標(biāo)準(zhǔn)差、方差、協(xié)方差和變異系數(shù)等。一些常用的統(tǒng)計(jì)學(xué)函數(shù)如下表所示。 2、pandas描述性統(tǒng)計(jì)方法 pandas庫基于numpy,也可以用上面那些函數(shù)對(duì)數(shù)據(jù)框進(jìn)行描述性統(tǒng)計(jì)。 pandas還提供了更加便利的方法來計(jì)算均值,如detail['amounts’].mean() pandas還提供一個(gè)方法叫做describe,能夠一次性得出數(shù)據(jù)框所有數(shù)值型特征的非空值數(shù)目、均值、四分位數(shù)、標(biāo)準(zhǔn)差。 2.類別型特征的描述性統(tǒng)計(jì)描述類別型特征的分布狀況,可以使用頻數(shù)統(tǒng)計(jì)表。pandas庫中實(shí)現(xiàn)頻數(shù)統(tǒng)計(jì)的方法為value_counts。 pandas提供了categories類,可以使用astype方法將目標(biāo)特征的數(shù)據(jù)類型轉(zhuǎn)換為category類別。 describe方法除了支持傳統(tǒng)數(shù)值型以外,還能夠支持對(duì)category類型的數(shù)據(jù)進(jìn)行描述性統(tǒng)計(jì),四個(gè)統(tǒng)計(jì)量分別為列非空元素的數(shù)目、類別的數(shù)目、數(shù)目最多的類別、數(shù)目最多類別的數(shù)目。 轉(zhuǎn)換與處理時(shí)間序列數(shù)據(jù)轉(zhuǎn)換字符串時(shí)間為標(biāo)準(zhǔn)時(shí)間1、pandas時(shí)間相關(guān)的類 在多數(shù)情況下,對(duì)時(shí)間類型數(shù)據(jù)進(jìn)行分析的前提是將原本為字符串的時(shí)間轉(zhuǎn)換為標(biāo)準(zhǔn)時(shí)間類型。pandas繼承了Numpy庫和datatime庫的時(shí)間相關(guān)模塊,提供了6種時(shí)間相關(guān)的類。 類名稱 | 說明 |
---|
Timestamp | 最基礎(chǔ)的時(shí)間類,表示某個(gè)時(shí)間點(diǎn)。在絕大多數(shù)的場(chǎng)景中的時(shí)間數(shù)據(jù)都是Timestamp形式的時(shí)間 | Period | 表示單個(gè)時(shí)間跨度,或者某個(gè)時(shí)間段,例如某一天、某一小時(shí)等 | Timedelta | 表示不同單位的時(shí)間,例如1天、1.5小時(shí) | DatetimeIndex | 一組Timestamp構(gòu)成的index,可以用來作為Series或DataFrame的索引 | PeriodtimeIndex | 一組period構(gòu)成的index,可以用來作為Series或者DataFrame的索引 | TimedeltaIndex | 一組Timedelta構(gòu)成的index,可以用來作為Series或者DataFrame的索引。 |
其中Timestamp作為時(shí)間類中最基礎(chǔ)的,也是最為常用的。在多數(shù)情況下,時(shí)間相關(guān)的字符串都會(huì)轉(zhuǎn)換成為Timestamp,pandas提供了to_datetime函數(shù),能夠?qū)崿F(xiàn)這一目標(biāo)。值得注意的是,Timestamp類型時(shí)間是有限制的。 除了將數(shù)據(jù)自原始DataFrame中直接轉(zhuǎn)換為Timestamp格式外,還可以將數(shù)據(jù)單獨(dú)提取出來將其轉(zhuǎn)換為DatatimeIndex或者PeriodIndex。 轉(zhuǎn)換為PeriodIndex的時(shí)候需要注意,需要通過freq參數(shù)指定時(shí)間間隔,常用的時(shí)間間隔有Y為年,M為月,D為日,H為小時(shí),T為分鐘,S為秒。兩個(gè)函數(shù)可以用來轉(zhuǎn)換數(shù)據(jù)還可以用來創(chuàng)建時(shí)間序列數(shù)據(jù),其參數(shù)非常類似。 Datetimelndex和PeriodIndex兩者區(qū)別在日常使用的過程中相對(duì)較小,其中 Datetimelndex是用來指代一系列時(shí)間點(diǎn)的一種數(shù)據(jù)結(jié)構(gòu),而 PeriodIlndex則是用來指代一系列時(shí)間段的數(shù)據(jù)結(jié)構(gòu)。 提取時(shí)間序列數(shù)據(jù)信息在多數(shù)涉及時(shí)間相關(guān)的數(shù)據(jù)處理,統(tǒng)計(jì)分析的過程中,需要提取時(shí)間中的年份,月份等數(shù)據(jù)。使用對(duì)應(yīng)的Timestamp類屬性就能夠?qū)崿F(xiàn)這一目的。 結(jié)合Python列表推導(dǎo)式,可以實(shí)現(xiàn)對(duì)DataFrame某一列時(shí)間信息數(shù)據(jù)的提取。 在DatetimeIndex和PeriodIndex中提取對(duì)應(yīng)信息可以以類屬性方式實(shí)現(xiàn)。 值得注意的是PeriodIndex相比于DatetimeIndex少了weekday_name屬性,所以不能用該屬性提取星期名稱數(shù)據(jù)。若要提取信息名稱可以通過提取weekday屬性,而后將0-6四個(gè)標(biāo)簽分別賦值為Monday至Sunday。 Timedelta是時(shí)間相關(guān)的類中的一個(gè)異類,不僅能夠使用正數(shù),還能夠使用負(fù)數(shù)表示單位時(shí)間。例如1秒等。Timedelta函數(shù)中時(shí)間周期中沒有年和月,所有周期名稱,對(duì)應(yīng)單位和說明如下表所示: 使用Timedelta,可以很輕松地實(shí)現(xiàn)在某個(gè)時(shí)間上加減一段時(shí)間。 除了使用Timedelta實(shí)現(xiàn)時(shí)間的平移外,還能夠直接對(duì)兩個(gè)時(shí)間序列進(jìn)行相減,從而得出一個(gè)Timedelta. 使用分組聚合進(jìn)行組內(nèi)計(jì)算使用groupby方法拆分?jǐn)?shù)據(jù)該方法提供的是分組聚合步驟中的拆分功能,能根據(jù)索引或字段對(duì)數(shù)據(jù)進(jìn)行分組。其常用參數(shù)與使用格式如下,df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs) 如果傳入的是一個(gè)函數(shù)則對(duì)索引進(jìn)行計(jì)算并分組; 如果傳入的是一個(gè)字典或者Series,則字典或者Series的值用來做分組依據(jù); 如果傳入一個(gè)Numpy數(shù)組則數(shù)據(jù)的元素作為分組依據(jù); 如果傳入的是字符串或者字符串列表則使用這些字符串所代表的字段作為分組依據(jù)。 用groupby方法分組后的結(jié)果并不能直接查看,而是被存在內(nèi)存中,輸出的是內(nèi)存地址。實(shí)際上分組后的數(shù)據(jù)對(duì)象groupby類似Series與DataFrame,是pandas提供的一種對(duì)象。 使用agg方法聚合數(shù)據(jù)agg和aggregate方法都支持對(duì)每個(gè)分組應(yīng)用某函數(shù),包括Python內(nèi)置函數(shù)或自定義函數(shù)。同時(shí)這兩個(gè)方法也能夠直接對(duì)DataFrame進(jìn)行函數(shù)應(yīng)用操作。 在正常使用過程中,agg函數(shù)和aggregate函數(shù)對(duì)DataFrame對(duì)象操作時(shí)功能幾乎完全相同,因此只需要掌握其中一個(gè)函數(shù)即可。 df.agg(func, axis=0, *args, **kwargs) df.aggregate(func, axis=0, *args, **kwargs) agg方法求統(tǒng)計(jì)量使用agg一次求出當(dāng)前數(shù)據(jù)中所有菜品銷量和售價(jià)的總和與均值,如detail[['counts’,'amounts’]].agg([np.sum,np.mean])) 對(duì)某個(gè)字段只做求均值操作,對(duì)另一個(gè)字段只做求和操作,可以使用字典,如detail.agg({'counts’:np.sum,'amounts’:np.mean}) 有時(shí)要求出某個(gè)字段的多個(gè)統(tǒng)計(jì)量,某些字段只需要求一個(gè)統(tǒng)計(jì)量,此時(shí)只需要將字典對(duì)應(yīng)key的value變?yōu)榱斜?,列表元素為多個(gè)目標(biāo)的統(tǒng)計(jì)量即可。如detail.agg({'counts’:np.sum,'amounts’:[np.mean,np.sum]})
agg方法與自定義函數(shù)agg方法可傳入自定義函數(shù),需要注意的是numpy庫中的函數(shù),np.mean,np.median,np.prod,np.std,np.var能夠在agg中直接使用,但是在自定義函數(shù)中使用numpy庫中的這些函數(shù),如果計(jì)算的時(shí)候是單個(gè)序列則會(huì)無法得出想要的結(jié)果,如果是多列數(shù)據(jù)同時(shí)計(jì)算則不會(huì)出現(xiàn)這種問題。 使用agg可以實(shí)現(xiàn)對(duì)每一個(gè)字段每一組使用相同的函數(shù),如果需要對(duì)不同的字段應(yīng)用不同的函數(shù),則可以和DataFrame中使用agg方法相同。 使用apply方法聚合數(shù)據(jù)apply類似agg能夠?qū)⒑瘮?shù)應(yīng)用于每一列,不同之處在于apply相比agg傳入的函數(shù)只能夠作用于整個(gè)DataFrame或者Series,而無法像agg一樣能夠?qū)Σ煌侄?,?yīng)用不同函數(shù)獲取不同結(jié)果。 使用apply對(duì)groupby對(duì)象進(jìn)行聚合操作其方法和agg方法也相同,只是使用agg方法能夠?qū)崿F(xiàn)對(duì)不同字段進(jìn)行應(yīng)用不同的函數(shù),而apply不行。 使用transform聚合數(shù)據(jù)transform能夠?qū)φ麄€(gè)DataFrame的所有元素進(jìn)行操作,且transform只有一個(gè)參數(shù)func,表示對(duì)DataFrame操作的函數(shù)。 transform還能對(duì)DataFrame分組后的對(duì)象groupby進(jìn)行操作,可以實(shí)現(xiàn)組內(nèi)離差標(biāo)準(zhǔn)化等操作。 若在計(jì)算離差標(biāo)準(zhǔn)化的時(shí)候結(jié)果中有NaN,這是由于根據(jù)離差標(biāo)準(zhǔn)化公式,最大值和最小值相同的情況下分母是0. 創(chuàng)建透視表與交叉表使用povit_table創(chuàng)建透視表pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean’, fill_value=None, margins=False, dropna=True, margins_name='All’) 在不特殊指定聚合函數(shù)aggfunc時(shí),會(huì)默認(rèn)使用numpy.mean進(jìn)行聚合運(yùn)算,numpy.mean會(huì)自動(dòng)過濾掉非數(shù)值類型數(shù)據(jù)??梢酝ㄟ^指定aggfunc參數(shù)修改聚合函數(shù)。 和groupby分組的時(shí)候相同,pivot_table函數(shù)在創(chuàng)建透視表的時(shí)候分組鍵index可以有多個(gè)。 通過設(shè)置columns參數(shù)可以指定列分組。 當(dāng)全部數(shù)據(jù)列數(shù)很多時(shí),若只想要顯示某列,可以通過指定values參數(shù)來實(shí)現(xiàn)。 當(dāng)某些數(shù)據(jù)不存在時(shí),會(huì)自動(dòng)填充NaN,因此可以指定fill_value參數(shù),表示當(dāng)存在缺失值時(shí),以指定數(shù)值進(jìn)行填充。 可以更改margins參數(shù),查看匯總數(shù)據(jù)。 使用crosstab創(chuàng)建交叉表交叉表是一種特殊的透視表,主要用于計(jì)算分組頻率。利用pandas提供的crosstab函數(shù)可以制作交叉表。 由于交叉表是透視表的一種,其參數(shù)基本保持一致,不同之處在于crosstab函數(shù)中的Index,columns,values填入的都是對(duì)應(yīng)的從DataFrame中取出的某一列。 pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, dropna=True, normalize=False) crosstab常用參數(shù)及其說明:
|