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 功能强大,适用于各种数据处理和分析任务,掌握其创建、访问、操作等方法对于数据分析工作至关重要。
浙公网安备 33010602011771号