好的!这是一份完整的Python Pandas库学习指南,涵盖从基础概念到实战应用的各个方面。
1. Pandas简介
Pandas是一个基于NumPy的开源Python库,专门用于数据处理与分析。其核心数据结构为Series(一维)和DataFrame(二维),可高效处理结构化数据(如CSV、Excel、SQL表)。
2. 核心数据结构
2.1 Series
- 定义:带索引的一维数组
python
import pandas as pd
s = pd.Series([1, 3, 5, 7], index=['a', 'b', 'c', 'd'])
操作:
python
print(s.values) # 输出值数组:[1 3 5 7]
print(s.index) # 输出索引:Index(['a', 'b', 'c', 'd'], dtype='object')
2.2 DataFrame
- 定义:表格型数据结构,含行索引和列标签
python
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)
输出:
Name Age
0 Alice 25
1 Bob 30
3. 数据读写
3.1 读取数据
python
# 从CSV读取
df = pd.read_csv('data.csv')
# 从Excel读取
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 从SQL数据库读取
from sqlalchemy import create_engine
engine = create_engine('sqlite:///database.db')
df = pd.read_sql('SELECT * FROM table', engine)
3.2 写入数据
python
df.to_csv('output.csv', index=False)
df.to_excel('output.xlsx', sheet_name='Results')
df.to_sql('new_table', engine, if_exists='replace')
4. 数据探索与操作
4.1 查看数据
python
df.head(3) # 前3行
df.tail() # 后5行(默认)
df.info() # 数据结构信息
df.describe() # 统计摘要(数值列)
4.2 索引与选择
python
# 选择列
df['Name'] # 单列
df[['Name', 'Age']] # 多列
# 选择行
df.iloc[0] # 第0行(位置索引)
df.loc[df['Age'] > 25] # 条件筛选
# 设置索引
df.set_index('Name', inplace=True)
5. 数据清洗
5.1 处理缺失值
python
# 检测缺失值
df.isnull().sum()
# 填充缺失值
df['Age'].fillna(df['Age'].mean(), inplace=True)
# 删除缺失值
df.dropna(subset=['Age'], inplace=True)
5.2 数据类型转换
python
df['Date'] = pd.to_datetime(df['Date'])
df['Price'] = df['Price'].astype(float)
5.3 去重
python
df.drop_duplicates(subset=['Email'], keep='last')
6. 数据合并与重塑
6.1 合并
python
# 纵向合并
pd.concat([df1, df2], axis=0)
# 横向合并
pd.merge(left=df1, right=df2, on='key', how='inner')
6.2 重塑
python
# 透视表
pivot_df = df.pivot_table(values='Sales', index='Region', columns='Month', aggfunc='sum')
7. 分组与聚合
python
# 分组统计
grouped = df.groupby('Department')
grouped['Salary'].mean()
# 多维度聚合
df.groupby(['Year', 'Category'])['Revenue'].agg(['sum', 'mean', 'count'])
8. 时间序列处理
python
# 时间索引
df = df.set_index('Timestamp')
# 重采样
daily_sales = df['Sales'].resample('D').sum()
# 移动平均
df['MA_7'] = df['Price'].rolling(window=7).mean()
9. 数据可视化(整合Matplotlib)
python
import matplotlib.pyplot as plt
df.plot(kind='line', x='Date', y='Price')
plt.title('价格趋势')
plt.show()
10. 实战案例:销售数据分析
python
# 加载数据
sales = pd.read_csv('sales_data.csv')
# 数据清洗
sales = sales.dropna()
sales['Date'] = pd.to_datetime(sales['Date'])
# 月度销售额分析
monthly_sales = sales.groupby(sales['Date'].dt.to_period('M'))['Amount'].sum()
# 可视化
monthly_sales.plot(kind='bar')
plt.ylabel('销售额(万元)')
plt.title('月度销售趋势')
11. 高级技巧
- 向量化操作 :避免循环,使用
df.apply()或NumPy函数 - 性能优化 :使用
df.eval()或pd.eval()加速计算 - 分类数据 :
df['Category'] = df['Category'].astype('category')
12. 学习资源
- 官方文档 :pandas.pydata.org
- 书籍:《Python for Data Analysis》(Wes McKinney)
- 练习数据集:Kaggle、UCI Machine Learning Repository
掌握这些内容后,你将能高效处理90%的日常数据分析任务!建议通过实际项目(如电商分析、金融数据建模)深化技能。