全文共4291字,预计学习时长8分钟html
在数据科学项目的任何阶段,Python都可提供相关工具。全部数据科学项目都包含如下3个阶段。python
· 数据收集git
· 数据建模程序员
· 数据可视化github
Python可为这三个阶段提供很是巧妙的工具。算法
数据收集api
1) Beautiful Soupbash
https://pypi.org/project/beautifulsoup4/微信
数据收集包括从网页上获取数据,python可为此提供一个名为beautifulsoup的库。数据结构
from bs4 import Beautiful
Soup soup = BeautifulSoup(html_doc, 'html.parser')复制代码
该库可解析、有序存储网页内容。例如,该库将根据标题分别存储,包括存储全部<a>标签,在页面中呈现很是简洁的URL列表。
举个例子,请看《爱丽丝梦游仙境》中一个故事的简单网页。
显然,从中存在一些可获取的html元素。
1.标题—睡鼠的故事
2.页面文本
3.超连接 — Elsie,Lacie和Tillie。
Soup可轻松提取这些信息。
soup.title
# <title>The Dormouse's story</title>
soup.title.string
# u'The Dormouse's story'
soup.p
# <p class="title"><b>The Dormouse's story</b></p>
for link in soup.find_all('a'):
print(link.get('href'))
# http://example.com/elsie
# http://example.com/lacie
# http://example.com/tillie
print(soup.get_text())
# The Dormouse's story
#
# Once upon a time there were three little sisters; and their names
were
# Elsie,
# Lacie and
# Tillie;
# and they lived at the bottom of a well.
#
# ...复制代码
该工具可从HTML和XML文件中提取数据,表现出色,也所以成为导航、搜索和修改解析树的惯用方法。使用该工具一般可节省程序员的工做时间,从几小时到几天不等。
2) Wget
https://pypi.org/project/wget/
下载数据,尤为是从网页上下载数据,是数据科学家们的重要任务之一。Wget是一款免费的程序,以非交互式方式从网页上下载文件。因为具备非交互式特征,即便用户未登陆,程序也可在后台运行。程序支持HTTP、HTTPS和FTP协议,可经过HTTP代理进行检索。所以,下次若是从网页上下载一个网站或全部图片时,能够考虑使用wget。
>>> import wget
>>> url = 'www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download(url)
100% [................................................] 3841532 /
3841532
>>> filename
'razorback.mp3'复制代码
3) Data APIs
除了须要用于获取或下载数据的工具外,还须要实际数据。Data APIs在这一点上颇有帮助。Python中存在许多API,供您免费下载数据。例如,Alpha Vantage可提供全球股票、外汇和加密货币的实时数据和历史数据。Data APIs拥有长达20年的数据。
例如,咱们可使用alpha vantage API,提取有关比特币每日价值的数据并进行绘制:
from alpha_vantage.cryptocurrencies
import CryptoCurrenciesimport matplotlib.pyplot as plt
cc = CryptoCurrencies(key='YOUR_API_KEY',output_format='pandas')
data, meta_data = cc.get_digital_currency_daily(symbol='BTC',
market='USD')
data['1a. open (USD)'].plot()
plt.tight_layout()
plt.title('Alpha Vantage Example - daily value for bitcoin (BTC) in US Dollars')
plt.show()复制代码
API的其余用途以下:
· 开启通知API — NASA和国际空间站数据
· 汇率API — 欧洲中央银行公布的当前和历史汇率
数据建模
如本文所述,数据清洗或平衡是数据建模前的重要步骤。
1)Imbalanced-learn
http://glemaitre.github.io/imbalanced-learn/index.html
Imabalanced-learn用于平衡数据集。较其余类别而言,若是同一级别或类别的数据样本差别比例较大,那么该数据集就是不平衡的。这可能致使分类算法面临巨大考验,最终偏向具备更多数据的类别。
例如,来自该库的名为Tomek-Links的命令有助于平衡数据集:
from imblearn.under_sampling import TomekLinks
tl = TomekLinks(return_indices=True, ratio='majority')
X_tl, y_tl, id_tl = tl.fit_sample(X, y)复制代码
2) Scipy Ecosystem — NumPy
https://www.numpy.org/
经过python的scipy堆栈,对实际数据进行处理或建模。Python的SciPy Stack是专为Pytho中的科学计算而设计的软件集合。Scipy ecosystem包含许多有用的库,但Numpy能够说是其中最强大的工具。
NumPy全称为Numerical Python,是构建科学计算堆栈最基础的软件包。它为矩阵操做提供了不少有用的功能。若是使用过MATLAB,就会马上发现NumPy不只与MATLAB同样功能强大,并且在操做上也很是类似。
3) Pandas
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html
Pandas可提供数据结构,处理并操纵数据。被称为dataframe的二维结构是最受欢迎的结构。
Pandas是处理数据的完美工具,旨在进行快速简便的数据操做、聚合和可视化。
数据可视化
1) Matplotlib
Matplotlib是来自Scipy ecosystem的另外一软件包,它能够轻松生成简单而强大的可视化。该软件是2D绘图库,可生成出版质量级别的图形,具备多种硬拷贝格式。
如下是Matplotlib输出的例子:
import numpy as np
import matplotlib.pyplot as plt
N = 5
menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
menStd = (2, 3, 4, 1, 2)
womenStd = (3, 5, 2, 3, 3)
ind = np.arange(N) # the x locations for the groups
width = 0.35 # the width of the bars: can also be len(x) sequence
p1 = plt.bar(ind, menMeans, width, yerr=menStd)
p2 = plt.bar(ind, womenMeans, width,
bottom=menMeans, yerr=womenStd)
plt.ylabel('Scores'
)plt.title('Scores by group and gender')
plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
plt.yticks(np.arange(0, 81, 10))
plt.legend((p1[0], p2[0]), ('Men', 'Women'))
plt.show()复制代码
其余例子
2) Seaborn
https://seaborn.pydata.org/
Seaborn是基于matplotlib的Python数据可视化库,主要用于绘制有吸引力且信息丰富的统计图形,提供高级界面。该软件主要关注可视化,如热量地图。
Seaborn docs
3) MoviePy
https://pypi.org/project/moviepy/
MoviePy是用于视频编辑的Python库,可剪切、采集、插入标题、合成、处理视频以及建立自定义效果。软件可读写全部常见格式的音频和视频,包括GIF。
4)Bonus NLP Tool — FuzzyWuzzy
https://pypi.org/project/fuzzywuzzy/
在字符串匹配方面,该声音工具很是有用。该工具可进行快速操做,如字符串比较比率、分词比率等。
>>> fuzz.ratio("this is a test", "this is a test!")
97
>>> fuzz.partial_ratio("this is a test", "this is a test!")
100
>>> fuzz.ratio("fuzzy wuzzy was a bear", "wuzzy fuzzy was a bear")
91
>>> fuzz.token_sort_ratio("fuzzy wuzzy was a bear", "wuzzy fuzzy was a bear")
100复制代码
留言 点赞 关注
咱们一块儿分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
(添加小编微信:dxsxbb,加入读者圈,一块儿讨论最新鲜的人工智能科技哦~)