日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python模块之Pandas模块学习笔记

發(fā)布時間:2024/1/8 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python模块之Pandas模块学习笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

一、模塊的安裝

二、數(shù)據(jù)結(jié)構(gòu)

1. DataFrame的創(chuàng)建

2. DataFrame索引的修改

3. DataFrame數(shù)據(jù)信息查看

三、文件的讀取和寫入

1. 讀取

2. 寫入

四、 數(shù)據(jù)的選取和處理

1. 數(shù)據(jù)的選取

2. 數(shù)據(jù)的處理

3. 數(shù)據(jù)的拼接(增加行、列)

4. 數(shù)據(jù)的統(tǒng)計分析

5. 數(shù)據(jù)的匯總? ?


一、模塊的安裝

1. 安裝pandas
pip instal pandas
2. 安裝openpyxl
pip instal openpyxl

二、數(shù)據(jù)結(jié)構(gòu)

pandas模塊更擅長處理二維數(shù)據(jù),主要有series和dataframe兩種數(shù)據(jù)結(jié)構(gòu)。
series創(chuàng)建一維數(shù)組,不僅包含數(shù)值,還包含一組索引。
dataframe通過列表、字典或二維數(shù)組創(chuàng)建,包含行索引和列索引。

?在此主要記錄DataFrame的使用,包括:
- 創(chuàng)建
- 修改索引?
- DataFrame數(shù)據(jù)信息的查看

1. DataFrame的創(chuàng)建

- 通過二維列表創(chuàng)建
- 通過字典創(chuàng)建
- 通過NumPy模塊創(chuàng)建的二維數(shù)組創(chuàng)建DataFrame

(1)創(chuàng)建空列表

????????df=df.DataFrame()

(2) 通過列表創(chuàng)建

????????a=pd.DataFrame([[1,2], [3,4]]) ?# 用二維列表創(chuàng)建2行2列的二維數(shù)組

????????還可以在創(chuàng)建時自定義行索引和列索引。

? ? ? ? a=pd.DataFrame([[1,2], [3,4]],columns=['data','score'],index=['a','b']) ?# columns指定列索引,index指定行索引。

(3)通過字典創(chuàng)建

????????a=pd.DataFrame({'a': [1,3,5],'b': [2,4,6]}, index=['x', 'y', 'z']) ?# 創(chuàng)建a,b列,xyz行的二維數(shù)組。如果想以字典的鍵名作為行索引,可以用from_dict()函數(shù)將字典轉(zhuǎn)換成DataFrame,同時設(shè)置參數(shù)orient的值為‘index’。

????????c=pd.DataFrame.from_dict({'a': [1,3,5],'b': [2,4,6]}, orient='index')

(4)通過NumPy模塊創(chuàng)建的二維數(shù)組創(chuàng)建DataFrame

????????a = np.arange(12).reshape(3, 4)

????????b = pd.DataFrame(a, index=[1,2,3], columns=['a', 'b', 'c', 'd'])??

2. DataFrame索引的修改

(1)a.index.name="Com"

(2)重命名索引rename()

????????rename()函數(shù)會用新索引創(chuàng)建一個新的DataFrame,不會改變原值。通過設(shè)置參數(shù)inplace為True來修改原值。

????????a.rename(index={'a':'萬科', 'b':'阿里', 'c':'百度'}, inplace=True) ?#更改行索引名稱? ?

????????a.rename(columns={'1':'分?jǐn)?shù)', '2':'排名'}, inplace=True) ?#更改列索引名稱

(3)行索引轉(zhuǎn)換為常規(guī)列

????????a=a.reset_index() ?# 設(shè)置參數(shù)inplace=True,可以一步到位的修改

(4)重新調(diào)整列順序

? ? ? ? df=df.reindex(columns=new_col_name)

(5)設(shè)置索引列

????????a=a.set_index['id',inplace=True] #將id列設(shè)為索引列

3. DataFrame數(shù)據(jù)信息查看

(1)df.shape ?#維度查看

(2)df.info() ?#數(shù)據(jù)表基本信息(維度、列名稱、數(shù)據(jù)格式、所占空間等)

(3)df.dtypes ?#每一列數(shù)據(jù)的格式

? ? ? ? df['A1'].dtype ?#某一列數(shù)據(jù)的格式

(4)df.isnull() ?#查看所有列是否為空值

? ? ? ? df['A1'].isnull() ?#查看某一列是否為空值

(5)df['A1'].unique ?#查看某一列的唯一值

(6)df.values ?#查看數(shù)據(jù)表的值

? ? ? ? 注:帶.values輸出的是np數(shù)組。不帶.values則輸出的是DataFrame類型**

(7)df.columns ?#查看列名稱

? ? ? ? df.columns.values ?#查看列名稱,并輸出值(輸出的是一個np數(shù)組)。

(8)df.index ?#查看行索引名稱

? ? ? ? df.index.values ?#查看列名稱,并輸出值(輸出的是一個np數(shù)組)。當(dāng)進行循環(huán)遍歷時,兩者一樣。

(9)df.head() ?#默認(rèn)輸出前5行
????????df.tail() ?#默認(rèn)輸出后5行

(10)print(data.describe()) ?#描述性統(tǒng)計

三、文件的讀取和寫入

1. 讀取

? ? ? ? data=pd.read_excel('data.xlsx') ?# 需要安裝openpyxl模塊?? ??? ??????????

df = pd.read_excel(r"/Users/andy/Downloads/books.xlsx", skiprows=3, usecols="C:F", index_col=None, sheet_name = 0, dtype = {"ID":str, "InStore":str)#文件的路徑使用"r", 主要是為了避免路徑出錯#skiprows表示忽略前面XX行. 例如上面的例子, 讀取的時候直接忽略了前面3行#usecols 表示讀取哪幾列, 可以使用列表的方式表示要導(dǎo)入哪幾列, 例如usecols = [0,2]#sheet_name 用于指定讀取哪個工作表#index_col表示使用哪一列作為索引#header=0, 可以使用header表示使用哪一行作為列索引#dtype使用字典, 更改對應(yīng)的Series的數(shù)據(jù)類型. 一般轉(zhuǎn)化成str, 便于后期的運算或修改df = pd.read_excel("/Users/andy/Downloads/books.xlsx", skiprows=3, usecols="C:F", index_col=None, sheet_name = 0, dtype = {"ID":str, "InStore":str})for i in df.index:df["ID"].at[i] = 1 + idf["InStore"].at[i] = "YES" if i % 2 == 0 else "NO"df["ID"] = df["ID"].astype("str").str.zfill(3)#在上面的例子中, ID這一列我使用了zfill()這個方法, 它會自動的讓字符前面自動添加0. 這里要注意的是, 只能為字符串添加zfill(), 所以我這里進行了數(shù)據(jù)類型的轉(zhuǎn)化. #讀取文件的時候, 使用了dtype參數(shù), 主要是為了將對應(yīng)的列轉(zhuǎn)化為字符串, 便于我們進行填充排序 #skiprows表示忽略哪幾行, usecols表示要導(dǎo)入哪些列, 可以使用列表的方式導(dǎo)入指定的列, 例如usecols = [0,3], 也可以按上面的方法

?????????data=pd.read_csv('data.csv', delimiter=',', encoding='utf-8')

? ? ? ? ?#delimiter指定csv文件的數(shù)據(jù)分隔符;encoding指定文件的編碼方式;index_col用于設(shè)置索引。

? ? ? ? ?#注意:讀取excle時不能指定編碼encoding,讀取csv文件時可以指定?? ?

2. 寫入

????????data.to_excel('data.xlsx', sheet_name=0, columns=['A列'], index=False)

? ? ? ? sheet_name指定工作表的名成; index指定是否寫入行索引信息;columns指定要寫入的列;encoding指定編碼方式。

四、 數(shù)據(jù)的選取和處理

1. 數(shù)據(jù)的選取

**使用切片操作時,遵循左閉右開規(guī)則。先行后列,中間用逗號(,)分隔。**

(1)按行選取

data.iloc[1:3] data.loc[['r2', 'r3']] ?# 根據(jù)行的名稱來選取。列表中嵌套一個行列表。 data.head() ?# 用head函數(shù)選取前幾行

(2)按區(qū)塊選取

a=data.iloc[0:2][['r1','r3' ]] a=data.iloc[0:2, [0,2]] ?# 讀取0-1行,0和2列。loc方法使用字符串作為索引,iloc方法使用數(shù)字作為索引; a=data.iloc[0:44, 0:5] ?# 讀取0-44行,0-5列。第0行0列為索引行和索引列 a=data.iloc[0:5, 11:12] ?# 讀取第0-5行,第12列(索引號為11)。 a=data.iloc[[0,2],[0,2]] ?#按位置單獨提取數(shù)據(jù)

????????讀取指定不連續(xù)的多行多列,需要在列表中嵌套列表

(3)使用ix按索引標(biāo)簽和位置混合提取數(shù)據(jù)

????????df_inner.ix[:'2018-01-03',:4] ?# 將日期設(shè)為行索引,提取2018/1/3以前,前4列的數(shù)據(jù)

2. 數(shù)據(jù)的處理

(1)數(shù)據(jù)的篩選提取

a = data[data['c1']>1] ? # c1列大于1的行。多個篩選條件,用”&“(表示’且‘)或”|“(表示’或‘)連接。 data[data['c1'].str[-1].values=='年']|data['c1'].str[-1]=='月'] ? #按照c1列字符串最后一個字是年或月篩選 df.loc[(df['age']>20)&(df_inner['city']=='beijing'),['id','gender']] ?#行篩選,提取id、gender列 df.iloc[:5].iloc[df['c1']==2] #篩選前5行中c1列=2的行。

(2)數(shù)據(jù)的排序? ?

? ? ?-按值排序
? ? ?a=data.sort_values(by='c2', ascending=False) ?# by指定按哪一列排序;ascending(“上升”的意思)默認(rèn)為True,升序;False表示降序

? ? ?-按索引排序
? ? ?a=a.sort_index() ?# 按索引列排序
? ? ?data.sort_index(axis=0,ascending=False) ?#降序排列行索引
? ? ?data.sort_index(axis=1,ascending=False) ?#降序排列列索引

(3)數(shù)據(jù)的運算

? ? ?通過數(shù)據(jù)運算可以基于已有的列生成新的一列
? ? ?data['c4']=data['c3']-data['c1']
? ? ?df.loc[(df_inner['city']=='beijing')].city.count() ?#對篩選后的數(shù)據(jù)按city列進行計數(shù)
? ? ?df[(df['city']=='beijing')].price.sum() ?#對篩選后的結(jié)果按price進行求和

?(4)數(shù)據(jù)的判斷

? ? ?df['city'].isin(['beijing']) ?#判斷city列是否包含beijing
? ? ?df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])] ?#判斷city列里是否包含beijing和shanghai,然后將符合條件的數(shù)據(jù)提取出來

?(5)轉(zhuǎn)置

????????df.T ? ?

?(6)數(shù)據(jù)的修改、替換和填加 ? ??

? ? ?-數(shù)據(jù)的修改
? ? ?scores["ID"][1] ="1006" ?#數(shù)據(jù)的修改
? ? ?df.ix[['ID']=='shanghai', 'Scores']='90' ?#數(shù)據(jù)的修改。先選取,后賦值。

? ???-數(shù)據(jù)的替換
? ? ?df['city'].replace('shagnhai','sh') ?#數(shù)據(jù)替換

? ? ?-數(shù)據(jù)的添加
? ? ?scores["df1"]= scores["Scores"]//10 ?#添加一列df1,數(shù)據(jù)為Scores列除以10的商整數(shù)
? ? ?scores["df2"]= scores["Scores"]>85 ?#添加一列df2,數(shù)據(jù)為True或False
? ? ?df['group']=np.where(df_inner['price']>3000,'high','low') ?#添加一列,根據(jù)‘price’列的值來填
? ? ?注:增加行列還可以使用數(shù)據(jù)的拼接函數(shù)。插入列見下方數(shù)據(jù)的拼接。

?(7)數(shù)據(jù)的刪除

? ? ?pop()和drop()函數(shù)可以刪除DataFrame中的指定數(shù)據(jù)。

? ? ?data.pop('b3')

? ? ?drop([],axis=0,inplace) ?#axis=0指定刪除行,axis=1指定刪除列;index指定要刪除的行;columns指定要刪除的列;inplace默認(rèn)為False,表示刪除操作不改變原DataFrame。

? ? ?df.drop([0,1,3,6]) ?#刪除指定行,第1,2,4,7行的數(shù)據(jù)

? ? ?df.drop(['A1','D1'], axis=1) #刪除指定列。

? ? ?不論是刪除行還是刪除列,都可以通過drop方法實現(xiàn),只需要設(shè)定好刪除的軸即可,即調(diào)整drop方法中的axis參數(shù)。默認(rèn)該參數(shù)為0,表示刪除行。如果需要刪除列變量,則需設(shè)置為1。

??????drop_duplicate():去除重復(fù)項。

# 語法格式 DataFrame.drop_duplicates(subset=None, keep='first', inplace=False) #subset : column label or sequence of labels, optional #用來指定特定的列,默認(rèn)所有列 #keep : {‘first’, ‘last’, False}, default ‘first’ #刪除重復(fù)項并保留第一次出現(xiàn)的項 #inplace : boolean, default False 是直接在原來數(shù)據(jù)上修改還是保留一個副本data.drop_duplicates(subset='Num',keep='first',inplace=True) newdf=data.drop_duplicates()

? ? ?del df ?#刪除整個df數(shù)據(jù)

(8)數(shù)據(jù)缺失值的處理

? ? ?對于缺失值的存在可能會影響到后期的數(shù)據(jù)分析或挖掘工作,那么我們該如何處理這些缺失值呢?常用的有三大類方法,即刪除法、填補法和插值法。

? ? ?刪除法:當(dāng)數(shù)據(jù)中的某個變量大部分值都是缺失值,可以考慮刪除改變量;當(dāng)缺失值是隨機分布的,且缺失的數(shù)量并不是很多是,也可以刪除這些缺失的觀測。
? ? ?替補法:對于連續(xù)型變量,如果變量的分布近似或就是正態(tài)分布的話,可以用均值替代那些缺失值;如果變量是有偏的,可以使用中位數(shù)來代替那些缺失值;對于離散型變量,我們一般用眾數(shù)去替換那些存在缺失的觀測。
? ? ?插補法:插補法是基于蒙特卡洛模擬法,結(jié)合線性模型、廣義線性模型、決策樹等方法計算出來的預(yù)測值替換缺失值。

?????-刪除法
? ? ?df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False) ?#刪除缺失值
? ? ?how : {'any', 'all'}
? ? ?any : if any NA values are present, drop that label
? ? ?all : if all values are NA, drop that label
? ? ?df['A1'].drop_duplicates() ?#刪除后出現(xiàn)的重復(fù)值
? ? ?df['A1'].drop_duplicates(keep='last') ?#刪除先出現(xiàn)的重復(fù)值,保留后出現(xiàn)的
? ? ?通過del命令實現(xiàn),該命令可以刪除Python的所有對象。

? ? ?-替補法
? ? ?df.fillna() ?#填充空值?
? ? ?df.fillna(values=0) ?#用數(shù)字0填充空值
? ? ?df['A'].fillna(df['A1'].mean()) ?#用A1列的均值填充空值
? ? ?采用前項填充或后項填充
? ? ?df.fillna(method='ffill') ?#采用前項填充
? ? ?df.fillna(method='bfill') ?#采用后項填充

(9)df['A1'].map(str.strip) ?#對某一列數(shù)據(jù)中的字符串進行strip處理

(10)df['A1'].str.lower() ?#對某一列數(shù)據(jù)中的字符串進行大小寫轉(zhuǎn)換

(11)df['A1'].astype('float') ?#對某一列數(shù)據(jù)中的數(shù)據(jù)進行數(shù)據(jù)類型轉(zhuǎn)換

(12)df.loc[(df['city']=='beijing')&(df['price']>100),'sign']=1 ?#對復(fù)合多個條件的數(shù)據(jù)進行分組標(biāo)記

(13)split=pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size']) ?#對category字段的值依次進行**分列**,并創(chuàng)建新的DataFrame數(shù)據(jù)表,索引值為df_inner的索引列,列名稱為category和size

(14)pd.DataFrame(category.str[:3]) ?#提取前三個字符,并生成數(shù)據(jù)表

(15)對DataFrame使用函數(shù)

? ? ?def multiply(x):
? ? ?????????return x * 2
? ? ?df["height"].**apply**(multiply)

3. 數(shù)據(jù)的拼接(增加行、列)

? ? ?-merge()函數(shù)
? ? ?-concat()函數(shù)
? ? ?-append()函數(shù)?? ?

?(1)merge()函數(shù)

?????根據(jù)一個或多個同名的列將不同數(shù)據(jù)表中的行連接起來。

? ? ?df3 = pd.merge(df1,df2, on='公司', how='outer')

? ? ?on指定按照哪一同名列進行合并;how=outer指取并集連接。how=left指保留左表全部內(nèi)容,而對右表不太在意;how=right指保留右表全部內(nèi)容,而對左表不太在意;

? ? ?df3 = pd.merge(df1,df2,left_index=True, right_index=True) ?# 按照行索引進行合并

(2)concat()函數(shù)

????????使用全連接方式完成拼接,不需要對齊,而是直接進行合并。用參數(shù)axis指定連接的軸向,默認(rèn)為0,即按行方向連接(縱向拼接)

????????df3 = pd.concat([df1, df2], axis=0, ignore_index=True) ?#忽略原有索引,生成新的數(shù)字序列作為索引。?

(3)append()函數(shù)

????????實現(xiàn)的是縱向拼接。

????????df3 = df1.append(df2)

????????另一個用途是新增元素。新增元素時,一定要設(shè)置參數(shù)ignore_index=True來忽略原索引,否則會報錯。

????????df3 = df1.append({'公司':'騰飛', '分?jǐn)?shù)': '90'}, ignore_index=True)

(4)增加一行

#在0行前增加一行 df.loc[-1]=list df.index=df.index+1 df=df.sort_index()#在最后一行增加一行 size=df.index.size df.loc[siez]=list

(5) 插入一列

#方法一: df.insert(1,'要增加的列的列名',list) #直接使用insert方法插入列,需要同時插入值#方法二: df_col_name=df.columns.tolist() #先取出所有列名到一個列表中 df_col_name.insert(2,'aa') #在列名的列表中插入要增加的列名 df=df.reindex(columns=df_col_name) #將重設(shè)列名為新的列名。用這種方法不需要同時輸入該列的值

4. 數(shù)據(jù)的統(tǒng)計分析

????????pandas模塊為我們提供了非常多的描述性統(tǒng)計分析的指標(biāo)函數(shù),如總和、均值、最小值、最大值等,我們來具體看看這些函數(shù):

????????首先隨機生成三組數(shù)據(jù)

????????np.random.seed(1234)

????????d1 = pd.Series(2*np.random.normal(size = 100)+3)

? ? ? ? d2 = np.random.f(2,4,size = 100)

????????d3 = np.random.randint(1,100,size = 100)

????????d1.count() #非空元素計算

????????d1.min() #最小值

????????d1.max() #最大值

????????d1.idxmin() #最小值的位置,類似于R中的which.min函數(shù)

????????d1.idxmax() #最大值的位置,類似于R中的which.max函數(shù)

????????d1.quantile(0.1) #10%分位數(shù)

????????d1.sum() #求和

????????d1.mean() #均值

????????d1.median() #中位數(shù)

????????d1.mode() #眾數(shù)

????????d1.var() #方差

????????d1.std() #標(biāo)準(zhǔn)差

????????d1.mad() #平均絕對偏差

????????d1.skew() #偏度

????????d1.kurt() #峰度

????????d1.describe() #一次性輸出多個描述性統(tǒng)計指標(biāo)。必須注意的是,descirbe方法只能針對序列或數(shù)據(jù)框,一維數(shù)組是沒有這個方法的

? ? 這里自定義一個函數(shù),將這些統(tǒng)計描述指標(biāo)全部匯總到一起:

def stats(x):return pd.Series([x.count(),x.min(),x.idxmin(),x.quantile(.25),x.median(),x.quantile(.75),x.mean(),x.max(),x.idxmax(),x.mad(),x.var(),x.std(),x.skew(),x.kurt()],index = ['Count','Min','Whicn_Min','Q1','Median','Q3','Mean','Max','Which_Max','Mad','Var','Std','Skew','Kurt'])stats(d1)

????????在實際的工作中,我們可能需要處理的是一系列的數(shù)值型數(shù)據(jù)框,如何將這個函數(shù)應(yīng)用到數(shù)據(jù)框中的每一列呢?可以使用apply函數(shù)。
????????將之前創(chuàng)建的d1,d2,d3數(shù)據(jù)構(gòu)建數(shù)據(jù)框:

df = pd.DataFrame(np.array([d1,d2,d3]).T,columns=['x1','x2','x3']) df.apply(stats)

????????非常完美,就這樣很簡單的創(chuàng)建了數(shù)值型數(shù)據(jù)的統(tǒng)計性描述。如果是離散型數(shù)據(jù)呢?就不能用這個統(tǒng)計口徑了,我們需要統(tǒng)計離散變量的觀測數(shù)、唯一值個數(shù)、眾數(shù)水平及個數(shù)。你只需要使用describe方法就可以實現(xiàn)這樣的統(tǒng)計了。

????????除以上的簡單描述性統(tǒng)計之外,還提供了連續(xù)變量的相關(guān)系數(shù)(corr)和協(xié)方差矩陣(cov)的求解,這個跟R語言是一致的用法。

????????df.corr():關(guān)于相關(guān)系數(shù)的計算可以調(diào)用pearson方法或kendell方法或spearman方法,默認(rèn)使用pearson方法。

????????df.corr('spearman')

? ? 如果只想關(guān)注某一個變量與其余變量的相關(guān)系數(shù)的話,可以使用corrwith,如下方只關(guān)心x1與其余變量的相關(guān)系數(shù):df.corrwith(df['x1'])

????????df.cov():數(shù)值型變量間的協(xié)方差矩陣

5. 數(shù)據(jù)的匯總? ?

????????主要函數(shù)是groupby和pivote_table。 ? ??

????????-**數(shù)據(jù)聚合:groupby()函數(shù)**
? ? ?聚合:pandas模塊中可以通過groupby()函數(shù)實現(xiàn)數(shù)據(jù)的聚合操作

(1)對所有的列進行計數(shù)匯總

df_inner.groupby('city').count() ?#根據(jù)city分組,對其它列進行統(tǒng)計 student.groupby('Sex').mean() ?#根據(jù)性別分組,對其它列求平均值

(2)按城市對id字段進行計數(shù)

df_inner.groupby('city')['id'].count()

(3)groupby還可以使用多個分組變量,例如對兩個字段進行匯總計數(shù)

df_inner.groupby(['city','size'])['id'].count() student.groupby(['Age','Sex']).mean() ? #根據(jù)年齡、性別分組,對其它列求平均值

(4)對city字段進行匯總,并分別計算price的合計和均值

df_inner.groupby('city')['price'].agg([len,np.sum,np.mean])

?-**數(shù)據(jù)透視表 pivote_table函數(shù)**

????????pandas為我們提供了非常強大的函數(shù)pivot_table(),該函數(shù)就是實現(xiàn)數(shù)據(jù)透視表功能的。我們先看看這個函數(shù)的語法和參數(shù):

????????pivot_table(data,values=None,index=None,columns=None,aggfunc='mean',fill_value=None,margins=False,dropna=True,margins_name='All')

? ? ? ? data:需要進行數(shù)據(jù)透視表操作的數(shù)據(jù)框

????????values:指定需要聚合的字段

????????index:指定某些原始變量作為行索引

????????columns:指定哪些離散的分組變量

????????aggfunc:指定相應(yīng)的聚合函數(shù)

????????fill_value:使用一個常數(shù)替代缺失值,默認(rèn)不替換

????????margins:是否進行行或列的匯總,默認(rèn)不匯總

????????dropna:默認(rèn)所有觀測為缺失的列

????????margins_name:默認(rèn)行匯總或列匯總的名稱為'All'?

? ? 例1:對一個分組變量(Sex),一個數(shù)值變量(Height)作統(tǒng)計匯總

????????pd.pivot_table(student, values=['Height'], columns=['Sex'])

? ? 例2:對一個分組變量(Sex),兩個數(shù)值變量(Height,Weight)作統(tǒng)計匯總

????????pd.pivot_table(student, values=['Height','Weight'], columns=['Sex'])

? ? 例3:對兩個分組變量(Sex,Age),兩個數(shù)值變量(Height,Weight)作統(tǒng)計匯總

????????pd.pivot_table(student, values=['Height','Weight'], columns=['Sex','Age'])

? ? 這樣的結(jié)果并不像Excel中預(yù)期的那樣,該如何變成列聯(lián)表的形式的?很簡單,只需將結(jié)果進行非堆疊操作(unstack)即可: ?pd.pivot_table(student, values=['Height','Weight'], columns=['Sex','Age']).unstack()

參考文章:

python之pandas用法大全 - 我不叫鬧心 - 博客園

Pandas學(xué)習(xí)筆記詳版

Python數(shù)據(jù)分析之pandas學(xué)習(xí)_weixin_30763455的博客-CSDN博客

總結(jié)

以上是生活随笔為你收集整理的Python模块之Pandas模块学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。