Pandas 数据分析

数据结构

import pandas as pd
import numpy as np

# Series — 一维数组
s = pd.Series([1, 3, 5, 7], index=['a', 'b', 'c', 'd'])

# DataFrame — 二维表格
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'salary': [50000, 60000, 70000]
})

数据读取

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

# Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# JSON
df = pd.read_json('data.json')

# SQL
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://user:pass@localhost/db')
df = pd.read_sql('SELECT * FROM users', engine)

数据筛选

# 选择列
df['name']
df[['name', 'age']]

# 条件筛选
df[df['age'] > 30]
df.query('age > 30 and salary > 55000')

# 位置筛选
df.iloc[0:3]      # 前3行
df.loc[df['age'] > 30, ['name', 'salary']]

数据处理

# 新增列
df['bonus'] = df['salary'] * 0.1

# 应用函数
df['age_group'] = df['age'].apply(lambda x: '青年' if x < 30 else '中年')

# 分组聚合
df.groupby('department')['salary'].agg(['mean', 'sum', 'count'])

# 排序
df.sort_values('salary', ascending=False)

# 合并
pd.merge(df1, df2, on='user_id', how='left')
pd.concat([df1, df2], axis=0)

缺失值处理

# 检测
df.isnull().sum()

# 删除
df.dropna()

# 填充
df.fillna(0)
df.fillna(df.mean())
df['age'].fillna(df['age'].median())