Python 使用pandas實(shí)現(xiàn)查詢(xún)和統(tǒng)計(jì)示例詳解
前言
在使用 Pandas 進(jìn)行數(shù)據(jù)分析時(shí),我們需要經(jīng)常進(jìn)行查詢(xún)和統(tǒng)計(jì)分析。
但是Pandas 是如何進(jìn)行查詢(xún)和統(tǒng)計(jì)分析得嘞, let's go :
數(shù)據(jù)篩選查詢(xún)
通過(guò)列名索引篩選數(shù)據(jù):
import pandas as pd
data = {'name': ['Tom', 'Jerry', 'Lucy', 'Amy'],
'age': [18, 19, 20, 21],
'gender': ['M', 'M', 'F', 'F']}
df = pd.DataFrame(data)
# 選取 'name' 屬性
df['name']
# 選取 'age' 和 'gender' 屬性
df[['age', 'gender']]通過(guò)位置索引篩選數(shù)據(jù):
# 通過(guò)位置索引選取第一行數(shù)據(jù) df.iloc[0] # 通過(guò)位置索引選取第一行和第二行數(shù)據(jù) df.iloc[0:2]
通過(guò)布爾索引篩選數(shù)據(jù):
# 選取年齡大于等于 20 的記錄 df[df['age'] >= 20] # 選取性別為女的記錄 df[df['gender'] == 'F']
數(shù)據(jù)統(tǒng)計(jì)分析
Pandas 提供豐富的統(tǒng)計(jì)函數(shù),可以方便地進(jìn)行數(shù)據(jù)分析。
描述性統(tǒng)計(jì)分析:
# 統(tǒng)計(jì)數(shù)值型數(shù)據(jù)的基本描述性統(tǒng)計(jì)信息 df.describe() # 統(tǒng)計(jì)各屬性的非空值數(shù)量 df.count() # 統(tǒng)計(jì)各屬性的平均值 df.mean() # 統(tǒng)計(jì)各屬性的方差 df.var() # 統(tǒng)計(jì)各屬性的標(biāo)準(zhǔn)差 df.std()
分組統(tǒng)計(jì)分析:
# 按照性別分組,統(tǒng)計(jì)年齡均值
df.groupby('gender')['age'].mean()
# 按照性別和年齡分組,統(tǒng)計(jì)人數(shù)
df.groupby(['gender', 'age'])['name'].count()交叉表分析:
# 構(gòu)造一個(gè)交叉表,統(tǒng)計(jì)不同性別和年齡的人數(shù) pd.crosstab(df['gender'], df['age'])
數(shù)據(jù)排序
按照某列數(shù)據(jù)進(jìn)行升序排列:
df.sort_values(by='age')
按照某列數(shù)據(jù)進(jìn)行降序排列:
df.sort_values(by='age', ascending=False)
數(shù)據(jù)聚合
對(duì)整個(gè) DataFrame 進(jìn)行聚合操作:
# 聚合函數(shù):求和、均值、中位數(shù)、最大值、最小值 df.aggregate([sum, 'mean', 'median', max, min])
對(duì)某列數(shù)據(jù)進(jìn)行聚合操作:
# 統(tǒng)計(jì)年齡平均值 df['age'].mean() # 統(tǒng)計(jì)年齡總和 df['age'].sum() # 統(tǒng)計(jì)年齡最大值 df['age'].max()
處理缺失數(shù)據(jù)
判斷數(shù)據(jù)是否為缺失值:
# 返回一個(gè)布爾型 DataFrame,表明各元素是否為缺失值 df.isnull()
刪除缺失值所在的行或列:
# 刪除所有含有缺失值的行 df.dropna() # 刪除所有含有缺失值的列 df.dropna(axis=1)
用指定值填充缺失值:
# 將缺失值使用 0 填充 df.fillna(0)
數(shù)據(jù)去重
對(duì) DataFrame 去重:
# 根據(jù)所有列值的重復(fù)性進(jìn)行去重 df.drop_duplicates() # 根據(jù)指定列值的重復(fù)性進(jìn)行去重 df.drop_duplicates(subset=['name', 'age'])
對(duì) Series 去重:
# 對(duì) 'name' 列進(jìn)行去重 df['name'].drop_duplicates()
數(shù)據(jù)合并
橫向(按列)合并 DataFrame:
# 創(chuàng)建一個(gè)新的 DataFrame
other_data = {'name': ['Tom', 'Jerry', 'Lucy', 'Amy'],
'score': [80, 90, 85, 95]}
other_df = pd.DataFrame(other_data)
# 將兩個(gè) DataFrame 在列上合并
pd.concat([df, other_df], axis=1)縱向(按行)合并 DataFrame:
# 創(chuàng)建一個(gè)新的 DataFrame
other_data = {'name': ['Kate', 'Jack'],
'age': [19, 20],
'gender': ['F', 'M']}
other_df = pd.DataFrame(other_data)
# 將兩個(gè) DataFrame 在行上合并
pd.concat([df, other_df], axis=0)數(shù)據(jù)透視表
創(chuàng)建數(shù)據(jù)透視表:
# 統(tǒng)計(jì)不同性別和年齡的人數(shù),以 'gender' 為行、'age' 為列,'name' 計(jì)數(shù) pd.pivot_table(df, values='name', index='gender', columns='age', aggfunc='count')
以上就是Python 使用pandas實(shí)現(xiàn)查詢(xún)和統(tǒng)計(jì)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python pandas查詢(xún)統(tǒng)計(jì)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python類(lèi)名和類(lèi)方法cls修改類(lèi)變量的值
這篇文章主要介紹了python類(lèi)名和類(lèi)方法cls修改類(lèi)變量的值,通過(guò)類(lèi)對(duì)象是無(wú)法修改類(lèi)變量的值的,本質(zhì)其實(shí)是給類(lèi)對(duì)象新添加?name?和?age?變量,下文更多的相關(guān)介紹需要的小伙伴可任意參考一下2022-04-04
如何使用python傳入不確定個(gè)數(shù)參數(shù)
這篇文章主要介紹了如何使用python傳入不確定個(gè)數(shù)參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
基于Python+Pygame實(shí)現(xiàn)變異狗大戰(zhàn)游戲
只有你想不到,沒(méi)有我找不到寫(xiě)不了的好游戲!這篇文章就來(lái)和大家分享一下如何基于Python+Pygame實(shí)現(xiàn)變異狗大戰(zhàn)游戲,感興趣的可以了解一下2023-03-03
python實(shí)現(xiàn)批量修改圖片格式和尺寸
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)批量修改圖片格式和尺寸的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
如何基于Python實(shí)現(xiàn)數(shù)字類(lèi)型轉(zhuǎn)換
這篇文章主要介紹了如何基于Python實(shí)現(xiàn)數(shù)字類(lèi)型轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
兩個(gè)命令把 Vim 打造成 Python IDE的方法
這篇文章主要介紹了兩個(gè)命令把 Vim 打造成 Python IDE,需要的朋友可以參考下2016-03-03
python實(shí)現(xiàn)圖片,視頻人臉識(shí)別(opencv版)
這篇文章主要介紹了python實(shí)現(xiàn)圖像,視頻人臉識(shí)別(opencv版)的的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-11-11

