Python 中,使用 Pandas 分析 DataFrame 是数据科学与数据分析的核心技能之一。Pandas 提供了功能丰富且高效的 DataFrame 分析方法,涵盖数据预览、筛选、分组、统计、透视和清洗,广泛应用于数据分析、机器学习、业务报表等领域。本文主要介绍Python Pandas 分析DataFrame。

1、查看和预览数据

查看和预览数据是数据分析的第一步,常用方法包括 head()tail() 分别查看前几行和后几行,shape 获取数据的行列数,columns 查看列名,info() 显示每列的数据类型与非空值数量,而 describe() 可快速生成数值型列的统计摘要,帮助了解数据的整体结构和分布情况。head()方法从顶部开始返回标题和指定的行数。

例如:

通过打印DataFrame的前10行获得快速查看:

import pandas as pd

df = pd.read_csv('data.csv')

print(df.head(10))

在示例中,将使用一个名为“data.csv”的CSV文件。

data.csv文件:https://www.cjavapy.com/download/5fe1f74edc72d93b4993067c/

注意:如果未指定行数,则head()方法将返回前5行。

import pandas as pd

df = pd.read_csv('data.csv')  # 假设已加载数据

df.head()       # 查看前5行
df.tail(3)      # 查看后3行
df.shape        # 查看行列数 (行数, 列数)
df.columns      # 查看所有列名
df.info()       # 查看基本结构和类型
df.describe()   # 统计摘要(均值、标准差、四分位等)

2、DataFrame数据信息

DataFrame对象具有称为info()的方法,该方法为您提供有关数据集的更多信息。

例如:

打印有关数据的信息:

print(df.info()) 

Result

<class 'pandas.core.frame.DataFrame'>
  RangeIndex: 169 entries, 0 to 168
  Data columns (total 4 columns):
   #   Column    Non-Null Count  Dtype  
  ---  ------    --------------  -----  
   0   Duration  169 non-null    int64  
   1   Pulse     169 non-null    int64  
   2   Maxpulse  169 non-null    int64  
   3   Calories  164 non-null    float64
  dtypes: float64(1), int64(3)
  memory usage: 5.4 KB
  None

3、筛选与条件分析

筛选与条件分析通过布尔索引对 DataFrame 进行过滤操作,常用语法包括根据单个或多个条件筛选行,如 df[df['age'] > 30](df['age'] > 30) & (df['score'] > 80),可用于快速定位感兴趣的数据子集,是数据分析中最常用且高效的手段之一。

import pandas as pd


df = pd.read_csv('data.csv') 

# 返回布尔 Series
print(df['age'] > 30)      
# 选出 age > 30 的行
print(df[df['age'] > 30])       
# 筛选性别为女
print(df[df['gender'] == 'Female']) 
# 多条件筛选
print(df[(df['age'] > 30) & (df['score'] > 80)])

4、基本统计分析

Pandas 的基本统计分析功能可以帮助快速了解数据的整体特征,包括求平均值、最大值、最小值、标准差、中位数等,常用方法如 mean()max()min()std()median()value_counts() 等,适用于数值型数据的汇总、分类频次统计和初步趋势判断,是数据分析中的基础操作。

import pandas as pd

# 构造一个示例 DataFrame
data = {
    'name': ['张三', '李四', '小明', '小张', '小亮'],
    'score': [85, 92, 85, 70, 92]
}

df = pd.DataFrame(data)

# 平均值
print("平均值:", df['score'].mean())
# 中位数
print("中位数:", df['score'].median())
# 标准差
print("标准差:", df['score'].std())
# 最小值和最大值
print("最小值:", df['score'].min())
print("最大值:", df['score'].max())
# 每个分数的出现次数
print("分数分布:")
print(df['score'].value_counts())

5、分组与聚合(groupby)

Pandas 的分组与聚合(groupby)功能可根据一个或多个字段对数据进行分组,并对每组数据执行如求和、求均值、计数等聚合操作,常用于分类汇总和多维统计分析,是数据分析中处理结构化信息的核心工具之一。

import pandas as pd

# 构造示例 DataFrame
data = {
    'name': ['张三', '李四', '小明', '小张', '小亮', '小刚'],
    'gender': ['F', 'M', 'M', 'M', 'F', 'M'],
    'grade': ['A', 'A', 'B', 'B', 'A', 'B'],
    'class': ['C1', 'C1', 'C2', 'C2', 'C1', 'C2'],
    'score': [85, 90, 78, 82, 88, 75],
    'age': [18, 19, 17, 18, 18, 17]
}

df = pd.DataFrame(data)

# 按性别分组求平均成绩
print(df.groupby('gender')['score'].mean()) 
# 多字段分组统计数量
print(df.groupby(['gender', 'grade']).size())  
print(df.groupby('class').agg({
    'score': ['mean', 'max'],
    'age': 'median'
}))

6、数据透视表分析(pivot_table)

Pandas 的 pivot_table() 函数用于创建数据透视表,通过指定行、列和聚合函数对数据进行多维度汇总和交叉分析,常用于统计对比、分类聚合和生成类似 Excel 的交叉表,是处理复杂结构化数据的高效工具。

import pandas as pd

# 构造示例 DataFrame
data = {
    'name': ['张三', '李四', '小明', '小张', '小亮', '小刚'],
    'gender': ['F', 'M', 'M', 'M', 'F', 'M'],
    'grade': ['A', 'A', 'B', 'B', 'A', 'B'],
    'class': ['C1', 'C1', 'C2', 'C2', 'C1', 'C2'],
    'score': [85, 90, 78, 82, 88, 75],
    'age': [18, 19, 17, 18, 18, 17]
}

df = pd.DataFrame(data)

print(df.pivot_table(values='score', index='gender', 
columns='grade', aggfunc='mean'))

7、 缺失值处理

缺失值处理是 Pandas 数据清洗的重要步骤,常用方法包括使用 isnull() 检查缺失值、dropna() 删除包含缺失值的行或列、fillna() 用固定值或统计值(如均值、中位数)填充缺失项,从而保证数据完整性和后续分析的准确性。

import pandas as pd

# 构造示例 DataFrame
data = {
    'name': ['张三', '李四', '小明', '小张', '小亮', '小刚'],
    'gender': ['F', 'M', 'M', 'M', 'F', 'M'],
    'grade': ['A', 'A', 'B', 'B', 'A', 'B'],
    'class': ['C1', 'C1', 'C2', 'C2', 'C1', 'C2'],
    'score': [85, 90, 78, 82, 88, 75],
    'age': [18, 19, 17, 18, 18, 17]
}

df = pd.DataFrame(data)

print(df.isnull().sum())    # 每列缺失值统计
print(df.dropna())          # 删除含缺失值的行
print(df.fillna(0))         # 用 0 填充缺失值
# 用均值填充
print(df['score'].fillna(df['score'].mean())) 

相关文档:

Python pandas DataFrame 行列使用常用操作

Python pandas DataFrame 行列的常用操作及运算

推荐文档