乐趣区

关于程序员: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' 属性
    df['name']
    # 选取 'age' 和 'gender' 属性
    df[['age', 'gender']]
  • 通过地位索引筛选数据:

    # 通过地位索引选取第一行数据
    df.iloc[0]
    # 通过地位索引选取第一行和第二行数据
    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')
  • 依照某列数据进行降序排列:

    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')

    完结

本文由 mdnice 多平台公布

退出移动版