太牛了!這個Python庫竟然可以偷懶,和import說再見
- 2019 年 12 月 17 日
- 筆記
作者:xiaoyu,數據愛好者
來源:Python數據科學(ID:PyDataScience)
還記得入門Python數據分析時經常會import幾個庫,下面這幾個可謂是入門學習時的四大護法,Python數據處理和可視化常會用的工具。

不知道大家有沒有遇到過這樣一個問題,每次重新開啟一個建模流程或者分析過程時,會重新敲一遍import或者將之前的import程式碼copy進去。雖然已經用的滾花爛熟了,但是確耗費不必要的時間。
所以,你需要一個可以偷懶的python庫:pyforest。
01 一個示例

看到了吧,開頭什麼都沒import,依然可以正常使用常用庫。
02 安裝
需要安裝Python3.6以上的版本,然後終端運行:
pip install pyforest
鏈接:
https://github.com/8080labs/pyforest
03 使用方法
非常簡單!!!
一行程式碼就可以解決。
from pyforest import *
如果使用Jupyter或IPython,甚至可以跳過此行,因為pyforest會將其自身添加到自動啟動中。
而且,完成腳本後,可以通過以下方式導出所有導入語句:
active_imports()
通過這個指令,我們就可以看到腳本所涉及到的全部已經被我省略的庫。
好了,你可能會問,如果需要的庫不在pyforest中怎麼辦?
首先,pyforest支援大部分流行的數據科學庫,比如pandas,numpy,matplotlib,seaborn,sklearn,tensorflow等等,以及常用的輔助庫如os,sys,re,pickle等。
### Data Wrangling pd = LazyImport("import pandas as pd") np = LazyImport("import numpy as np") dd = LazyImport("from dask import dataframe as dd") SparkContext = LazyImport("from pyspark import SparkContext") load_workbook = LazyImport("from openpyxl import load_workbook") ### Data Visualization and Plotting mpl = LazyImport("import matplotlib as mpl") plt = LazyImport("import matplotlib.pyplot as plt") sns = LazyImport("import seaborn as sns") py = LazyImport("import plotly as py") go = LazyImport("import plotly.graph_objs as go") px = LazyImport("import plotly.express as px") dash = LazyImport("import dash") bokeh = LazyImport("import bokeh") alt = LazyImport("import altair as alt") pydot = LazyImport("import pydot") # statistics statistics = LazyImport("import statistics") ### Machine Learning sklearn = LazyImport("import sklearn") OneHotEncoder = LazyImport("from sklearn.preprocessing import OneHotEncoder") TSNE = LazyImport("from sklearn.manifold import TSNE") train_test_split = LazyImport("from sklearn.model_selection import train_test_split") svm = LazyImport("from sklearn import svm") GradientBoostingClassifier = LazyImport( "from sklearn.ensemble import GradientBoostingClassifier") GradientBoostingRegressor = LazyImport( "from sklearn.ensemble import GradientBoostingRegressor") RandomForestClassifier = LazyImport( "from sklearn.ensemble import RandomForestClassifier") RandomForestRegressor = LazyImport("from sklearn.ensemble import RandomForestRegressor") TfidfVectorizer = LazyImport( "from sklearn.feature_extraction.text import TfidfVectorizer") # TODO: add all the other most important sklearn objects # TODO: add separate sections within machine learning viz. Classification, Regression, Error Functions, Clustering # Deep Learning tf = LazyImport("import tensorflow as tf") keras = LazyImport("import keras") # NLP nltk = LazyImport("import nltk") gensim = LazyImport("import gensim") spacy = LazyImport("import spacy") re = LazyImport("import re") ### Helper sys = LazyImport("import sys") os = LazyImport("import os") re = LazyImport("import re") glob = LazyImport("import glob") Path = LazyImport("from pathlib import Path") pickle = LazyImport("import pickle") dt = LazyImport("import datetime as dt") tqdm = LazyImport("import tqdm")
其次,如果真的沒有也沒關係,pyforest支援向其中添加庫。操作方法也很簡單,找到pyforest庫的user_imports.py文件,然後添加一個語句就好了,比如像下面這樣:
############################# ### User-specific imports ### ############################# # You can save your own imports in ~/.pyforest/user_imports.py # Please note: imports in ~/.pyforest/user_imports.py take precedence over the # imports above.
所以我們可以根據平時自己的使用習慣添加一套屬於自己的萬能import,爽歪歪了。
有的同學可能還會問,所有的庫添加進入運行速度會不會變慢? 答案是不會,因為只有你後面真正使用了到了pyforest里的包含的庫,程式才會真正import,否則不會。 以上就是偷懶神器的介紹和使用方法,抓緊試試吧。