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', '<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

  • 6
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值