python基础 - 导入数据(Numpy and Pandas)

python基础 - 导入数据(Numpy and Pandas)

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

相关数据流