在数据科学领域,Python因其强大的库和框架而广受欢迎。面对众多的项目和工具包,选择最有用的几个可能会让人不知所措。本文旨在介绍7个出色的Python工具包,并通过实例用例和代码示例来展示它们的应用。
这些工具包主要针对数据科学领域,特别强调那些使项目变得简单的Python包。例如,Slacker是一个易于使用的Slack API工具包,它可以帮助创建自动化机器人,提高团队的生产力。可以利用Slack机器人发送警报,例如算法性能随时间的变化。更复杂的应用可以通过模态从用户那里获取输入,从而触发作业。
from slacker import Slacker
import matplotlib.pyplot as plt
import tempfile
from pathlib import Path
# 输入Slack凭证
slack = Slacker('')
# 绘制按日销售的图表
fig = plt.figure(figsize=(15,10))
plt.plot(y=orders_df['sales'], x=orders_df['date'], color='#2ae8bf', linewidth=2, label='每日总订单', alpha=0.2)
# 使用临时目录将图表发送到Slack
with tempfile.TemporaryDirectory() as td:
local_path = Path(td, f"output graph {psku}.png")
plt.savefig(local_path, pad_inches=1)
# 将图表发送到Slack
slack.files.upload(file=local_path.as_posix(), title='每日销售', initial_comment='按日销售')
import pandas as pd
from fbprophet import Prophet
# 首先需要更改列名,使得"date"变量变为"ds",销售变量变为"y"
orders_df = orders_df.rename(columns={'date':'ds', 'sales':'y'})
# 通过实例化一个新的Prophet对象来拟合模型
m = Prophet()
m.fit(orders_df)
# 然后需要创建一个未来数据框架,这只是想要预测的未来天数的日期变量(在这种情况下,是365天)
future_df = m.make_future_dataframe(periods=365)
# 使用predict调用来做出预测!这将返回一个包含预测以及上下界的数据框。
forecast_df = m.predict(future_df)
# 可以绘制预测图:
forecast_plot = m.plot(forecast_df)
# 也可以绘制各个组成部分
m.plot_components(forecast_df)
Spotipy是一个可以让访问Spotify提供的丰富音乐数据的工具包。使用Spotipy,可以获得完整的Spotify API音乐数据访问权限。一个令人惊叹的项目示例是“What’s Spinning”,该项目使用Spotify API向订阅者发送基于他们关注的播放列表的定制电子邮件——向他们介绍可能喜欢的新艺术家和艺术作品。Spotify API有助于获取播放列表歌曲、专辑封面、流派和艺术家信息,以生成高度定制的新闻稿。
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
artist_uri = 'spotify:artist:36QJpDe2go2KgaRleHCDTp'
spotify = spotipy.Spotify(client_credentials_manager=SpotifyClientCredentials())
results = spotify.artist_top_tracks(artist_uri)
for track in results['tracks'][:10]:
print('track : ' + track['name'])
print('audio : ' + track['preview_url'])
print('cover art: ' + track['album']['images'][0]['url'])
print()
Textpack是一个允许在列中对相似的基于文本的值进行分组的工具包,它快速、准确且高度可定制。Textpack在内部使用余弦相似度和快速矩阵乘法来计算文本文档之间的相似度。使用Textpack将相似的新闻文章分组在一起,并计算它们的相似度。例如,使用这个来决定向用户展示哪些内容,并限制重复的主题。
from textpack import tp
# 实例化textpack并找到news_data中"article_text"列的相似度:
tp_init = tp.TextPack(df=news_data, columns_to_group=['article_text'], match_threshold=0.6, ngram_remove=r'[,-./]', ngram_length=2)
# 运行分析器
tp_init.run()
# 获取相似度数据框
similarity_df = tp_init.df
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
# 示例推文
sentences = ["学习Python既不无聊也不难", "热爱Python!!", "穿灰色衬衫。", "真讨厌坐在交通中!"]
analyzer = SentimentIntensityAnalyzer()
for sentence in sentences:
vs = analyzer.polarity_scores(sentence)
print("{:-<65} {}".format(sentence, str(vs)))