Pandas 库之 DataFrame
Pandas
是一个强大的 Python 数据分析库,它提供了高效的数据结构和数据分析工具。DataFrame
是 Pandas 中最重要的数据结构之一,广泛用于存储和处理结构化数据。DataFrame
是一个二维的表格型数据结构,类似于数据库中的表、Excel 工作表或 SQL 查询结果。
1. DataFrame 简介
DataFrame
是一个由行和列组成的表格数据结构,类似于电子表格或 SQL 表。每列可以包含不同类型的数据(整数、浮点数、字符串等)。DataFrame
是 Pandas 中最常用的数据结构之一,广泛应用于数据清洗、数据转换、数据分析和机器学习等领域。
2. 创建 DataFrame
2.1 从字典创建 DataFrame
最常见的方式之一是通过字典创建 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)
输出:
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
2.2 从列表创建 DataFrame
可以将列表嵌套在另一个列表中,指定列名称来创建 DataFrame
。
data = [
['Alice', 25, 'New York'],
['Bob', 30, 'Los Angeles'],
['Charlie', 35, 'Chicago']
]
df = pd.DataFrame(data, columns=['Name', 'Age', 'City'])
print(df)
输出:
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
2.3 从 Numpy 数组创建 DataFrame
如果你有一个 Numpy 数组,也可以将其转换为 DataFrame
。
import numpy as np
data = np.array([
['Alice', 25, 'New York'],
['Bob', 30, 'Los Angeles'],
['Charlie', 35, 'Chicago']
])
df = pd.DataFrame(data, columns=['Name', 'Age', 'City'])
print(df)
输出:
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
2.4 从 CSV 文件加载 DataFrame
你可以直接从 CSV 文件加载数据到 DataFrame
。
df = pd.read_csv('data.csv')
print(df)
3. DataFrame 操作
3.1 查看数据
head()
:查看前 n 行数据,默认是 5 行。tail()
:查看后 n 行数据,默认是 5 行。
print(df.head()) # 查看前 5 行
print(df.tail(3)) # 查看最后 3 行
3.2 访问列
可以通过列名访问 DataFrame
的列数据。
print(df['Name']) # 访问 "Name" 列
也可以使用 df.column
访问列。
print(df.Name)
3.3 访问行
使用 loc[]
和 iloc[]
可以访问行:
loc[]
:按标签访问。iloc[]
:按位置访问。
print(df.loc[0]) # 按标签访问第一行
print(df.iloc[1]) # 按位置访问第二行
3.4 选择特定的行和列
通过 loc[]
或 iloc[]
可以选择特定的行和列。
# 选择第 1 行,第 2 列
print(df.iloc[0, 1])
# 选择 Name 列,Age 列的前两行
print(df.loc[:1, ['Name', 'Age']])
3.5 修改数据
可以直接修改 DataFrame
中的值。
df.loc[0, 'Age'] = 26 # 修改第一行的 Age 值
print(df)
3.6 添加列
使用 DataFrame
中的列名,可以添加新列。
df['Country'] = ['USA', 'USA', 'USA']
print(df)
3.7 删除列
可以使用 drop()
删除列。
df = df.drop('Country', axis=1) # axis=1 表示删除列
print(df)
3.8 删除行
可以使用 drop()
删除指定行。
df = df.drop(0, axis=0) # 删除第一行
print(df)
3.9 排序数据
可以使用 sort_values()
对数据进行排序。
df = df.sort_values(by='Age', ascending=False) # 按 Age 列降序排序
print(df)
3.10 处理缺失值
可以使用 fillna()
填充缺失值,或者使用 dropna()
删除含有缺失值的行。
df['Age'] = df['Age'].fillna(df['Age'].mean()) # 使用均值填充缺失值
df = df.dropna() # 删除含有缺失值的行
3.11 条件过滤
使用布尔索引对 DataFrame
进行条件过滤。
df_filtered = df[df['Age'] > 30] # 选择 Age 大于 30 的行
print(df_filtered)
4. 数据聚合
4.1 groupby()
分组操作
groupby()
用于根据某些列对数据进行分组,并对每个分组执行聚合操作。
df = pd.DataFrame({
'City': ['New York', 'Los Angeles', 'New York', 'Chicago'],
'Age': [25, 30, 35, 40],
'Salary': [100000, 120000, 130000, 110000]
})
grouped = df.groupby('City')
print(grouped['Salary'].mean()) # 根据 City 分组,计算每个城市的平均工资
4.2 agg()
聚合函数
使用 agg()
可以同时对多个列应用不同的聚合函数。
agg_result = df.groupby('City').agg({
'Age': 'mean', # 计算每个城市的平均年龄
'Salary': 'sum' # 计算每个城市的总工资
})
print(agg_result)
5. 常用的 DataFrame 方法
df.shape
:返回DataFrame
的形状(行数和列数)。df.info()
:显示DataFrame
的简要信息(列名、数据类型、非空值数量等)。df.describe()
:返回数据的统计摘要,包括均值、标准差、最小值、最大值等。df.to_csv()
:将DataFrame
导出为 CSV 文件。df.to_excel()
:将DataFrame
导出为 Excel 文件。
6. 总结
Pandas
中的 DataFrame
是一个功能强大的数据结构,用于存储和处理表格数据。通过 DataFrame
,你可以方便地进行数据清洗、分析、汇总、统计等操作,尤其在数据科学和机器学习中,DataFrame
是不可或缺的重要工具。
发表回复