pandas 是基于NumPy的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫(kù)和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。你很快就會(huì)發(fā)現(xiàn),它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。
導(dǎo)入pandas庫(kù):
import pandas as pd
導(dǎo)入Series, DataFrame:
from pandas import Series, DataFrame
pandas常用命令
讀取excel文件:
df=pd.read_excel(fpath,sheet_name=name,usecols=[n,m,...])
創(chuàng)建數(shù)據(jù)表:
pd.DataFrame(dict, columns=dict.index, index=[dict.columnnum])
一、數(shù)據(jù)表信息查看
1.查看維度:
df.shape
2.查看數(shù)據(jù)格式
每一列數(shù)據(jù)的格式:
df.dtypes
查看某一列數(shù)據(jù)的格式:
df['列名'].dtype
3.查看數(shù)據(jù)表基本信息(列名稱(chēng)、數(shù)據(jù)格式、所占空間等):
df.info
4.判斷數(shù)據(jù)是否是空值:
判斷整個(gè)數(shù)據(jù)表數(shù)據(jù)是否為空值:
df.isnull
判斷某一列數(shù)據(jù)是否為空值:
df['列名'].isnull
5.查看某一列的唯一值:
df['列名'].unique
6.查看數(shù)據(jù)表的值:
df.values
7.查看數(shù)據(jù)表索引:
df.index
8.查看列名稱(chēng):
df.columns
9.查看前n行數(shù)據(jù):
df.head(n)#默認(rèn)前5行數(shù)據(jù)
10.查看后n行數(shù)據(jù):
df.tail(n)#默認(rèn)后5行數(shù)據(jù)
二、數(shù)據(jù)清洗
1.用0填充N(xiāo)A:
df.fillna(value=0)#生成副本,不影響原df,添加參數(shù)inplace=True修改原df
2.用列均值對(duì)列NA進(jìn)行填充:
df['列名'].fillna(df['列名'].mean)
3.刪除含有缺失值的行:
df.dropna
4.更改某一列數(shù)據(jù)的數(shù)據(jù)格式:
df['列名'].astype('int')
5.更改列名稱(chēng):
df.rename(columns={'原列名: '新列名'})
6.刪除后出現(xiàn)的重復(fù)值:
df['列名'].drop_duplicates
7.刪除先出現(xiàn)的重復(fù)值:
df['列名'].drop_duplicates(keep='last')
8.數(shù)據(jù)替換:
df['列名'].replace('原數(shù)據(jù)', '新數(shù)據(jù)')
三、數(shù)據(jù)處理
數(shù)據(jù)讀取
1.數(shù)據(jù)表合并
1.1兩表合并
合并列
df_inner=pd.merge(df1,df2,how='inner')#交集,類(lèi)似sql語(yǔ)句inner join
df_left=pd.merge(df1,df2,how='left')#類(lèi)似sql語(yǔ)句left join
df_right=pd.merge(df1,df2,how='right')#類(lèi)似sql語(yǔ)句right join
df_outer=pd.merge(df1,df2,how='outer')#并集
合并行
pd.concat([df1,df2],axis=0,ignore_index=True)#ignore_index=True,重置索引,默認(rèn)False
1.2多表合并(合并行)
pd.concat([df1,df2,...],axis=0,ignore_index=True)
2.數(shù)據(jù)排序和排名:
2.1數(shù)據(jù)排序
df.sort_values(by=['列名'])
df.sort_values(by=['列1','列2'])
2.2數(shù)據(jù)排名
df['列名'].rank
3.數(shù)據(jù)修改
如果c_adress列的值==‘山東汕頭’,則顯示為'廣東',否則顯示為原數(shù)據(jù)
np.where(df1['c_adress']=='廣東汕頭','廣東',df1['c_adress'])
四、數(shù)據(jù)選取
1.選取單行:df.loc['行標(biāo)簽']、df.iloc[n:]
2.選取單列:df['列標(biāo)簽']、df.loc[:,'列標(biāo)簽']df.iloc[:,n]
3.選取數(shù)據(jù)區(qū)域
df.loc[['行標(biāo)簽1','行標(biāo)簽2',...],[列標(biāo)簽1','列標(biāo)簽2',...]]
df.iloc[n:m,[n,m,k,...]]
五、數(shù)據(jù)篩選
1.使用大于、小于、等于進(jìn)行數(shù)據(jù)篩選
2.使用或(|)、與(&)、非(~)進(jìn)行數(shù)據(jù)篩選
3.使用.isin進(jìn)行數(shù)據(jù)篩選
4.使用query函數(shù)進(jìn)行數(shù)據(jù)篩選
5.使用.str進(jìn)行數(shù)據(jù)篩選
六、分類(lèi)匯總
1.統(tǒng)計(jì)每一列數(shù)據(jù)中非空的數(shù)量
df.count
2.按某字段對(duì)所有的列進(jìn)行匯總計(jì)數(shù)
df.groupby('字段').count
3.按某字段對(duì)某列進(jìn)行匯總計(jì)數(shù)
df.groupby('字段')['列名'].count
4.按兩個(gè)字段對(duì)某列進(jìn)行匯總計(jì)數(shù)
df.groupby(['字段1','字段2'])['列名'].count
5.按某字段進(jìn)行分類(lèi)計(jì)算某列的數(shù)量、合計(jì)和均值
df.groupby('字段')['列名'].agg(len,np.sum,np.mean)
七、統(tǒng)計(jì)分析
創(chuàng)建數(shù)據(jù)表
1.數(shù)據(jù)抽樣
df.sample(n=None,frac=None,replace=False,weights=None,random_state=None, axis=None)[source]
1.1隨機(jī)抽取n行
df.sample(n)
1.2按比例抽取
df.sample(frac=n)
1.3按抽樣權(quán)重抽取
df.sample(n,weights=weights)
1.4無(wú)放回抽樣
df.sample(n,replace=False)
1.5有放回抽樣
2.計(jì)算最大值:max(axis=0/1)
3.計(jì)算最小值:min(axis=0/1)
4.計(jì)算均值:mean(axis=0/1)
5.計(jì)算標(biāo)準(zhǔn)差:std
6.計(jì)算方差:var
7.數(shù)據(jù)表描述性統(tǒng)計(jì)
df.describe
8.計(jì)算協(xié)方差
計(jì)算兩個(gè)字段間的協(xié)方差系數(shù):df['列1'].cov(df['列2'])
計(jì)算數(shù)據(jù)表中所有字段間的協(xié)方差系數(shù):df.cov
9.計(jì)算相關(guān)性系數(shù)(接近1為正相關(guān),接近-1為負(fù)相關(guān),0為不相關(guān))
計(jì)算兩個(gè)字段間的相關(guān)性系數(shù):df['列1'].corr(df['列2'])
計(jì)算數(shù)據(jù)表中所有字段間的相關(guān)性系數(shù):df.corr
聯(lián)系客服