Pandas 数据结构 - DataFrame详解

DataFrame 是 Pandas 库中最常用且最重要的数据结构之一,它可以看作是一个二维的表格型数据结构,类似于 Excel 表格或 SQL 数据库中的表。下面从多个方面对 DataFrame 进行详细介绍。

1. 创建 DataFrame

从字典创建

 
import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)

在这个例子中,字典的键成为了 DataFrame 的列名,字典的值是列表,这些列表中的元素对应列中的数据。

从列表的列表创建

data = [
    ['Alice', 25, 'New York'],
    ['Bob', 30, 'Los Angeles'],
    ['Charlie', 35, 'Chicago']
]
columns = ['Name', 'Age', 'City']
df = pd.DataFrame(data, columns=columns)
print(df)

这里使用了列表的列表来表示数据,同时通过 columns 参数指定了列名。

从 CSV 文件创建

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

read_csv 函数可以从 CSV 文件中读取数据并创建 DataFrame,它还支持多种参数来处理不同格式的 CSV 文件。

2. 访问 DataFrame 数据

访问列

 
# 访问单个列
ages = df['Age']
print(ages)

# 访问多个列
subset = df[['Name', 'City']]
print(subset)

通过列名可以访问 DataFrame 中的列,返回的是 Series 对象;如果传入一个列名列表,则返回一个新的 DataFrame

访问行

# 通过位置索引访问行
first_row = df.iloc[0]
print(first_row)

# 通过标签索引访问行
# 假设设置了 'Name' 列为索引
df = df.set_index('Name')
alice_info = df.loc['Alice']
print(alice_info)

iloc 用于通过整数位置索引访问行,loc 用于通过标签索引访问行。

切片访问

# 访问前两行
first_two_rows = df[:2]
print(first_two_rows)

可以使用切片操作来访问 DataFrame 中的一部分行。

3. DataFrame 的属性

shape 属性

rows, columns = df.shape
print(f"DataFrame 有 {rows} 行,{columns} 列")

shape 属性返回一个元组,包含 DataFrame 的行数和列数。

columns 属性

print(df.columns)

columns 属性返回 DataFrame 的列名列表。

index 属性

print(df.index)

index 属性返回 DataFrame 的索引对象。

4. 数据操作

添加列

 
df['Salary'] = [50000, 60000, 70000]
print(df)

可以通过直接赋值的方式为 DataFrame 添加新的列。

删除列

df = df.drop('City', axis=1)
print(df)

drop 方法用于删除列,axis=1 表示按列操作。

修改数据

df.loc['Alice', 'Age'] = 26
print(df)

可以使用 loc 或 iloc 来修改 DataFrame 中的特定数据。

5. 数据筛选

布尔索引

filtered_df = df[df['Age'] > 30]
print(filtered_df)

通过布尔表达式可以筛选出满足条件的行。

6. 数据统计

# 计算数值列的平均值
print(df['Age'].mean())

# 计算各列的统计信息
print(df.describe())

describe 方法可以快速生成 DataFrame 中数值列的统计信息,如计数、均值、标准差等。

7. 数据排序

# 按年龄升序排序
sorted_df = df.sort_values(by='Age')
print(sorted_df)

sort_values 方法用于对 DataFrame 按指定列进行排序。

8. 缺失值处理

 
import numpy as np

# 创建包含缺失值的 DataFrame
df_with_nan = pd.DataFrame({
    'A': [1, np.nan, 3],
    'B': [4, 5, np.nan]
})

# 检查是否有缺失值
print(df_with_nan.isnull())

# 删除包含缺失值的行
df_without_nan = df_with_nan.dropna()
print(df_without_nan)

# 填充缺失值
df_filled = df_with_nan.fillna(0)
print(df_filled)

可以使用 isnull 检查缺失值,dropna 删除缺失值,fillna 填充缺失值。

DataFrame 功能强大,适用于各种数据处理和分析任务,掌握其创建、访问、操作等方法对于数据分析工作至关重要。

posted on 2025-03-17 09:38  阿陶学长  阅读(395)  评论(0)    收藏  举报