第一章:Pandas 基础
1. Pandas 简介
Pandas 是 Python 中用于数据处理和分析的核心库,核心数据结构是 Series
(一维数据)和 DataFrame
(二维表格)。
安装方法:
pip install pandas
2. 核心数据结构:Series 和 DataFrame
2.1 Series(一维数据)
-
创建 Series:通过列表和索引(索引可以是数字、字符串等)。
import pandas as pd # 创建 Series data = [3, 5, 7, 9] index = ['a', 'b', 'c', 'd'] s = pd.Series(data=data, index=index) print(s)
输出:
a 3 b 5 c 7 d 9 dtype: int64
-
访问数据:
print(s['b']) # 输出 5(通过标签) print(s.iloc[1]) # 输出 5(通过位置)
2.2 DataFrame(二维表格)
-
创建 DataFrame:通过字典或列表嵌套。
# 通过字典创建 data = { '姓名': ['小明', '小红', '小刚'], '年龄': [18, 19, 20], '成绩': [90, 85, 88] } df = pd.DataFrame(data, columns=['姓名', '年龄', '成绩']) print(df)
输出:
姓名 年龄 成绩 0 小明 18 90 1 小红 19 85 2 小刚 20 88
-
自定义索引:
df = pd.DataFrame(data, index=['S1', 'S2', 'S3'])
3. 数据读取与保存
Pandas 支持多种数据格式的读取和保存。
3.1 读取 CSV 文件
# 假设有一个 data.csv 文件,内容如下:
# 姓名,年龄,成绩
# 小明,18,90
# 小红,19,85
df = pd.read_csv('data.csv')
print(df.head())
3.2 保存为 Excel
df.to_excel('output.xlsx', index=False) # index=False 表示不保存行索引
4. 数据查看与统计
4.1 基础查看方法
print(df.head(2)) # 查看前2行
print(df.tail(1)) # 查看最后1行
print(df.shape) # 输出 (3, 3) 表示3行3列
print(df.columns) # 输出列名列表:Index(['姓名', '年龄', '成绩'], dtype='object')
4.2 数据统计
print(df.describe()) # 统计数值列的均值、标准差等
输出:
年龄 成绩
count 3.000000 3.000000
mean 19.000000 87.666667
std 1.000000 2.516611
min 18.000000 85.000000
25% 18.500000 86.500000
50% 19.000000 88.000000
75% 19.500000 89.000000
max 20.000000 90.000000
5. 数据选择与过滤
5.1 按列选择
names = df['姓名'] # 选择单列(返回 Series)
age_score = df[['年龄', '成绩']] # 选择多列(返回 DataFrame)
5.2 按行选择
-
loc[]
通过标签选择:print(df.loc['S2']) # 选择索引为 'S2' 的行 print(df.loc[df['年龄'] > 18]) # 筛选年龄大于18的行
-
iloc[]
通过位置选择:print(df.iloc[1]) # 选择第2行(位置从0开始) print(df.iloc[0:2]) # 选择第1到第2行(左闭右开)
5.3 条件过滤
# 筛选成绩大于85且年龄小于20的学生
filtered_df = df[(df['成绩'] > 85) & (df['年龄'] < 20)]
6. 数据清洗
6.1 处理缺失值
-
删除缺失值:
df.dropna() # 删除包含缺失值的行 df.dropna(axis=1) # 删除包含缺失值的列
-
填充缺失值:
df.fillna(0) # 用0填充 df.fillna(df['年龄'].mean()) # 用列的平均值填充
6.2 去重
df.drop_duplicates(subset=['姓名']) # 根据 '姓名' 列去重
7. 简单数据分析
7.1 排序
df.sort_values(by='成绩', ascending=False) # 按成绩降序排列
7.2 分组聚合
# 假设添加一列 '班级'
df['班级'] = ['A', 'B', 'A']
grouped = df.groupby('班级')['成绩'].mean() # 按班级计算平均成绩
输出:
班级
A 89.0
B 85.0
Name: 成绩, dtype: float64
8. 实例:学生成绩分析
# 读取数据
df = pd.read_csv('students.csv')
# 1. 查看前3行
print(df.head(3))
# 2. 筛选数学成绩大于80的学生
math_high = df[df['数学'] > 80]
# 3. 按班级计算平均分
class_avg = df.groupby('班级')['数学', '英语'].mean()
# 4. 保存结果
class_avg.to_excel('class_avg.xlsx')
本章总结
- 掌握
Series
和DataFrame
的创建与操作。 - 学会读取/保存数据、筛选数据、处理缺失值。
- 能够进行基础统计和分组聚合分析。