大多数情况下,都是用 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', ' # 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