首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 使用pandas 进行查询和统计详解

Python 使用pandas 进行查询和统计详解

作者头像
全栈若城
发布2024-02-29 18:40:34
发布2024-02-29 18:40:34
1.3K0
举报
文章被收录于专栏:若城技术专栏若城技术专栏

前言

在使用 Pandas 进行数据分析时,我们需要经常进行查询和统计分析。 但是Pandas 是如何进行查询和统计分析得嘞, let’s go :

数据筛选查询

  • 通过列名索引筛选数据:
代码语言:javascript
复制
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']]
  • 通过位置索引筛选数据:
代码语言:javascript
复制
# 通过位置索引选取第一行数据
df.iloc[0]
# 通过位置索引选取第一行和第二行数据
df.iloc[0:2]
  • 通过布尔索引筛选数据:
代码语言:javascript
复制
# 选取年龄大于等于 20 的记录
df[df['age'] >= 20]
# 选取性别为女的记录
df[df['gender'] == 'F']

数据统计分析

Pandas 提供丰富的统计函数,可以方便地进行数据分析。

  • 描述性统计分析:
代码语言:javascript
复制
# 统计数值型数据的基本描述性统计信息
df.describe()
# 统计各属性的非空值数量
df.count()
# 统计各属性的平均值
df.mean()
# 统计各属性的方差
df.var()
# 统计各属性的标准差
df.std()
  • 分组统计分析:
代码语言:javascript
复制
# 按照性别分组,统计年龄均值
df.groupby('gender')['age'].mean()
# 按照性别和年龄分组,统计人数
df.groupby(['gender', 'age'])['name'].count()
  • 交叉表分析:
代码语言:javascript
复制
# 构造一个交叉表,统计不同性别和年龄的人数
pd.crosstab(df['gender'], df['age'])

数据排序

  • 按照某列数据进行升序排列:
代码语言:javascript
复制
df.sort_values(by='age')
  • 按照某列数据进行降序排列:
代码语言:javascript
复制
df.sort_values(by='age', ascending=False)

数据聚合

  • 对整个 DataFrame 进行聚合操作:
代码语言:javascript
复制
# 聚合函数:求和、均值、中位数、最大值、最小值
df.aggregate([sum, 'mean', 'median', max, min])
  • 对某列数据进行聚合操作:
代码语言:javascript
复制
# 统计年龄平均值
df['age'].mean()
# 统计年龄总和
df['age'].sum()
# 统计年龄最大值
df['age'].max()

处理缺失数据

  • 判断数据是否为缺失值:
代码语言:javascript
复制
# 返回一个布尔型 DataFrame,表明各元素是否为缺失值
df.isnull()
  • 删除缺失值所在的行或列:
代码语言:javascript
复制
# 删除所有含有缺失值的行
df.dropna()
# 删除所有含有缺失值的列
df.dropna(axis=1)
  • 用指定值填充缺失值:
代码语言:javascript
复制
# 将缺失值使用 0 填充
df.fillna(0)

数据去重

  • 对 DataFrame 去重:
代码语言:javascript
复制
# 根据所有列值的重复性进行去重
df.drop_duplicates()
# 根据指定列值的重复性进行去重
df.drop_duplicates(subset=['name', 'age'])
  • 对 Series 去重:
代码语言:javascript
复制
# 对 'name' 列进行去重
df['name'].drop_duplicates()

数据合并

  • 横向(按列)合并 DataFrame:
代码语言:javascript
复制
# 创建一个新的 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:
代码语言:javascript
复制
# 创建一个新的 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)

数据透视表

  • 创建数据透视表:
代码语言:javascript
复制
# 统计不同性别和年龄的人数,以 'gender' 为行、'age' 为列,'name' 计数
pd.pivot_table(df, values='name', index='gender', columns='age', aggfunc='count')

完结

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 数据筛选查询
  • 数据统计分析
  • 数据排序
  • 数据聚合
  • 处理缺失数据
  • 数据去重
  • 数据合并
  • 数据透视表
  • 完结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档