用python導(dǎo)入數(shù)據(jù)
大多數(shù)情況都是用Numpy和Pandas導(dǎo)入數(shù)據(jù)
import numpy as np
import pandas as pd
調(diào)用幫助
np.info(np.ndarray.dtype)
help(pd.read_csv)
1. 文本文件
1.1 純文本文件
filename = 'test.txt'
file = open( filename, mode='r') # 以只讀方式讀取文件
text = file.read() # 讀取文件內(nèi)容
print( file.closed) # 查看文件是否已經(jīng)關(guān)閉
file.close() # 關(guān)閉文件
print(text)
使用上下文管理器 with
with open('test.txt', 'r') as file:
print( file.readline()) # 讀取一行數(shù)據(jù)
print( file.readline())
print( file.readline())
1.2 表格數(shù)據(jù):文本文件
1.2.1 用Numpy導(dǎo)入文本文件
- 單數(shù)據(jù)類型文件
filename = ‘test.txt’
data = np.loadtxt( filename,
delimiter=',', # 用于分割各列值的字符
skiprows=2, # 跳過前兩行
usecols=[0,2], # 讀取并使用第1列和第3列
dtype=str) # 使用的數(shù)據(jù)類型
- 多數(shù)據(jù)類型文件
filename = 'titanic.csv'
data = np.genfromtxt( filename,
delimiter=',',
names=True, # 導(dǎo)入是查找列名
dtype=None)
data_array = np.recfromcsv( filename) # np.recfromcsv()函數(shù)dtype默認值為None
1.2.2 用Pandas導(dǎo)入文本文件
filename = 'test.csv' # csv文件路徑
data = pd.read_csv( filename,
nrows=5, # 讀取的行數(shù)
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. 關(guān)系型數(shù)據(jù)庫文件
from sqlalchemy import create_engine
engine = create_engine('sqlite://Northwind.sqlite')
- 使用 tables_names()方法獲取表名列表
table_names = engine.table_names()
5.1 查詢關(guān)系型數(shù)據(jù)庫
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查詢關(guān)系型數(shù)據(jù)庫
df = pd.read_sql_query("SELECT * FROM Orders", engine)
6. 探索數(shù)據(jù)
6.1 Numpy 數(shù)組
data_array.dtype # 查看數(shù)組元素的數(shù)據(jù)類型
data_array.shape # 查看數(shù)組的維度
len(data_array) # 查看數(shù)組的長度
6.2 Pandas 數(shù)組
df.head() # 返回數(shù)據(jù)的前幾行(默認是前5行)
df.tail() # 返回數(shù)據(jù)的后幾行(默認是后5行)
df.index # 查看數(shù)據(jù)的索引
df.columns # 查看數(shù)據(jù)的列名
df.info() # 查看數(shù)據(jù)的各列信息
data_array = data.values # 將數(shù)據(jù)轉(zhuǎn)換為Numpy數(shù)組
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 通過函數(shù)訪問數(shù)據(jù)元素
print(mat.keys()) # 輸出字典的鍵值列表
for key in data.keys(): # 輸出字典的鍵值
print(key)
pickled_data.values() # 返回字典的值
print(mat.items()) # 返回由元組構(gòu)成字典鍵值對列表
10.2 通過鍵訪問數(shù)據(jù)
for key in data ['meta'].keys() # 探索HDF5的結(jié)構(gòu)
print(key)
print(data['meta']['Description'].value) # 提取某個鍵值對的值
11. 探尋文件系統(tǒng)
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