Pandas [Python库]

Marimo_z
2025-04-18 / 0 评论 / 2 阅读 / 正在检测是否收录...

Python 的 Pandas 库是数据分析领域的核心工具,专为高效处理结构化数据而设计。
官方文档: Pandas Documentation


1. 核心数据结构

Pandas 基于两种核心数据结构:

  • Series

    • 一维带标签数组,类似字典与NumPy数组的结合。
    • 创建示例:

      import pandas as pd
      s = pd.Series([3, 5, 7], index=['a', 'b', 'c'])
    • 操作:s.values 获取数值,s.index 查看索引,支持类似字典的键值访问。
  • DataFrame

    • 二维表格,每列可以是不同类型的数据(类似Excel或SQL表)。
    • 创建示例:

      data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
      df = pd.DataFrame(data)

2. 数据读取与写入

支持多种格式,灵活处理数据源:

  • 读取数据

    df = pd.read_csv('data.csv', sep=',', encoding='utf-8')  # CSV文件
    df = pd.read_excel('data.xlsx', sheet_name='Sheet1')     # Excel文件
  • 写入数据

    df.to_csv('output.csv', index=False)  # 不保存行索引
    df.to_excel('output.xlsx')

3. 数据探索与检查

快速了解数据概况:

  • 查看数据

    df.head(3)   # 前3行
    df.tail()    # 默认后5行
    df.sample(2) # 随机抽样2行
  • 数据信息

    df.info()        # 数据类型、内存占用
    df.describe()    # 数值列统计概览(均值、标准差等)
    df['Age'].value_counts()  # 列值频次统计

4. 数据筛选与操作

灵活选择与操作数据:

  • 选择列/行

    df['Name']              # 单列 → Series
    df[['Name', 'Age']]     # 多列 → DataFrame
    df.loc[0:2, 'Name']     # 按标签选择(行0-2,列名)
    df.iloc[0:2, 0:2]       # 按位置选择(前2行,前2列)
  • 布尔索引

    df[df['Age'] > 25]                   # 筛选年龄>25的行
    df.query("Age > 25 & Name == 'Bob'")  # 类似SQL的查询语法

5. 数据清洗与转换

处理缺失值、重复数据:

  • 缺失值处理

    df.dropna(axis=0)          # 删除含缺失值的行
    df.fillna(0)               # 填充为0
    df['Age'].interpolate()    # 插值填充(如线性插值)
  • 重复值处理

    df.drop_duplicates(subset=['Name'])  # 根据列去重
  • 数据转换

    df['Age'] = df['Age'].apply(lambda x: x + 1)  # 所有年龄+1
    df['Gender'] = df['Gender'].map({'M': 'Male', 'F': 'Female'})  # 值映射

6. 数据合并与分组

高效整合与分析数据:

  • 合并数据

    pd.concat([df1, df2], axis=0)  # 纵向堆叠(行合并)
    pd.merge(df1, df2, on='key')   # 类似SQL的JOIN操作
  • 分组聚合

    grouped = df.groupby('Department')
    grouped['Salary'].mean()             # 各部门平均薪资
    grouped.agg({'Salary': ['mean', 'max'], 'Age': 'median'})  # 多列聚合

7. 时间序列处理

强大时间数据处理能力:

  • 时间转换

    df['Date'] = pd.to_datetime(df['Date'])  # 转换为时间类型
    df.set_index('Date', inplace=True)       # 设为索引
  • 重采样

    df.resample('M').mean()   # 按月重采样计算均值
    df.rolling(window=7).mean()  # 7天滑动平均

8. 数据可视化

集成Matplotlib快速绘图:

df.plot(kind='line', x='Date', y='Price')  # 折线图
df['Age'].plot(kind='hist', bins=20)       # 直方图

实战示例:销售数据分析

# 读取数据
sales = pd.read_csv('sales.csv')

# 清洗数据
sales.dropna(subset=['Revenue'], inplace=True)  # 删除收入缺失行
sales['Date'] = pd.to_datetime(sales['Date'])   # 转换日期格式

# 分析月度收入
monthly_rev = sales.resample('M', on='Date')['Revenue'].sum()

# 可视化
monthly_rev.plot(title='Monthly Revenue')
1

评论 (0)

取消