用python导入数据
大多数情况都是用Numpy和Pandas导入数据
import numpy as np
import pandas as pd
调用帮助
np.info(np.ndarray.dtype)
help(pd.read_csv)
1. 文本文件
1.1 纯文本文件
filename = 'test.txt'
file = open( filename, mode='r') # 以只读方式读取文件
text = file.read() # 读取文件内容
print( file.closed) # 查看文件是否已经关闭
file.close() # 关闭文件
print(text)
使用上下文管理器 with
with open('test.txt', 'r') as file:
print( file.readline()) # 读取一行数据
print( file.readline())
print( file.readline())
1.2 表格数据:文本文件
1.2.1 用Numpy导入文本文件
- 单数据类型文件
filename = ‘test.txt’
data = np.loadtxt( filename,
delimiter=',', # 用于分割各列值的字符
skiprows=2, # 跳过前两行
usecols=[0,2], # 读取并使用第1列和第3列
dtype=str) # 使用的数据类型
- 多数据类型文件
filename = 'titanic.csv'
data = np.genfromtxt( filename,
delimiter=',',
names=True, # 导入是查找列名
dtype=None)
data_array = np.recfromcsv( filename) # np.recfromcsv()函数dtype默认值为None
1.2.2 用Pandas导入文本文件
filename = 'test.csv' # csv文件路径
data = pd.read_csv( filename,
nrows=5, # 读取的行数
header=None, # 用哪一行做列名
sep='\t', # 用于分割各列的字符
comment='#', # 用于分割注释的字符
na_values=[""]) # 读取时,哪些值为NA/NaN
2. Excel表
file = 'test.xlsx'
data = pd.ExcelFile( file)
df_sheet2 = data.parse('1921-1949',
skiprows=[0],
names=['Country',
'AAM: War(20
df_sheet1 = data.parse(0,
parse_cols=[0],
skiprows=[0],
names=['Country'])
使用sheet_names属性访问表单名称:
data.sheet_names
3. SAS文件
from sas7bdat import SAS7BDAT
with SAS7BDAT('test.sas7bdat') as file:
df_sas = file.to_data_frame()
4. Stata文件
data = pd.read_stata('test.dta')
5. 关系型数据库文件
from sqlalchemy import create_engine
engine = create_engine('sqlite://Northwind.sqlite')
- 使用 tables_names()方法获取表名列表
table_names = engine.table_names()
5.1 查询关系型数据库
con = engine.connect()
rs = con.execute("SELECT * FROM Orders")
df = pd.DataFrame(rs.fetchall())
df.columns = rs.keys()
con.close()
- 使用上下文管理器
with engine.connect() as con:
rs = con.execute("SELECT OrderID FROM Orders")
df = pd.DataFrame(rs.fetchmany(size=5))
df.columns = rs.keys()
5.2 使用Pandas查询关系型数据库
df = pd.read_sql_query("SELECT * FROM Orders", engine)
6. 探索数据
6.1 Numpy 数组
data_array.dtype # 查看数组元素的数据类型
data_array.shape # 查看数组的维度
len(data_array) # 查看数组的长度
6.2 Pandas 数组
df.head() # 返回数据的前几行(默认是前5行)
df.tail() # 返回数据的后几行(默认是后5行)
df.index # 查看数据的索引
df.columns # 查看数据的列名
df.info() # 查看数据的各列信息
data_array = data.values # 将数据转换为Numpy数组
7. Pickled 文件
import pickle
with open('pickled_fruit.pkl', 'rb') as le:
pickled_data = pickle.load( le)
8. HDF5 文件
import h5py
filename = 'test.hdf5'
data = h5py.File( filename, 'r')
9. Matlab 文件
import scipy.io
filename = 'test.mat'
mat = scipy.io.loadmat( filename)
10. 探索字典
10.1 通过函数访问数据元素
print(mat.keys()) # 输出字典的键值列表
for key in data.keys(): # 输出字典的键值
print(key)
pickled_data.values() # 返回字典的值
print(mat.items()) # 返回由元组构成字典键值对列表
10.2 通过键访问数据
for key in data ['meta'].keys() # 探索HDF5的结构
print(key)
print(data['meta']['Description'].value) # 提取某个键值对的值
11. 探寻文件系统
11.1 魔法命令
!ls # 列出目录里子目录和文件
%cd .. # 返回上一级目录
%pwd # 返回当前目录的路径
11.2 os库
import os
path = "/usr/tmp"
wd = os.getcwd() # 将当前目录存为字符串
os.listdir(wd) # 将当前目录下的文件输出成列表
os.chdir(path) # 改变当前的工作目录
os.rename("test1.txt", "test2.txt") # 文件重命名
os.remove("test1.txt") # 删除该文件
os.mkdir("newdir") # 新建文件夹
原文作者:Learn R for Data Science Interactively
网友评论