Python 使用pandas实现查询和统计示例详解
目录
- 前言
- 数据筛选查询
- 数据统计分析
- 数据排序
- 数据聚合
- 处理缺失数据
- 数据去重
- 数据合并
- 数据透视表
前言
在使用 Pandas
进行数据分析时,我们需要经常进行查询和统计分析。
但是Pandas
是如何进行查询和统计分析得嘞, let's go :
数据筛选查询
通过列名索引筛选数据:
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' 属性 jsdf['name'] # 选取 'age' 和 'gender' 属性 df[['age', 'gender']]
通过位置索引筛选数据:
# 通过位置索引选取第一行数据 df.iloc[0] # 通过位置索引python选取第一行和第二行数据 df.iloc[0:2]
通过布尔索引筛选数据:
# 选取年龄大于等于 20 的记录 df[df['age'] >= 20] # 选取性别为女的记录 df[df['gender'] == 'F']
数据统计分析
Pandas
提供丰富的统计函数,可以方便地进行数据分析。
描述性统计分析:
# 统计数值型数据的基本描述性统计信息 编程客栈df.describe() # 统计各属性的非空值数量 df.count() # 统计各属性的平均值 df.mean() # 统计各属性的方差 df.var() # 统计各属性的标准差 df.std()
分组统计分析:
# 按照性别分组,统计年龄均值 df.groupby('gender')['age'].mean() # 按照性别和年龄分组,统计人数 df.groupby(['gender', 'age'])['name'].count()
交叉表分析:
# 构造一个交叉表,统计不同性别和年龄的人数 pd.crosstab(df['gender'], df['age'])
数据排序
按照某列数据进行升序排列:
df.sort_values(by='age')
按照某列数据进行降序排列:www.devze.com
df.sort_values(by='age', ascending=False)
数据聚合
对整个 DataFrame 进行聚合操作:
# 聚合函数:求和、均值、中位数、最大值、最小值 df.aggregate([sum, 'mean', 'median', max, min])
对某列数据进行聚合操作:
# 统计年龄平均值 df['age'].mean() # 统计年龄总和 df['age'].sum() # 统计年龄最大值 df['age'].max()
处理缺失数据
判断数据是否为缺失值:
# 返回一个布尔型 DataFrame,表明各元素是否为缺失值 df.isnull()
删除缺失值所在的行或列:
# 删除所有含有缺失值的行 df.dropna() # 删除所有含有缺失值的列 df.dropna(axis=1)
用指定值填充缺失值:
# 将缺失值使用 0 填充 df.fillna(0)
数据去重
对 DataFrame 去重:
# 根据所有列值的重复性进行去重 df.drop_duplicates() # 根据指定列值的重复性进行去重 df.drop_duplicates(subset=['name', 'age'])
对 Series 去重:
# 对 'name' 列进行去重 df['name'].drop_duplicates()
数据合并
横向(按列)合并 DataFrame:
# 创建一个新的 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:
# 创建一个新的 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)
数据透视表
创建数据透视表:
# 统计不同性别和年龄的人数,以 'gender' 为行、'age' 为列,'name' 计数 pd.pivot_table(df, values='name', index='gender', columns='age', aggfunc='count')
以上就是python 使用pandas实现查询和统计示例详解的详细内容,更多关于Python pandas查询统计的资料请关注编程客栈(www.devze.com)其它相关文章!
精彩评论