内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Python中pandas統(tǒng)計分析的案例-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“Python中pandas統(tǒng)計分析的案例”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Python中pandas統(tǒng)計分析的案例”這篇文章吧。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),磐石企業(yè)網(wǎng)站建設(shè),磐石品牌網(wǎng)站建設(shè),網(wǎng)站定制,磐石網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,磐石網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

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

1、隨機生成三組數(shù)據(jù)

import numpy as np
import pandas as pd

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)

2、統(tǒng)計分析用到的函數(shù)

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()  #標準差
d1.mad()  #平均絕對偏差
d1.skew()  #偏度
d1.kurt()  #峰度
d1.describe() #一次性輸出多個描述性統(tǒng)計指標

必須注意的是,descirbe方法只能針對序列或數(shù)據(jù)框,一維數(shù)組是沒有這個方法的
自定義一個函數(shù),將這些統(tǒng)計指標匯總在一起:

def status(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=['總數(shù)','最小值','最小值位置','25%分位數(shù)',
   '中位數(shù)','75%分位數(shù)','均值','大值','大值位數(shù)','平均絕對偏差','方差','標準差','偏度','峰度'])

執(zhí)行該函數(shù),查看一下d1數(shù)據(jù)集的這些統(tǒng)計函數(shù)值:

df = pd.DataFrame(status(d1))
df

結(jié)果:

Python中pandas統(tǒng)計分析的案例

在實際的工作中,我們可能需要處理的是一系列的數(shù)值型數(shù)據(jù)框,如何將這個函數(shù)應(yīng)用到數(shù)據(jù)框中的每一列呢?可以使用apply函數(shù),這個非常類似于R中的apply的應(yīng)用方法。
將之前創(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.head()

df.apply(status)

結(jié)果:

Python中pandas統(tǒng)計分析的案例

3、加載CSV數(shù)據(jù)

import numpy as np
import pandas as pd

bank = pd.read_csv("D://bank/bank-additional-train.csv")
bank.head() #查看前5行

Python中pandas統(tǒng)計分析的案例

描述性統(tǒng)計1:describe()

result = bank['age'].describe()
pd.DataFrame(result ) #格式化成DataFrame

Python中pandas統(tǒng)計分析的案例

描述性統(tǒng)計2:describe(include=[‘number'])

include中填寫的是數(shù)據(jù)類型,若想查看所有數(shù)據(jù)的統(tǒng)計數(shù)據(jù),則可填寫object,即include=['object'];若想查看float類型的數(shù)據(jù),則為include=['float']。

result = bank.describe(include=['object'])

Python中pandas統(tǒng)計分析的案例

含義:

count:指定字段的非空總數(shù)。
unique:該字段中保存的值類型數(shù)量,比如性別列保存了男、女兩種值,則unique值則為2。
top:數(shù)量最多的值。
freq:數(shù)量最多的值的總數(shù)。
bank.describe(include=['number'])

Python中pandas統(tǒng)計分析的案例

連續(xù)變量的相關(guān)系數(shù)(corr)

bank.corr()

Python中pandas統(tǒng)計分析的案例

協(xié)方差矩陣(cov)

bank.cov()

Python中pandas統(tǒng)計分析的案例

刪除列

bank.drop('job', axis=1) #刪除年齡列,axis=1必不可少

排序

bank.sort_values(by=['job','age']) #根據(jù)工作、年齡升序排序
bank.sort_values(by=['job','age'], ascending=False) #根據(jù)工作、年齡降序排序

多表連接

準備數(shù)據(jù):

import numpy as np
import pandas as pd

student = {'Name':['Bob','Alice','Carol','Henry','Judy','Robert','William'],
  'Age':[12,16,13,11,14,15,24],
  'Sex':['M','F','M','M','F','M','F']}

score = {'Name':['Bob','Alice','Carol','Henry','William'],
  'Score':[75,35,87,86,57]}

df_student = pd.DataFrame(student)
df_student

df_score = pd.DataFrame(score)
df_score

student:

Python中pandas統(tǒng)計分析的案例

score:

Python中pandas統(tǒng)計分析的案例

內(nèi)連接

stu_score1 = pd.merge(df_student, df_score, on='Name')
stu_score1

注意,默認情況下,merge函數(shù)實現(xiàn)的是兩個表之間的內(nèi)連接,即返回兩張表中共同部分的數(shù)據(jù)。可以通過how參數(shù)設(shè)置連接的方式,left為左連接;right為右連接;outer為外連接。

Python中pandas統(tǒng)計分析的案例

左連接

stu_score2 = pd.merge(df_student, df_score, on='Name',how='left')
stu_score2

Python中pandas統(tǒng)計分析的案例

左連接中,沒有Score的學(xué)生Score為NaN

缺失值處理

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

刪除法

當數(shù)據(jù)中的某個變量大部分值都是缺失值,可以考慮刪除改變量;當缺失值是隨機分布的,且缺失的數(shù)量并不是很多是,也可以刪除這些缺失的觀測。

替補法

對于連續(xù)型變量,如果變量的分布近似或就是正態(tài)分布的話,可以用均值替代那些缺失值;如果變量是有偏的,可以使用中位數(shù)來代替那些缺失值;對于離散型變量,我們一般用眾數(shù)去替換那些存在缺失的觀測。

插補法

插補法是基于蒙特卡洛模擬法,結(jié)合線性模型、廣義線性模型、決策樹等方法計算出來的預(yù)測值替換缺失值。

此處測試使用上面學(xué)生成績數(shù)據(jù)進行處理

查詢某一字段數(shù)據(jù)為空的數(shù)量

sum(pd.isnull(stu_score2['Score']))
結(jié)果:2

直接刪除缺失值

stu_score2.dropna()

刪除前:

Python中pandas統(tǒng)計分析的案例

刪除后:

Python中pandas統(tǒng)計分析的案例

默認情況下,dropna會刪除任何含有缺失值的行

刪除所有行為缺失值的數(shù)據(jù)

import numpy as np
import pandas as pd

df = pd.DataFrame([[1,2,3],[3,4,np.nan],
   [12,23,43],[55,np.nan,10],
   [np.nan,np.nan,np.nan],[np.nan,1,2]],
   columns=['a1','a2','a3'])

Python中pandas統(tǒng)計分析的案例

df.dropna() #該操作會刪除所有有缺失值的行數(shù)據(jù)

Python中pandas統(tǒng)計分析的案例

df.dropna(how='all') #該操作僅會刪除所有列均為缺失值的行數(shù)據(jù)

Python中pandas統(tǒng)計分析的案例

填充數(shù)據(jù)

使用一個常量來填補缺失值,可以使用fillna函數(shù)實現(xiàn)簡單的填補工作:

1、用0填補所有缺失值

df.fillna(0)

Python中pandas統(tǒng)計分析的案例

2、采用前項填充或后向填充

df.fillna(method='ffill') #用前一個值填充

Python中pandas統(tǒng)計分析的案例

df.fillna(method='bfill') #用后一個值填充

Python中pandas統(tǒng)計分析的案例

3、使用常量填充不同的列

df.fillna({'a1':100,'a2':200,'a3':300})

Python中pandas統(tǒng)計分析的案例

4、用均值或中位數(shù)填充各自的列

a1_median = df['a1'].median() #計算a1列的中位數(shù)
a1_median=7.5

a2_mean = df['a2'].mean() #計算a2列的均值
a2_mean = 7.5

a3_mean = df['a3'].mean() #計算a3列的均值
a3_mean = 14.5

df.fillna({'a1':a1_median,'a2':a2_mean,'a3':a3_mean}) #填充值

Python中pandas統(tǒng)計分析的案例

很顯然,在使用填充法時,相對于常數(shù)填充或前項、后項填充,使用各列的眾數(shù)、均值或中位數(shù)填充要更加合理一點,這也是工作中常用的一個快捷手段。

數(shù)據(jù)打亂(shuffle)

實際工作中,經(jīng)常會碰到多個DataFrame合并后希望將數(shù)據(jù)進行打亂。在pandas中有sample函數(shù)可以實現(xiàn)這個操作。

df = df.sample(frac=1)

這樣對可以對df進行shuffle。其中參數(shù)frac是要返回的比例,比如df中有10行數(shù)據(jù),我只想返回其中的30%,那么frac=0.3。
有時候,我們可能需要打混后數(shù)據(jù)集的index(索引)還是按照正常的排序。我們只需要這樣操作

df = df.sample(frac=1).reset_index(drop=True)

以上是“Python中pandas統(tǒng)計分析的案例”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文名稱:Python中pandas統(tǒng)計分析的案例-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.rwnh.cn/article16/cepsdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、云服務(wù)器、網(wǎng)頁設(shè)計公司、網(wǎng)站營銷網(wǎng)站改版、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
斗六市| 怀仁县| 兴业县| 嘉禾县| 广饶县| 沿河| 井陉县| 凤庆县| 工布江达县| 永登县| 龙陵县| 达州市| 常山县| 平南县| 江达县| 江源县| 正阳县| 开江县| 芜湖县| 治县。| 建水县| 鄂托克前旗| 阿勒泰市| 乌兰察布市| 肃宁县| 迭部县| 米易县| 凤台县| 乐至县| 鄱阳县| 祁连县| 东辽县| 阳高县| 崇明县| 银川市| 宜兰县| 汉中市| 黔南| 嘉荫县| 平阴县| 平遥县|