🎯 学习目标

  • 掌握Series和DataFrame的使用
  • 学会数据读取与写入
  • 掌握数据清洗与转换
  • 了解数据聚合与分组操作

📊 Series与DataFrame

Series - 一维数据

import pandas as pd # 创建Series s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e']) print(s['a']) # 1 print(s[1:3]) # b:2, c:3 # 属性 print(s.values) # 数组 print(s.index) # 索引 print(s.dtype) # 数据类型

DataFrame - 二维表格

import pandas as pd # 创建DataFrame df = pd.DataFrame({ 'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'city': ['NY', 'LA', 'SF'] }) print(df.head()) # 前5行 print(df.shape) # (3, 3) print(df.columns) # 列名 print(df.dtypes) # 各列类型

📁 数据读取与写入

import pandas as pd # CSV文件 df = pd.read_csv('data.csv') df.to_csv('output.csv', index=False) # Excel文件 df = pd.read_excel('data.xlsx', sheet_name='Sheet1') df.to_excel('output.xlsx', index=False) # JSON文件 df = pd.read_json('data.json') df.to_json('output.json', orient='records') # SQL数据库 from sqlalchemy import create_engine engine = create_engine('sqlite:///database.db') df = pd.read_sql('SELECT * FROM users', engine) df.to_sql('users', engine, if_exists='replace') # Parquet(大数据推荐) df = pd.read_parquet('data.parquet') df.to_parquet('output.parquet')

🔍 数据选择与过滤

df = pd.DataFrame({ 'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [25, 30, 35, 28], 'salary': [50000, 60000, 70000, 55000] }) # 选择列 print(df['name']) print(df[['name', 'age']]) # 选择行 print(df.loc[0]) # 按标签 print(df.iloc[0]) # 按位置 print(df.loc[0:2, ['name', 'age']]) # 条件过滤 print(df[df['age'] > 28]) print(df[(df['age'] > 25) & (df['salary'] > 55000)]) # 查询方法 print(df.query('age > 28 and salary > 60000'))

🧹 数据清洗

缺失值处理

# 检测缺失值 print(df.isnull().sum()) # 删除缺失值 df_clean = df.dropna() df_clean = df.dropna(subset=['age']) # 填充缺失值 df_filled = df.fillna(0) df_filled = df.fillna({'age': 0, 'name': 'Unknown'}) df_filled = df['age'].fillna(df['age'].mean())

重复值处理

# 检测重复 print(df.duplicated().sum()) # 删除重复 df_unique = df.drop_duplicates() # 按列去重 df_unique = df.drop_duplicates( subset=['name'], keep='first' # 保留第一个 )

📈 分组与聚合

df = pd.DataFrame({ 'department': ['IT', 'HR', 'IT', 'HR', 'IT'], 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'salary': [70000, 50000, 80000, 55000, 75000] }) # 分组聚合 result = df.groupby('department').agg({ 'salary': ['mean', 'sum', 'count'], 'name': 'count' }) # 多层分组 result = df.groupby(['department', 'name']).sum() # 自定义聚合 result = df.groupby('department').agg( avg_salary=('salary', 'mean'), total=('salary', 'sum'), count=('salary', 'count') ) # 转换 df['dept_avg'] = df.groupby('department')['salary'].transform('mean')

📝 本节小结

  • • DataFrame是Pandas的核心数据结构
  • • 支持多种数据格式的读写
  • • 提供强大的数据清洗功能
  • • groupby实现类似SQL的聚合操作