百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

Python中的数据导入与查询_python如何导入数据文件

wptr33 2025-09-01 15:50 8 浏览

适用场景

  • 快速导入文本/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. 大文件读取:使用 nrowschunksize 分块读取,减少内存消耗。
  3. 缺失值处理:定义 na_values 参数以正确识别缺失值。
  4. 结构化数据:
  5. Numpy的 genfromtxt 适合混合数据类型。
  6. Pandas的 read_csv 更适合表格数据(自动处理列名、索引)。

相关推荐

如何在Linux系统中安装Docker?_如何在Linux系统中安装软件

在这篇博客中,我将引导您通过简单的步骤完成安装Docker的过程,安装docker只是小菜一碟,你只需要运行几条命令就大功告成了!...

我用Docker安装FastDFS,再也不用头疼那些错误提示了

在这里插入图片描述FastDFS的安装我们还是通过Docker来安装实现吧,直接在Linux上还装还是比较繁琐的,但就学习而言Docker安装还是非常高效的。Docker环境请自行安装哦,不清楚的...

01背包问题的js解决方式_背包算法java

如果你有兴趣看这个相信你已经对背包问题有所了解,所以关于背包问题的描述,我就不写了。...

净现值函数_净现值函数名词解释

此页面特定于Office2010的VisualBasicforApplications(VBA)语言参考。返回一个Double,指定基于一系列定期现金流(付款和收款)和贴现率的投资的...

Excel 数据分组双利器:GROUPBY 与 FREQUENCY 函数详解

这是一篇关于Excel中GROUPBY和FREQUENCY函数的详细教学教程。这两个函数都用于数据分组统计,但它们的应用场景、功能和用法有显著不同。第一部分:强大的新函数——GROUP...

熬夜7天,我总结了JavaScript与ES的25个知识点

前言说起JavaScript,大家都知道是一门脚本语言。那么ES是什么鬼呢?ES全称ECMAScript,是JavaScript语言的国际标准。最近,我总结了25条JavaScript的基础特性相关...

傻傻分不清楚的点积与矩阵乘法 Part3

作者:MinkyungKang...

Python中的数据导入与查询_python如何导入数据文件

适用场景...

10个JavaScript一行代码,解决90%的开发难题

在JavaScript开发过程中,我们经常会遇到一些看似复杂但实际上可以通过简洁的代码解决的问题。下面分享10个JavaScript一行代码技巧,解决日常开发中的常见难题。...

提高 PHP 代码质量的 36 计_php代码调试心得

1.不要使用相对路径常常会看到:require_once('../../lib/some_class.php');该方法有很多缺点:...

PHP替换字符串关键词长词优先函数

如何实现phpstr_replace替换关键词,如何控制长词优先,也不难,我就写了个这样的函数。functionmyreplace($string,$replaces){...

PHP 中数组是如何灵活支持多数据类型的?

hello,大家好,我是张张,「架构精进之路」公号作者。...

3分钟短文 | PHP判断null,别再 == 了,你真控制不住

引言PHP程序中很多地方会用到判断是否为空,比如字符串为空,数组为空,对象为空,或者其他数据类型为默认空值。今天我们说一下判断null的两种方法的区别。一般可以使用is_null函数,判断变...

C#基础:ref 参数_c# ref和out参数的区别

例在下面,我们定义了ref方法的语法。ref方法具有retrun类型,例如int、float或string,以及一个methodName,它可以是方法的任何合适名称,我们定义了参数...

「C#.NET 拾遗补漏」05:操作符的几个骚操作

阅读本文大概需要1分钟。大家好,这是极客精神【C#.NET拾遗补漏】专辑的第5篇文章,今天要讲的内容是操作符。操作符的英文是Operator,在数值计算中习惯性的被叫作运算符,所以在中文的...