一、Pandas简介与安装
Pandas是Python数据分析的核心库,基于NumPy构建,提供Series(一维)和DataFrame(二维)两种核心数据结构,支持数据清洗、统计分析、文件读写等操作。其核心优势在于处理结构化数据的高效性与灵活性。
安装方法:
python
通过pip安装(推荐)
pip install pandas
通过清华镜像加速安装
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
二、核心数据结构
1. Series(一维数组)
- 定义:带索引的一维数组,可存储任意数据类型(整数、字符串、浮点数等)。
- 创建方式:
import pandas as pd
import numpy as np
# 通过列表创建
s1 = pd.Series([1, 3, 5, np.nan]) # NaN表示缺失值
# 通过字典创建(字典键作为索引)
s2 = pd.Series({'a': 10, 'b': 20, 'c': 30})
# 通过NumPy数组创建
arr = np.array([10, 20, 30])
s3 = pd.Series(arr, index=['x', 'y', 'z'])
- 常用属性:
- s.values:获取数据数组(NumPy格式)。
- s.index:查看索引(支持自定义标签如字符串)。
- s.dtype:数据类型(如`int64`或`object`)。
2. DataFrame(二维表格)
- 定义:二维表格型数据结构,类似Excel表格,每列可存储不同数据类型。
- 创建方式:
# 通过字典创建(键为列名,值为列表)
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data, index=['row1', 'row2'])
# 通过嵌套列表创建
data = [['Alice', 25], ['Bob', 30]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
# 通过NumPy二维数组创建
arr = np.array([[1, 2], [3, 4]])
df = pd.DataFrame(arr, columns=['A', 'B'])
- 常用属性:
- df.columns:查看列名,支持重命名(`df.columns = ['新列名1', '新列名2']`)。
- df.shape:返回维度(行数, 列数)。
- df.T:转置表格(行列互换)。
三、数据操作与语法
1. 数据筛选
- 按列筛选:
df['Name'] # 获取单列(返回Series)
df[['Name', 'Age']] # 获取多列(返回DataFrame)
- 按行筛选:
# 标签索引(loc)
df.loc['row1'] # 获取单行
df.loc[['row1', 'row2']] # 获取多行
# 位置索引(iloc)
df.iloc[0] # 获取第一行
df.iloc[0:2] # 获取前两行(含头不含尾)
# 布尔索引
df[df['Age'] > 25] # 筛选年龄大于25的行
2. 数据处理
- 类型转换:
df['Age'] = df['Age'].astype(float) # 转为浮点型
df['Date'] = pd.to_datetime(df['Date']) # 字符串转日期
- 缺失值处理:
df.dropna() # 删除含缺失值的行
df.fillna(0) # 用0填充缺失值
df['列名'].fillna(df['列名'].mean()) # 用均值填充
- 删除行列:
df.drop('Age', axis=1) # 删除列
df.drop(['row1', 'row2']) # 删除行
3. 数据聚合与统计
- 分组统计:
grouped = df.groupby('班级')
grouped['分数'].mean() # 按班级计算平均分
- 描述性统计:
df.describe() # 输出各列的统计摘要(均值、标准差等)
df['分数'].max() # 最大值
df.corr() # 计算列之间的相关系数矩阵
四、文件读写
1. 读取数据
# 读取CSV文件
df = pd.read_csv('data.csv', encoding='utf-8')
# 读取Excel文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 读取无列名的TXT文件
df = pd.read_table('data.txt', header=None)
2. 保存数据
df.to_csv('output.csv', index=False) # 不保存索引
df.to_excel('output.xlsx', sheet_name='Results')
五、实战案例:学生成绩分析
# 创建数据
data = {
'姓名': ['张三', '李四', '王五'],
'班级': ['1班', '1班', '2班'],
'分数': [90, 85, 78]
}
df = pd.DataFrame(data)
# 按班级计算平均分
avg_score = df.groupby('班级')['分数'].mean()
print(avg_score)
```
**输出**:
```
班级
1班 87.5
2班 78.0
总结
Pandas的核心在于灵活处理结构化数据,从基础操作(如数据筛选、类型转换)到高级分析(如分组聚合、透视表),需通过实际项目练习巩固。建议结合代码示例与官方文档,逐步掌握数据清洗、合并、可视化等全流程技能。