Python 数据分析入门:Pandas 实战笔记

前言

数据分析已经成为当今技术领域的重要技能。上周利用周末时间处理了一份真实的 CSV 数据,发现 Pandas 库在数据清洗方面的效率真的很强大。本文将分享我在使用 Pandas 处理数据时遇到的一些常见问题和解决方案。

一、Pandas 基础介绍

Pandas 是 Python 中最强大的数据分析库,提供了 DataFrame 和 Series 两种主要数据结构,可以方便地进行数据的读取、清洗、转换和分析。

1.1 安装 Pandas

pip install pandas numpy matplotlib

1.2 基本导入

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

二、数据读取与基本操作

2.1 读取 CSV 文件

# 读取 CSV 文件
df = pd.read_csv('data.csv')

# 查看前几行
print(df.head())

# 查看数据信息
print(df.info())

# 查看统计信息
print(df.describe())

2.2 查看数据形状

# 获取行数和列数
print(df.shape)  # 输出: (1000, 5)

# 获取列名
print(df.columns)

# 获取数据类型
print(df.dtypes)

三、数据清洗

3.1 处理缺失值

缺失值是数据分析中最常见的问题。以下是几种常用的处理方法:

# 检查缺失值
print(df.isnull().sum())

# 删除包含缺失值的行
df_clean = df.dropna()

# 删除全为缺失值的列
df_clean = df.dropna(axis=1, how='all')

# 用指定值填充缺失值
df['age'].fillna(df['age'].mean(), inplace=True)

# 用前向填充
df.fillna(method='ffill', inplace=True)

3.2 数据类型转换

# 查看数据类型
print(df.dtypes)

# 转换数据类型
df['age'] = df['age'].astype('int32')
df['salary'] = df['salary'].astype('float64')

# 转换为日期格式
df['date'] = pd.to_datetime(df['date'])

3.3 去除重复数据

# 检查重复行
print(df.duplicated().sum())

# 删除重复行
df_unique = df.drop_duplicates()

# 基于特定列删除重复
df_unique = df.drop_duplicates(subset=['id'], keep='first')

四、数据透视与聚合

4.1 数据透视表

# 创建透视表
pivot_table = df.pivot_table(
    values='salary',
    index='department',
    columns='gender',
    aggfunc='mean'
)
print(pivot_table)

4.2 分组聚合

# 按部门分组,计算平均工资
avg_salary = df.groupby('department')['salary'].mean()

# 多重聚合
summary = df.groupby('department').agg({
    'salary': ['mean', 'max', 'min'],
    'age': 'mean'
})
print(summary)

4.3 排序

# 按单个列排序
df_sorted = df.sort_values('salary', ascending=False)

# 按多个列排序
df_sorted = df.sort_values(['department', 'salary'], 
                           ascending=[True, False])

五、数据选取与过滤

5.1 列选取

# 选取单个列
salary_col = df['salary']

# 选取多个列
df_subset = df[['name', 'age', 'salary']]

5.2 行过滤

# 条件过滤
high_salary = df[df['salary'] > 10000]

# 多条件过滤
result = df[(df['age'] > 25) & (df['salary'] > 8000)]

# 使用 isin 过滤
depts = df[df['department'].isin(['HR', 'IT'])]

六、实战案例:数据分析流程

以下是一个完整的数据分析流程示例:

# 1. 读取数据
df = pd.read_csv('employees.csv')

# 2. 数据探索
print(f"数据形状: {df.shape}")
print(f"缺失值数量: {df.isnull().sum().sum()}")

# 3. 数据清洗
df = df.dropna()
df['salary'] = pd.to_numeric(df['salary'], errors='coerce')
df = df[df['salary'] > 0]

# 4. 数据分析
salary_by_dept = df.groupby('department')['salary'].agg(['mean', 'std', 'count'])
print(salary_by_dept)

# 5. 可视化
plt.figure(figsize=(10, 6))
salary_by_dept['mean'].plot(kind='bar')
plt.title('各部门平均工资')
plt.xlabel('部门')
plt.ylabel('工资')
plt.tight_layout()
plt.show()

七、常见坑与解决方案

总结

Pandas 是 Python 数据分析的核心库,熟练掌握其基本操作对于数据分析工作至关重要。本文介绍了 Pandas 的常见用法和最佳实践,希望能帮助你快速上手数据分析。在实际工作中,多练习和尝试不同的方法,才能真正掌握这个强大的工具。

标签: Python Pandas 数据分析 CSV 数据清洗