大多数情况下,都是用 Numpy 或 Pandas 导入数据。
Pandas 数据框:
- df.head() # 返回数据框的前几行,默认为5行
- df.tail() # 返回数据框的后几行,默认为5行
- df.index # 查看数据框的索引
- df.columns # 查看数据框的列名
- df.info() # 查看数据框各列的信息
- data_array = data.values # 将数据框转换为 Numpy 数组
Numpy 数组:
- data_array.dtype # 查看数组元素的数据类型
- data_array.shape # 查看数组维度
一、文本文件
1、纯文本文件
filename = 'test.txt'
file = open(filename, mode='r') # 以只读方式读取文件
text = file.read() # 读取文件内容
print(file.closed) # 查看文件是否已经关闭
file.close() # 关闭文件
print(text)# 关闭已经文件
使用上下文管理器 with:
with open('test.txt', mode='r') as file:
print(file.readline()) # 读取一行
print(file.closed) # 查看文件是否已经关闭
print(file.closed) # 关闭已经文件
2、表格数据:文本文件
(1)用 Numpy 导入文本文件
(a)单数据类型文件
import numpy as np
filename = 'iris.txt'
data = np.loadtxt(filename,
delimiter=',', # 用于分割各列值的字符
skiprows=2, # 跳过前两行
usecols=[0, 2], # 读取并使用第1列和第3列
dtype=str) # 使用的数据类型
print(data)
(b)多数据类型文件
import numpy as np
filename = 'iris.csv'
# read the first 4 columns
data = np.genfromtxt(filename,
delimiter=',',
names=True, # 导入时查找列名
usecols=(0, 1, 2, 3)) # 读前四列
print(data.dtype) # [('sepal_length', '<f8'), ('sepal_width', '<f8'), ('petal_length', '<f8'), ('petal_width', '<f8')]
# read the fifth column
target = np.genfromtxt(filename, delimiter=',', usecols=(4, ), dtype=str)
np.recfromcsv() 函数的 dtype 默认值为 None。
data_array = np.recfromcsv(filename)
(2)用 Pandas 导入文本文件
filename = 'iris.csv'
data = pd.read_csv(filename,
nrows=3, # 读取的行数
header=0, # 用哪一行做列名
sep=',', # 用于分隔各列的字符
comment='#', # 用于分割注释的字符
na_values=[""]) # 读取时,哪些值为NA / NaN
print(data)
# sepal_length sepal_width petal_length petal_width species
# 0 5.1 3.5 1.4 0.2 setosa
# 1 4.9 3.0 1.4 0.2 setosa
# 2 4.7 3.2 1.3 0.2 setosa
二、Excel表
file = 'iris.xlsx'
data = pd.ExcelFile(file)
print(data.sheet_names) # 使用sheet_names属性访问表单名称['iris', 'test']
df_sheet1 = data.parse('iris', # sheet名字
nrows=3, # 读取的行数
skiprows=[0],
names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species'])
df_sheet2 = data.parse(1, # # sheet序号
parse_cols=[0],
skiprows=[0])
print(df_sheet1)
# sepal_length sepal_width petal_length petal_width species
# 0 4.9 3.0 1.4 0.2 setosa
# 1 4.7 3.2 1.3 0.2 setosa
# 2 4.6 3.1 1.5 0.2 setosa
print(df_sheet2)
# 1 wang 121424
# 0 2 li e341515
# 1 3 zhang 53515
# 2 4 tang 532525
四、Pickled 文件
import pickle
in_data = [1, 3, 5, 7, 9]
output_file = open("test.pkl", 'wb')
pickle.dump(in_data, output_file)
output_file.close()
input_file = open("test.pkl", 'rb')
out_data = pickle.load(input_file)
print(out_data) # [1, 3, 5, 7, 9]
# 使用上下文管理器 with:
with open('test.pkl', 'rb') as input_file:
pickled_data = pickle.load(input_file)
print(out_data)
五、HDF5 文件
import h5py
filename = 'test.hdf5'
data = h5py.File(filename, 'r')
六、Matlab 文件
import scipy.io
filename = 'workspace.mat'
mat = scipy.io.loadmat(filename)
七、SAS 文件
from sas7bdat import SAS7BDAT
with SAS7BDAT('test.sas7bdat') as file:
df_sas = file.to_data_frame()
八、Stata 文件
data = pd.read_stata('urbanpop.dta')
九、关系型数据库文件
from sqlalchemy import create_engine
engine = create_engine('sqlite://Northwind.sqlite')
table_names = engine.table_names()
查询关系型数据库
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()
使用Pandas 查询关系型数据库
df = pd.read_sql_query("SELECT * FROM Orders", engine)
摘自DataCamp
Learn Python for Data Science Interactively