原创 Nicholas与Pypi Nicholas与Pypi 2025年5月27日 15:13 广东

图片

适用场景

  • 快速导入文本/Excel数据 → Pandas

  • 读取大型数值数据 → Numpy

  • 处理复杂二进制文件 → h5py/scipy.io

  • 数据库交互 → SQLAlchemy + Pandas


一、数据导入
1. 通用基础
  • 库声明:

    import numpy as np  
    import pandas as pd
2. 文本文件
  • 原生读写

    file = open('huck_finn.txt', 'r')  
    text = file.read()  # 读取全部内容  
    file.close()        # 关闭文件  
    print(file.closed)   # 检查是否关闭  

    上下文管理器(推荐)

    with open('huck_finn.txt', 'r') as file:  
        print(file.readline())  # 逐行读取
  • Numpy 导入

    • 单数据类型:

      data = np.loadtxt('mnist.txt', delimiter=',', skiprows=2, usecols=[0,2], dtype=str)
    • 多数据类型:

      data = np.genfromtxt('titanic.csv', delimiter=',', names=True, dtype=None)  
      data = np.recfromcsv('titanic.csv')  # 等效简写
  • Pandas 导入

    data = pd.read_csv(  
        'winequality-red.csv',  
        nrows=5,           # 读取前5行  
        header=None,       # 无列名  
        sep='\t',          # Tab分隔  
        comment='#',       # 注释标识符  
        na_values=[""]     # 定义缺失值  
    )  
3. Excel文件
file = 'urbanpop.xlsx'  
data = pd.ExcelFile(file)  
df_sheet2 = data.parse('1960-1966', skiprows=[0], names=['Country', 'AAM: War(2002)'])  
sheet_names = data.sheet_names  # 获取所有sheet名称
4. 统计软件文件
  • SAS:

    from sas7bdat import SAS7BDAT  
    with SAS7BDAT('urbanpop.sas7bdat') as file:  
        df_sas = file.to_data_frame()  
  • Stata:

    data = pd.read_stata('urbanpop.dta')  
5. 关系型数据库
  • 连接与查询:

    from sqlalchemy import create_engine  
    engine = create_engine('sqlite:///Northwind.sqlite')  
    table_names = engine.table_names()  # 获取所有表名
    
    # 手动查询  
    with engine.connect() as con:  
        rs = con.execute("SELECT OrderID FROM Orders")  
        df = pd.DataFrame(rs.fetchmany(size=5))  
        df.columns = rs.keys()  
        
    # Pandas直接查询  
    df = pd.read_sql_query("SELECT * FROM Orders", engine)  
6. 二进制文件
  • Pickle:

    import pickle  
    with open('pickled_fruit.pkl', 'rb') as file:  
        pickled_data = pickle.load(file)  
  • HDF5:

    import h5py  
    data = h5py.File('filename.hdf5', 'r')  
    # 结构查看  
    print(data.keys())  
    print(data['meta']['Description'].value)  # 提取元数据
  • Matlab:

    import scipy.io  
    mat = scipy.io.loadmat('workspace.mat')  

二、数据探索
1. Numpy数组
data_array.dtype    # 数据类型  
data_array.shape    # 维度 (行, 列)  
len(data_array)     # 数组长度
2. Pandas DataFrame
df.head()        # 前5行  
df.tail(3)       # 后3行  
df.index         # 查看索引  
df.columns       # 查看列名  
df.info()        # 各列详细信息 (数据类型、非空值数量)  
data_array = df.values  # 转为Numpy数组

三、文件系统操作
魔法命令(Jupyter)
%pwd      # 当前路径  
%ls       # 列出目录内容  
%cd ..    # 切换到上级目录
os模块
import os  
os.getcwd()         # 当前工作目录  
os.listdir()        # 目录内容列表  
os.chdir('/path')   # 切换路径  
os.rename('old.txt', 'new.txt')  # 重命名  
os.mkdir('newdir')  # 创建目录  
os.remove('file.txt')  # 删除文件  

四、关键注意事项
  1. 上下文管理器:优先使用 with open(...) 管理资源,避免手动关闭文件。

  2. 大文件读取:使用 nrows 或 chunksize 分块读取,减少内存消耗。

  3. 缺失值处理:定义 na_values 参数以正确识别缺失值。

  4. 结构化数据:

    • Numpy的 genfromtxt 适合混合数据类型。

    • Pandas的 read_csv 更适合表格数据(自动处理列名、索引)。

“无他,惟手熟尔”!有需要的用起来!

更多推荐