Skip to content

一套命名规律:read_xxx / to_xxx ​

Pandas 提供了一套 API,可以方便地读取和写入各类数据文件(csv、Excel、数据库、网络数据等):

方向方法例子
读取read_xxxpd.read_csv()、pd.read_excel()
写入to_xxxdf.to_csv()、df.to_excel()

流程上的位置:读取 → 清洗处理 → 分析 → 写出。

读取 + 计算 + 写出的完整例子 ​

python
import pandas as pd

# 读取数据 --> read_csv
df = pd.read_csv('data/sales.csv', usecols=['订单号', '产品类别', '产品名称', '销售数量', '单价'])

# 数据处理:新增一列(销售金额 = 销售数量 × 单价)
df['销售金额'] = df['销售数量'] * df['单价']

# 写入数据 --> to_csv;index=False 表示不写入索引列
df.to_csv('data/sales_01.csv', index=False)

read_csv 常用参数 ​

参数作用
usecols=['列1', '列2']只读取需要的列
index_col='订单号'指定某一列作为行索引
nrows=10只读前 n 行(试读大文件时好用)
dtype={'年份': 'Int64'}指定某列的读取类型(Int64 支持空值)

to_csv 常用参数 ​

参数作用
index=False不写入索引列(最常用,否则文件里会多出一列行号)
encoding='utf-8'指定编码

TIP

df['新列名'] = 表达式 是 Pandas 里新增列的标准写法:右边是整列的运算(df['销售数量'] * df['单价'] 会把每一行对应相乘),不需要写循环。

相关 ​

练习题 ​

一、知识回顾(读完直接做下面的实践题) ​

  1. 读取数据的方法是 read_xxx,写入是 to_xxx(如 to_csv)
  2. 读 CSV:pd.read_csv('data/sales.csv');只读需要的列用参数 usecols
  3. 指定某列当行索引用参数 index_col;只读前 n 行用参数 nrows
  4. 新增一列"销售金额":df['销售金额'] = df['销售数量'] * df['单价']
  5. 写出 CSV:df.to_csv('data/sales_01.csv', index=False)
  6. index=False 的作用是不把索引列写进文件(否则会多出一列行号)

二、裸写题 ​

  • - 提示(先自己想,实在想不出再点开)

    一级 · 思路:读文件时就把不需要的列过滤掉,省内存 二级 · 方法:pd.read_csv(路径, usecols=[...])三级 · 骨架:df.____(5) 看前 5 行

    - 参考答案(做完再点开)

    python
    # 2-1
    import pandas as pd
    
    df = pd.read_csv('data/sales.csv', usecols=['订单号', '产品类别', '销售数量', '单价'])
    print(df.head(5))
  • - 提示(先自己想,实在想不出再点开)

    一级 · 思路:新增列 → 写出 二级 · 方法:df['销售金额'] = df['销售数量'] * df['单价'] / df.to_csv(..., index=False)三级 · 骨架:右边是整列相乘,不用写循环

    - 参考答案(做完再点开)

    python
    # 2-2
    df['销售金额'] = df['销售数量'] * df['单价']
    df.to_csv('sales_out.csv', index=False)
    print(df.head(3))
  • - 提示(先自己想,实在想不出再点开)

    一级 · 思路:读的时候直接指定索引列 二级 · 方法:pd.read_csv(路径, index_col='订单号')三级 · 骨架:print(df.index[:3].tolist())

    - 参考答案(做完再点开)

    python
    # 2-3
    import pandas as pd
    
    df2 = pd.read_csv('data/sales.csv', index_col='订单号')
    print(df2.index[:3].tolist())