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

