社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

吹爆!!!适合数据科学小白的Python工具

读芯术 • 5 年前 • 701 次点击  
阅读 24

吹爆!!!适合数据科学小白的Python工具

全文共4291字,预计学习时长8分钟

图片源自 Unsplash, Florian Klauer

在数据科学项目的任何阶段,Python均可提供相关工具。所有数据科学项目都包含以下3个阶段。

· 数据收集

· 数据建模

· 数据可视化

Python可为这三个阶段提供非常巧妙的工具。

数据收集

1) Beautiful Soup

https://pypi.org/project/beautifulsoup4/


Digital Ocean

数据收集包括从网页上获取数据,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/

来源 : Fossmint

下载数据,尤其是从网页上下载数据,是数据科学家们的重要任务之一。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()复制代码
Plotted Image

API的其他用途如下:

· 开启通知API — NASA和国际空间站数据

· 汇率API — 欧洲中央银行公布的当前和历史汇率



用于数据收集的几个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/

图片来自 Ty Shaikh

通过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是处理数据的完美工具,旨在进行快速简便的数据操作、聚合和可视化。

Example of a DataFrame — Shanelynn

数据可视化

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()复制代码
Bar Plot

其他例子


Taken from Matplotlib Docs

2) Seaborn

https://seaborn.pydata.org/

Seaborn是基于matplotlib的Python数据可视化库,主要用于绘制有吸引力且信息丰富的统计图形,提供高级界面。该软件主要关注可视化,如热量地图。

Seaborn docs

3) MoviePy

https://pypi.org/project/moviepy/

MoviePy是用于视频编辑的Python库,可剪切、采集、插入标题、合成、处理视频以及创建自定义效果。软件可读写所有常见格式的音频和视频,包括GIF。

https://zulko.github.io/moviepy/gallery.html

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,加入读者圈,一起讨论最新鲜的人工智能科技哦~)


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46361
 
701 次点击