← 返回首页
🤖

Pandas数据处理

📂 ai ⏱ 2 min 316 words

Pandas数据处理

Pandas是Python中最强大的数据处理库,它提供了高效、灵活的数据结构,使得数据清洗、转换和分析变得简单直观。

Series与DataFrame基础

Pandas的两个核心数据结构是Series(一维)和DataFrame(二维)。

import pandas as pd
import numpy as np

# Series创建
s = pd.Series([1, 3, 5, 7, 9], index=['a', 'b', 'c', 'd', 'e'])
print(f"Series:\n{s}")

# DataFrame创建
df = pd.DataFrame({
    '姓名': ['张三', '李四', '王五', '赵六'],
    '年龄': [25, 30, 35, 28],
    '部门': ['技术', '市场', '技术', '销售']
})
print(f"DataFrame:\n{df}")
print(f"形状: {df.shape}")
print(f"列名: {df.columns.tolist()}")

数据读取与写入

Pandas支持多种格式的数据读写。

# 读取CSV
# df = pd.read_csv('data.csv', encoding='utf-8')

# 从字典创建
data = {
    '产品': ['A', 'B', 'C', 'D', 'E'],
    '销量': [100, 150, 200, 120, 180],
    '价格': [10.5, 20.3, 15.7, 8.9, 25.1]
}
df = pd.DataFrame(data)

# 写入Excel
# df.to_excel('output.xlsx', index=False)

print(f"前3行:\n{df.head(3)}")
print(f"\n统计描述:\n{df.describe()}")

数据选择与过滤

Pandas提供了多种方式选择数据。

df = pd.DataFrame({
    '姓名': ['张三', '李四', '王五', '赵六'],
    '年龄': [25, 30, 35, 28],
    '薪资': [8000, 12000, 15000, 9000],
    '部门': ['技术', '市场', '技术', '销售']
})

# 选择列
print(f"姓名列:\n{df['姓名']}")
print(f"多列选择:\n{df['姓名', '薪资'](/notes/-)}")

# 条件筛选
tech_df = df[df['部门'] == '技术']
print(f"技术部门:\n{tech_df}")

high_salary = df[df['薪资'] > 10000]
print(f"高薪资员工:\n{high_salary}")

# 组合条件
result = df[(df['部门'] == '技术') & (df['年龄'] > 25)]
print(f"技术部门且年龄>25:\n{result}")

数据清洗

数据清洗是数据分析中最耗时但最重要的步骤。

df = pd.DataFrame({
    '姓名': ['张三', '李四', None, '赵六', '钱七'],
    '年龄': [25, np.nan, 35, 28, 40],
    '薪资': [8000, 12000, None, 9000, None],
    '部门': ['技术', '市场', '技术', '', '销售']
})

print("缺失值统计:")
print(df.isnull().sum())

# 填充缺失值
df['姓名'] = df['姓名'].fillna('未知')
df['年龄'] = df['年龄'].fillna(df['年龄'].median())
df['薪资'] = df['薪资'].fillna(df['薪资'].mean())

# 替换空字符串
df['部门'] = df['部门'].replace('', '未分配')

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

print(f"\n清洗后数据:\n{df}")

数据聚合与分组

GroupBy是Pandas中最强大的功能之一。

sales_df = pd.DataFrame({
    '日期': ['2024-01', '2024-01', '2024-02', '2024-02', '2024-03', '2024-03'],
    '区域': ['东', '西', '东', '西', '东', '西'],
    '销售额': [10000, 8000, 12000, 9500, 15000, 11000],
    '利润': [2000, 1500, 2500, 1800, 3000, 2200]
})

# 按区域分组聚合
region_summary = sales_df.groupby('区域').agg({
    '销售额': 'sum',
    '利润': ['sum', 'mean']
})
print(f"区域汇总:\n{region_summary}")

# 按日期和区域分组
pivot = sales_df.pivot_table(
    values='销售额',
    index='日期',
    columns='区域',
    aggfunc='sum'
)
print(f"\n透视表:\n{pivot}")

数据合并

Pandas提供了类似SQL的合并操作。

employees = pd.DataFrame({
    '员工ID': [1, 2, 3, 4],
    '姓名': ['张三', '李四', '王五', '赵六'],
    '部门ID': [101, 102, 101, 103]
})

departments = pd.DataFrame({
    '部门ID': [101, 102, 103],
    '部门名称': ['技术', '市场', '销售']
})

merged = pd.merge(employees, departments, on='部门ID')
print(f"合并结果:\n{merged}")

# 拼接
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
concatenated = pd.concat([df1, df2], ignore_index=True)
print(f"\n拼接结果:\n{concatenated}")

Pandas是数据科学工作流的核心工具,熟练掌握将大幅提升数据分析效率。建议结合实际数据集进行练习。