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())