Python中的数据导入与查询
·
原创 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') # 删除文件
四、关键注意事项
-
上下文管理器:优先使用
with open(...)管理资源,避免手动关闭文件。 -
大文件读取:使用
nrows或chunksize分块读取,减少内存消耗。 -
缺失值处理:定义
na_values参数以正确识别缺失值。 -
结构化数据:
-
Numpy的
genfromtxt适合混合数据类型。 -
Pandas的
read_csv更适合表格数据(自动处理列名、索引)。
-
“无他,惟手熟尔”!有需要的用起来!

更多推荐


所有评论(0)