TowardsDataScience 博客中文翻译 2020(一百一十三)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

路透社文章的文本数据分析和可视化

原文:https://towardsdatascience.com/analysis-and-visualization-of-unstructured-text-data-2de07d9adc84?source=collection_archive---------26-----------------------

借助 K-Means、N-gram、Tf-IDF、条形图、单词云、NER 等工具研究路透社的文章。方法

被困在付费墙后面?点击这里阅读这篇文章和我的朋友链接。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

资料来源:Jaredd Craig-Unsplash

当我要求你解释文本数据时,你会怎么做?你将采取什么步骤来构建文本可视化的故事?在这里,我不打算解释你如何创建一个可视化的故事。

但是本文将帮助您获得构建可视化故事和解释文本数据所需的信息。

从文本数据中获得的洞察力将帮助我们发现文章之间的联系。它将检测趋势和模式。对文本数据的分析将把噪音放在一边,并揭示以前未知的信息。

这个分析过程也被称为探索性文本分析(ETA)。借助 K-means、Tf-IDF、词频等。方法,我们将分析这些文本数据。此外,ETA 在数据清理过程中也很有用。

我们还使用 Matplotlib、seaborn 和 Plotly 库将结果可视化为图表、单词云和绘图。

在分析文本数据之前,请完成这些预处理任务。

从数据源检索数据

有大量的非结构化文本数据可供分析。您可以从以下来源获取数据。

1.来自 Kaggle 的 Twitter 文本数据集。

2.使用 API 的 Reddit 和 twitter 数据集。

3.使用 Beautifulsoup 从网站上抓取文章并请求 python 库。

我将使用 SGML 格式的 路透社的文章 。出于分析目的,我将使用 Beautifulsoup 库从数据文件中获取日期、标题和文章正文。

使用下面的代码从所有数据文件中获取数据,并将输出存储在一个 CSV 文件中。

1。您还可以使用 Regex 和 OS 库来组合或循环所有数据文件。

2。每篇文章的正文以<路透>开头,所以使用 find_all('reuters ')。

3。您还可以使用 pickle 模块来保存数据,而不是 CSV。

数据清理过程

在这一节中,我们将删除诸如空值、标点符号、数字等干扰。从文本数据中。首先,我们删除文本列中包含空值的行。然后我们处理其他列的空值。

import pandas as pd import rearticles_data = pd.read_csv(‘articles_data.csv’) print(articles_data.apply(lambda x: sum(x.isnull()))) articles_nonNull = articles_data.dropna(subset=[‘text’]) articles_nonNull.reset_index(inplace=True)def clean_text(text):‘’’Make text lowercase, remove text in square brackets,remove \n,remove punctuation and remove words containing numbers.’’’ text = str(text).lower()
    text = re.sub(‘<.*?>+’, ‘’, text)
    text = re.sub(‘[%s]’ % re.escape(string.punctuation), ‘’, text)
    text = re.sub(‘\n’, ‘’, text)
    text = re.sub(‘\w*\d\w*’, ‘’, text)
    return textarticles_nonNull[‘text_clean’]=articles_nonNull[‘text’]\
                                  .apply(lambda x:clean_text(x))

当我们删除文本列中存在的空值时,那么其他列中的空值也会消失。

我们已经使用 re 方法去除文本数据中的噪声。

数据清理过程中采取的步骤可能会根据文本数据增加或减少。因此,请仔细研究您的文本数据,并相应地构建您的 clean_text()方法。

随着预处理任务的完成,我们将继续分析文本数据。

先说我们的分析。

1.路透社文章的长度

我们知道所有文章的长度是不一样的。因此,我们将考虑那些长度等于或超过一个段落的文章。根据这项研究,一个句子的平均长度是 15-20 个单词。一个段落中应该有四个句子。

articles_nonNull[‘word_length’] = articles_nonNull[‘text’].apply(lambda x: len(str(x).split())) print(articles_nonNull.describe())articles_word_limit = articles_nonNull[articles_nonNull[‘word_length’] > 60]plt.figure(figsize=(12,6)) p1=sns.kdeplot(articles_word_limit[‘word_length’], shade=True, color=”r”).set_title(‘Kernel Distribution of Number Of words’)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者图片

我已经删除了那些长度小于 60 字的文章。

字长分布是右偏的。

大部分文章都在 150 字左右。

包含事实或股票信息的路透社文章字数较少。

2.路透社文章中的常用词

在这一部分,我们统计文章中出现的单词并分析结果。我们基于 N-gram 方法分析单词计数。N-gram 是基于其 N 值的单词的出现。

我们将从文本数据中删除停用词。因为停用词是噪音,在分析中没有多大用处。

1.最常见的单字单词(N=1)

让我们在条形图和单词云中绘制单词。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者图片

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者图片

股票,贸易和股票是一些最常见的词,基于股票市场和金融部门的文章。

因此,我们可以说,大多数路透社的文章属于金融和股票类。

2.最常见的二元词(N=2)

让我们为 Bigram 单词绘制条形图和单词云。

article_bigrams = defaultdict(int)
for tweet in articles_word_limit[‘temp_list_stopw’]:
    for word in generate_ngrams(tweet, n_gram=2):
        article_bigrams[word] += 1df_article_bigrams=pd.DataFrame(sorted(article_bigrams.items(),
                                key=lambda x: x[1])[::-1])N=50# bar graph of top 50 bigram words
fig, axes = plt.subplots(figsize=(18, 50), dpi=100)
plt.tight_layout()
sns.barplot(y=df_article_bigrams[0].values[:N],
            x=df_article_bigrams[1].values[:N], 
            color=’red’)
axes.spines[‘right’].set_visible(False)
axes.set_xlabel(‘’)
axes.set_ylabel(‘’)
axes.tick_params(axis=’x’, labelsize=13)
axes.tick_params(axis=’y’, labelsize=13)
axes.set_title(f’Top {N} most common Bigrams in Reuters Articles’,
               fontsize=15)
plt.show()#Word cloud
wc = WordCloud(width=2000, height=1000, collocations=False,
               background_color=”white”,
               color_func=col_func,
               max_words=200,
               random_state=np.random.randint(1,8))\
               .generate_from_frequencies(article_bigrams)fig, ax = plt.subplots(figsize=(20,10))
ax.imshow(wc, interpolation=’bilinear’)
ax.axis(“off”)
ax.set_title(‘Trigram Words of Reuters Articles’, pad=24,
             fontdict=fd)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者图片

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者图片

Bigram 比 unigram 提供了更多的文本信息和上下文。比如,股票损失 bigram 显示大多数人在股票上赔钱。

3.最常见的三元组单词

让我们为 Trigrma 单词绘制条形图和单词云。

article_trigrams = defaultdict(int)
for tweet in articles_word_limit[‘temp_list_stopw’]:
    for word in generate_ngrams(tweet, n_gram=3):
        article_trigrams[word] += 1
df_article_trigrams = pd.DataFrame(sorted(article_trigrams.items(),
                                   key=lambda x: x[1])[::-1])N=50# bar graph of top 50 trigram words
fig, axes = plt.subplots(figsize=(18, 50), dpi=100)
plt.tight_layout()
sns.barplot(y=df_article_trigrams[0].values[:N],
            x=df_article_trigrams[1].values[:N], 
            color=’red’)
axes.spines[‘right’].set_visible(False)
axes.set_xlabel(‘’)
axes.set_ylabel(‘’)
axes.tick_params(axis=’x’, labelsize=13)
axes.tick_params(axis=’y’, labelsize=13)
axes.set_title(f’Top {N} most common Trigrams in Reuters articles’,
               fontsize=15)
plt.show()# word cloud
wc = WordCloud(width=2000, height=1000, collocations=False,
background_color=”white”,
color_func=col_func,
max_words=200,
random_state=np.random.randint(1,8)).generate_from_frequencies(article_trigrams)
fig, ax = plt.subplots(figsize=(20,10))
ax.imshow(wc, interpolation=’bilinear’)
ax.axis(“off”)
ax.set_title(‘Trigrams Words of Reuters Articles’, pad=24,
             fontdict=fd)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者图片

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者图片

大多数三元模型类似于二元模型。三元组单词比二元组单词更能帮助我们理解文本。但是不能提供更多的信息。所以这一节到此结束。

3.文本数据的命名实体识别(NER)标记

NER 是从文本数据中提取特定信息的过程。在 NER 的帮助下,我们从文本中提取位置、人名、日期、数量和组织实体。点击了解更多关于 NER 的信息。我们使用 Spacy python 库来完成这项工作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者图片

从这个图表中,你可以说大多数文章包含了来自美国、日本、加拿大、伦敦和中国的新闻。

对美国的高度提及代表了路透社在美国业务的重点。

人物变量暗示 1987 年的著名人物是谁。这些信息有助于我们了解那些人。

这个组织变量包含了全世界最多提及的组织。

4.文本数据中的唯一单词

我们将使用 TF-IDF 在文章中找到独特的单词。词频(TF)是每篇文章的字数。逆文档频率(IDF)在考虑所有提及的文章时测量单词的重要性。

对于那些在一篇文章中具有高计数而在其他文章中很少或不存在的词,TF-IDF 得分很高。

让我们计算一下 TF-IDF 得分,找出独特的单词。

from sklearn.feature_extraction.text import TfidfVectorizertfidf_vectorizer = TfidfVectorizer(use_idf=True)
tfidf_vectorizer_vectors=tfidf_vectorizer.fit_transform(articles_word_limit[‘text_clean’])
tfidf = tfidf_vectorizer_vectors.todense()
tfidf[tfidf == 0] = np.nan#Use nanmean of numpy which will ignore nan while calculating mean
means = np.nanmean(tfidf, axis=0)# convert it into a dictionary for later lookup
Means_words = dict(zip(tfidf_vectorizer.get_feature_names(),
                       means.tolist()[0]))
unique_words=sorted(means_words.items(),
                    key=lambda x: x[1],
                    reverse=True)
print(unique_words)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者图片

5.使用 K-Means 聚类文章

K-Means 是一种无监督的机器学习算法。它帮助我们在一个组中收集相同类型的文章。我们可以通过初始化 k 值来决定组或簇的数量。了解更多关于 K-Means 和我们如何在这里选择 K 值。作为参考,我选择 k=4 组成四组。

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_scorevectorizer = TfidfVectorizer(stop_words=’english’,use_idf=True)
X = vectorizer.fit_transform(articles_word_limit[‘text_clean’])
k = 4
model = KMeans(n_clusters=k, init=’k-means++’,
               max_iter=100, n_init=1)
model.fit(X)
order_centroids = model.cluster_centers_.argsort()[:, ::-1]
terms = vectorizer.get_feature_names()
clusters = model.labels_.tolist()
articles_word_limit.index = clusters
for i in range(k):
    print(“Cluster %d words:” % i, end=’’)for title in articles_word_limit.ix[i
                    [[‘text_clean’,’index’]].values.tolist():
    print(‘ %s,’ % title, end=’’)

它帮助我们将文章分类到不同的类别,如体育、货币、金融等等。K-Means 的准确率普遍较低。因此,这在低级分析中是有用的。

结论

NER 和 K 均值是我最喜欢的分析方法。其他人可能喜欢 N-gram 和独特的单词方法。在本文中,我介绍了最著名的、闻所未闻的文本可视化和分析方法。本文中的所有这些方法都是独一无二的,可以帮助您进行可视化和分析。

我希望这篇文章能帮助你发现文本数据中的未知。

作者的其他文章

  1. EDA 的第一步:描述性统计分析
  2. 为 Reddit Post: TextBlob 和 VADER 自动化情感分析流程
  3. 使用罗伯塔模型发现 Reddit 子群的情绪

NBA 暂停后比赛分析

原文:https://towardsdatascience.com/analysis-of-after-timeout-plays-in-nba-f69952f74779?source=collection_archive---------35-----------------------

你经常听到教练因为他们在暂停(ATO)比赛后的平局和执行能力而受到表扬,但是,我们将看看 ATO 比赛的成功实现和球队的胜率之间是否有任何关联。此外,我将看看谁是执行这些相同行动的最成功的玩家。

数据

这些数据是通过 NBA 的逐场比赛数据收集的。我找到了今年赛季所有的暂停,总计 10905 次暂停。之后的目标是找到下一个动作。以下是所有发生的“下一步行动”,我过滤掉了替换:

  • 错过的镜头:3927
  • 投篮次数:3030 次
  • 犯规次数:1463 次
  • 营业额:1106
  • 罚球:1095
  • 跳球:100
  • 违反次数:71 次
  • 超时:53
  • 游戏结束:31
  • 进攻犯规:29 次

如您所见,这是相当不理想的数据,我们可以在这里过滤掉更多的内容。所以我也跳过了罚球(因为 TO 是在犯规之后/罚球之间被叫的)、暂停、跳球(和罚球一样)、违例(因为那是比赛的某种延迟,不影响动作),把进攻犯规归为失误(事实就是如此)。我简单地删除了游戏结束的动作,因为我真的不能从它们中分辨出任何东西。其结果如下:

  • 错过的镜头:4047
  • 投篮次数:3121 次
  • 营业额:1307
  • 犯规次数:1136 次

团队成功

我想看的第一件事是这些团队在这些行动中有多成功。为了做到这一点,我看了看投篮不中/投篮命中和失误,以确定成功与否。我通过一个简单的条形图显示了这些动作的数量,见第一张图片。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

令我惊讶的是,奥兰多魔术队是迄今为止最成功的,其次是奇才队和雷霆队。排在第四位的尼克斯也相当令人意外。

鹈鹕队几乎是最后一名也让人有点意外。他们明显排在最后。

然而,所有其他数字都相对接近,没有人真正跳出来。

ATO 的成功会产生“更好的团队”(更好的胜率%)吗?

号码

两者之间没有相关性,实际上,r 值几乎为零,这意味着没有正相关或负相关。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

第二个图表显示了 ATO 游戏的成功率和获胜百分比。我把 ATO 剧的成功定义为made shots / (made shots + missed shots + turnovers)

到现在为止,你可能已经发现我完全忽略了犯规(除了进攻犯规,我把它归类为 TOs),原因是推断那场比赛是否成功是相当复杂的,我真的不想探究那么深(我将来可能会……)。

看看最成功的球员

暂停后,处理投篮最多的球员是球队的明星和领袖。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

前面的图表显示了一些投篮次数最多的球员。

对我来说,这个图表中的惊喜是朱利叶斯·兰德尔、马库斯·莫里斯和乔·哈里斯。前两次是在尼克斯队,所以我想他们只是等了一下,然后开车/停车准备投篮。另一方面,乔·哈里斯是一个 3 分专家,所以在视频上检查可能是一件有趣的事情。

don ici、Dinwiddie 和 Randle 再次成为此类行动中效率最高的人。Joki 和 Beal 是在 ATO 剧中拍摄大量镜头的“老黄牛”。

无辅助与辅助拍摄

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

最后一个图表解释了为什么兰德尔和莫里斯都有这么多镜头。他们每个人都创造了他们得分的几乎所有投篮机会(我们可以假设他们也创造了自己的投篮失误)。

在光谱的另一端,有乔·哈里斯和布林·福布斯。他们在左上角,在“中心之地”。他们都是三分专家,这个分析显示他们在这方面相当擅长。我看了看为哈里斯准备的剧本,很多都是画动作的。

对他来说是双重掩护,由中锋掩护,由其他后卫切入/掩护,这让哈里斯可以拿下三分。

卢卡·东契奇也给我留下了深刻的印象,但他的 ATO 风格与哈里斯相反。他的大部分投篮都是在无人帮助的情况下完成的,他要么奔向篮筐,要么后退一步停下来。他以一种令人印象深刻的方式创造了他的镜头。

结论

这只是暂停播放后的一个快速预览,你可以越来越深入,并观看录像带产生一些其他的结论。如果有可能做以下事情之一,那将会非常酷:

  • 检查每一个动作的拍摄时间(你不能通过一个接一个的播放来获得,因为动作并不总是在 24 秒开始)
  • 检查暂停后的镜头是否比通常的镜头更“开阔”
  • 检查一个人在暂停后是否在投篮中带了更多的运球(即使在暂停后,我们也可以假设休斯顿的进攻是哈登/威斯布鲁克的 Iso,但这将证实这一点)
  • 还有更多…

如果你想看更多我的东西,请访问我的网站脸书Instagram 个人资料。如果你想查看代码,可以在我的 Github 中找到。

新加坡 Airbnb 分析

原文:https://towardsdatascience.com/analysis-of-airbnb-in-singapore-4aa4b2bed82e?source=collection_archive---------41-----------------------

做 Airbnb 主持人价格和地点最好?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

帕特里克·帕金斯在 Unsplash 上的照片

随着共享经济中在线市场的兴起,许多人都想成为卖家或服务提供商。我将看看新加坡,新加坡允许普通房主出租部分或全部房屋至少 3 个月**。在受欢迎的酒店网站中,Airbnb 被选中,因为它是可靠的数据提供商。它从他们自己的网站上收集了所有的列表和评论,多达约 90,000 行数据。这将增加结果的可靠性,即使在数据清理之后。此外,还收集了客户的评论数据。**

Airbnb 的数据可以在这里找到:http://insideairbnb.com/get-the-data.html也可以在你自己国家的 Airbnb 上随意尝试分析一下!

为什么看评论?

当人们在网上购物或寻找酒店住宿时,他们会转向评论和推荐部分进行参考。以往顾客的评论通常被认为是可靠的,反映了他们对公司商品和服务的满意程度。因此,这引导他们决定是否应该资助一家公司。随着评论的访问变得容易,深入了解评论如何影响企业收入变得重要。在 Airbnb 的案例中,他们还根据审核分数将主机分为普通主机或超级主机。我们还将探讨普通主机与超级主机的主要区别。

U 最后,我们将研究潜在的新主机如何决定价格、位置、服务周期和主机类型,从而在新加坡实现收入最大化。

数据清理

回想一下,Airbnb 提供了两种不同类型的数据,即房源(包括价格、卧室、位置等)。)以及评论。

对于 listings.csv

1)删除所有 NaN 值(缺失数据)

2)用 1 和 0 替换 host _ is _ superhost 超级主机,0 =普通主机)

3)将价格从字符串转换为整数(例如$84 到 84)

4)将“id”重命名为“listing_id ”,以匹配 reviews.csv 中的列标题

查看评论. csv

1)将日期拆分为年、月和日列,只保留年和月,以便进一步选择数据和检查高峰期

合并 reviews.csv 和 listings.csv

1)仅保留 2019 年的最低住宿<=365, property type either apartment or condominium. This is to fix variables to minimise confounders.

2) Calculated revenue based on minimum nights * price and then summing the rows with the same listing id (i.e est_rev=minimum_ nights * price * number of reviews)

3) Removed all listings with only 1 review (i.e price*min nights=revenue, which might be pulling down the average)

4) Removed year, day, date columns since they are already fixed or are not useful variables

The final dataframe looks like this

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image by Author

****价格&基于位置的收入

先说 Airbnb 的位置。这对于打算购买租赁物业并需要知道哪个位置将产生最高收入的主机来说是有用的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

大多数 Airbnb 都位于主干道附近,或者在南部/商业区。这可能是因为新加坡的 Airbnb 的最短停留时间为 3 个月,Airbnb 的客户预计是来新加坡工作的外籍人士,他们更喜欢住在工作地点附近。

让我们看看基于 Airbnb 位置的收入。由于价格和收入的巨大差异,每个待评估区都采用中间值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

使用上述每个地区的价格和收入中值,以及新加坡的上市公司,我们可以看到,商业区周围的集群中的价格最高。事实上,离商业区越远,价格中位数就越低。这一趋势也遵循了地区收入的中位数,反映了基于到商业区距离的定价策略的有效性。然而,人们预计商业区的房价也会更高。该成本没有反映在模型中,但仍应予以考虑。

为了规避我们不知道的成本问题,另一种方法是记录中值价格低于其他地区但收入中值相对较高的地区。这意味着可能会有更频繁的预订,使位置更有吸引力,同时可能有更低的房地产成本。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

根据排名值,排名的积极变化反映了该地区的中值价格低于其同行,但中值收入较高。在该图中,Holland Village 的价格和收入变化最大。这将使它成为一个值得注意的地区。

基于季节/月份的预订和收入

接下来,我们可以看看预订高峰期。这将使主人能够更好地安排他们的时间来维护房子,积极地寻找顾客,或者相应地改变他们的价格。然而,由于可用数据是在进行审查的当月(即客户曾入住 Airbnb,现在正准备离开),分析将围绕客户结束入住的时期进行。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

纵观 2019 年,高峰期为 7 月至 9 月。一个可能的理由是,7 月被认为是人们寻找新工作的黄金时期,也是公司财年结束的常见时期。这可能会导致更多的外籍人士结束他们在新加坡的生活,去寻找新的工作,或者因为他们的工作而被重新安置到另一个国家。因此,这将是主人为房子服务的好时期,可能会在 7 月前开始寻找新客户。

基于主机类型的收入

最后,在确定宿主如何成为超级宿主之前,检查宿主类型的重要性是至关重要的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

特别是,超级主机的年平均收入为 11,180 美元,而普通主机的年平均收入为 3,135.50 美元。超级主机和普通主机赚取的收入之比为 3.57 (2dp),看起来差距巨大。因此,由于潜在的更高收入,这将为主机努力成为超级主机提供有效的理由。

普通主机和超级主机的主要区别

既然超级宿主的重要性已经确定,那么目标就是找出是什么因素使得宿主成为超级宿主。这是通过对顾客评论的情感分析来完成的。在删除了意义不大或没有意义的单词之后,正常主机和超级主机的结果单词云如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

两个词云看起来都差不多,常用词应该解释为对主机的基本要求。然而,主要的想法是超级主机应该有一些关键词来区别于普通主机。这是通过选择每个词云中的前 10 个关键词并找到区分因素来完成的。这个因素原来就是‘有益’二字。一种解释是,东道主与客户有更大的接触,即使在租赁/合同中没有说明,也可能免费提供帮助。

假设和限制:

一个假设是在估计收入的计算中。等式是 est _ rev =价格最低 _ 夜评论数。每位顾客的停留时间可能不完全是要求的最少住宿时间,也不是每位顾客在停留后都要写点评。这意味着计算出的收入严重低估了实际收入。此外,主办方的主要目标是实现利润最大化,但没有关于房产成本的信息,这使得很难确定在哪个地区购买房产最合适。

结论

在分析了地点、时期和东道主类型后,主办的最佳地点可能是商业区(收入最大化)或荷兰村(预订量最大化)。他们可以选择使用该地区 Airbnb 的中间价格,以确保更一致的预订。维护和服务的高峰期将在 7 月至 9 月,主机可以在 7 月前寻找新客户。最后,主机状态是收入的一个重要变量,应该是主机的目标。为了实现这一点,主人应该超越提供基本的便利设施,并试图在顾客眼中更“有帮助”。

双模态出行分析

原文:https://towardsdatascience.com/analysis-of-bicimad-trips-88ee2d0f7cdf?source=collection_archive---------57-----------------------

上一篇文章 中,我分析了 BiciMAD 车站的位置和特征,现在是时候继续分析以了解用户要去哪里以及最受欢迎的路线是什么,根据他们的类别 user_type (订户、临时用户……)进行聚类。

请注意,本文中讨论的图表、数据集、Tableau 报告和 Python 笔记本可以在 GitHub 上找到(免费)。

资料组

为了对路线进行分析,我使用了马德里市交通局在其开放数据网站上提供的数据。从 2017 年 4 月到 2018 年 9 月,路线数据在 18 个存档中可用,JSON 文件也一样多。该文件的每一行都是一个首尾相连的 JSON,包含每次从底座上移除一辆电动自行车的信息(包括 EMT 雇主何时移除)。
总的来说,这些文件包含了超过 500 万次提款的详细信息,每个存档大小为 500 到 1500 Mb(压缩时),值得注意的一点是,不幸的是,有 17 个压缩存档和 1 个 RAR 存档,这并不好,因为整个数据集太大,无法解压缩并导入到单个 Pandas 数据帧中。
出于这个原因,我选择走一条不同的路:我确定了一些要提取的信息,然后编程 Python 来提取每个月的 JSON 文件,打开它们并一次保存想要的信息。该脚本一次处理 25,000 行,然后将这些行汇总到几个 CSV 文件中。

EMT 公司还提供了一个简短的指南来理解每个字段的含义,该指南有西班牙语版本,可从此链接下载。

缺失数据

乍一看,我们可以看到两个有趣的字段丢失了:自行车 ID 和用户 ID。缺少用户 ID 很可能是因为隐私原因,但我无法理解自行车缺少唯一标识符的原因。提取站点之间每辆自行车的使用信息(由用户和 EMT 雇主)会非常有趣。

分析目标

这项分析的目标是:

  • 了解 BiciMAD 用户的习惯,特别是他们何时使用自行车以及出于何种目的;
  • 了解用户是否有明显的细分;
  • 了解 BiciMAD 用户骑自行车最频繁的旅行。

探索性数据分析

首先,我们评估我们所掌握的数据的数量和主要统计参数。

5478168

之后,我们验证插入和拔出工作站的 id 是否都存在于上一篇文章生成的注册表中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个显而易见的方面是,站点的最大值是 2008 年。从上一篇文章中,我们知道这些站是由一个从 1 到 175 的 ID 来标识的,所以 2008 是一个异常值。

2008 站

由于数据帧是由我制作的脚本生成的,我检查了 EMT 提供的原始数据中是否有转移到 2008 站的线路,以确保这不是我的错误。我取 2017 年 12 月的月份,因为(作为冬季月份)该文件肯定比其他月份小。
2008 年的值作为站点 ID 也出现在最初提供的数据中,因此它不是与我的数据汇总脚本相关的错误的结果。

直观地说,2008 可能是一个逻辑站的 ID,在那里放置有一些异常的自行车,例如,那些正在维修或被盗的自行车。对我来说,很难证实这一事实,但考虑到这些线只是总数中的几条,我可以将它们从数据框中删除,而不会对最终结果产生明显的伪造影响。

22 号站

路线中的另一个车站不在上一篇文章中创建的车站注册表中:车站编号 22。
通过两个简单的查询,我了解到该站可能仅在“2017-05-01”和“2017-12-01”之间活跃,现在它已经不存在了,但是 EMT 提供的关于该站的公开数据仅涵盖 2018 年 7 月至 9 月之间的几个月。

为了解决这个问题,我搜索了一些 BiciMAD 站的 2017 年地图,但没有获得有用的信息,因为地图上的站是用“数字”字段而不是“ID”标识的。

作为最后一次检查,我查看了 ID 为 22 的车站的上下两个车站。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从数据中,我们可以看到有一个站 20a。通常当 EMT 用字母表字母识别一个站时,这是因为至少有两个附近的站,但是在这种情况下,站 20b 丢失了:很可能我正在寻找的 ID=22 站实际上是数字 22b。

这些信息足以限制我的搜索范围:

  • ID=20 之间的一个站
  • 它从 2017 年 5 月 1 日到 2017 年 12 月 1 日一直在那里

从谷歌地图上,我终于可以找到 ID=22 的车站,这是 20b 车站,直到几个月前还位于卡莱阿尔卡兰 49
由于 22 号站确实存在于过去,我决定不从文件中删除它的台词。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

trips 分析

在下图中,颜色红色标识年度会员用户,颜色蓝色标识临时用户,颜色绿色,最终标识 EMT 雇主。

首先,我将 EMT 提供的全部数据以月为粒度绘制在时间轴上,以了解自行车租赁数量是否存在季节性。

结果(如图所示)是这项服务有很大的季节性。我们可以看到,除了 8 月份红线(年度会员用户)下降之外,这两条线路在夏季都有一个高峰,这可能是因为在 8 月份,由于假期,许多办公室的工作量较轻,因此可以证明 user_type=1 使用自行车从家到工作场所往返。

从这个图表我们可以得出更多的结论:

  • 在冬季,马德里的气温非常寒冷,因此两个用户类型都喜欢少骑自行车出行,而不喜欢其他交通工具;
  • user_type=1user_type=2 的行程数之间有巨大的差距:它们是一起绘制的,但是检查 y 轴上左边和右边的刻度…它们有不同的数量级!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

该图显示了 EMT 提供的整个月份中一周内每天的行程,因此从 2017 年 5 月到 2018 年 9 月。显然,年度用户在一周的第一个和最后一个工作日有一个使用高峰,而临时用户几乎有一个补充使用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这张图表中,我们可以看到一天中几个小时的行程变化。我认为红线支持这样的论点,即每年有很大一部分用户使用 BiciMAD 的电动自行车往返于家和办公室之间,我们可以很容易地看到用户从家通勤到工作场所(上午 7-9 点),出去吃午饭(下午 2-3 点),晚上 5-7 点回家。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在一系列的情节之后,我决定更进一步,看看 EMT 提供的整整一年半的时间,看看我是否能了解更多关于用户习惯的信息。出于这个原因,我决定制作 3 张地图图来了解工作日和整个时间线上的旅行分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这些图表向我展示了一些意想不到的数据,如果可能的话,这将是一个非常有趣的研究,可能会在未来的博客上发布:

  • 在五月、六月和八月,有几天几乎没有来自 user_type=1 (年度订户)的旅行,以及 user_type=2(临时用户)和 user_type=3(雇主)的爆炸式增长。这是非常可疑的!这可能是数据收集过程中的一个错误,或者可能是一些技术问题,阻止了年度用户使用他们的卡来租赁自行车,所以他们不得不作为临时用户进行租赁(许多 EMT 雇主正在努力解决这个问题)。
  • 在周末有一个令人惊讶的 EMT 雇主使用自行车的高峰,如果他们在即将开始的一周内维护自行车或移动车队,这将是很有意思的。
  • 2017 年 5 月第一周的前几天,没有一个 user_type=2 次出行…对吗?
  • 在 2017 年 10 月期间,在 user_type=2 的图表中有深蓝色的日子,这意味着在这段时间内有大量的旅行,比之前和之后的几周都多。了解这一高峰的原因会很有趣,这可能是一些关于 BiciMAD 服务的营销活动。

对于这个分析,我研究的最后一点是总的环行程数。环形旅行是在同一个车站开始和结束的旅行。考虑到租赁自行车的价格,用户不太可能拔掉自行车的插头,例如去超市而不把自行车插到另一个底座上,然后回来,除非这是一个非常快速的差事。在 user_type=2 之间进行环形旅行的可能性更大,因为他们可以骑自行车游览马德里市和一些有趣的景点(例如 Retiro park ),比步行更快。

user_type 
0     5.336718 
1     2.444495 
2    10.882962 
3    31.754358 
Name: count, dtype: float64

正如我们可以看到的,组 2 的用户比组 1 的用户有更多的环行程。第三组(EMT 雇主)的环形行程也有令人惊讶的 31%,这可能表明大约 31%的“行程”是为了维护电动自行车,而不仅仅是为了移动车队!

如果我们看看 user_type=1 最频繁的旅行

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

并且用户类型=2

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以对环形旅行得出同样的结论。

恶意软件分类中的计算机视觉技术分析

原文:https://towardsdatascience.com/analysis-of-computer-vision-techniques-in-malware-classification-50b387479a62?source=collection_archive---------33-----------------------

恶意软件分类中使用的计算机视觉技术介绍

任何故意设计来对其所在系统造成损害的软件。主要类型有蠕虫、特洛伊木马和广告软件。如今,每年大约产生 350,000 个样本,这对于反病毒公司来说越来越困难,因为只有 50%的新恶意软件被报告,而在这 50%中,只有 20%能被现有的反病毒软件检测到。因此,快速计算会告诉 90%的新恶意软件不会被反病毒软件检测到。

用于对恶意软件进行分类的一些传统方法有

  • **沙盒检测:😗*在这里,任何可疑软件都在虚拟环境中运行,在虚拟环境中,它的行为可以被监控,并且基于它的行为,它可以反病毒,它将判断该软件是否是恶意的。但是这种方法可以被恶意软件绕过,恶意软件是如此之大以至于不能在虚拟环境中处理,恶意软件文件以不可识别的模糊文件格式保存,等等。沙盒检测属于基于行为的恶意软件检测。
  • **基于签名的检测:**这里反病毒公司为恶意软件创建一个签名,并在其数据库中更新它。因此,反病毒软件会将它扫描的软件的签名与反病毒公司数据库中的签名进行比较。如上所述,现在的问题是每天大约有 350000 个恶意软件被制造出来,公司很难为每个恶意软件创建签名。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:Reddit

所以现在反病毒公司正在使用深度学习技术来对抗恶意软件。在这里,我们将深入探究基于 CNN 的分类。

当归类为灰度图像时,特定类别的恶意软件图像的相似性首先见于恶意软件图像:可视化和自动分类。在本文中,他们展示了特洛伊病毒的样子。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:恶意软件图片:可视化和自动分类

。文本部分包含要执行的代码和。靠近结尾的文本部分是全黑的,表示结尾零填充。的。数据部分包含未初始化的代码和。rsrc 包含模块的所有资源,就像应用程序可能使用的图标一样。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:使用图像表示的恶意软件分类

上面的图片来自论文使用图像表示法进行恶意软件分类,他们展示了不同家族的恶意软件图片,对于一个家族,我们可以在图片中看到相似性。

在论文中,针对恶意软件分类的卷积神经网络展示了常见恶意软件家族的图片,如 Rammit、Gatak(木马版本)等

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:用于恶意软件分类的卷积神经网络

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:用于恶意软件分类的卷积神经网络

结果已发布

  • 因此,论文恶意软件图像:可视化和自动分类,他们使用 GIST 来计算纹理特征,并使用欧氏距离的 K-最近邻来对它们进行分类。因此,本文的主旨是利用 Gabor 滤波器对图像进行小波分解。Gabor 滤波器是一种线性滤波器,主要在分析区域的特定方向上分析图像中的频率内容。它们用于边缘检测、纹理分析和特征提取。他们使用了来自 25 个家族的 9458 个恶意软件,准确率达到 98%
  • 在论文用于恶意软件分类的卷积神经网络中,他们训练了三个模型。
  1. 1.CNN 1C 1D 频道、CNN 1C 2D 频道和 CNN 3C 2D 频道。CNN 1C 1D 由 NxN 像素(N=32)的输入层、卷积层(64 个大小为 11×11 的过滤图)、最大池层、密集连接层(4096 个神经元)、9 个神经元的输出层组成。结果是准确度:0.9857 和交叉熵:0.0968
  2. 2.CNN 1C 2D 由 NxN 像素(N=32)的输入层、卷积层(64 个大小为 3×3 的过滤图)、最大池层、卷积层(128 个大小为 3×3 的过滤图)、最大池层、密集连接层(512 个神经元)、输出层组成。9 个神经元。结果是准确度:0.9976 和交叉熵:0.0231
  3. 3.CNN 3C 2D 由 NxN 像素(N=32)的输入层、卷积层(64 个大小为 3×3 的过滤图)、最大池层、卷积层(128 个大小为 3×3 的过滤图)、最大池层、卷积层(256 个大小为 3×3 的过滤图)、最大池层、密集连接层(1024 个神经元)、密集连接层(512 个神经元)、输出层组成。9 个神经元。结果是准确度:0.9938 和交叉熵:0.0257
  • 在论文使用图像表示的恶意软件分类中,他们使用了 2 个模型,一个 CNN 模型有 4 层(2 个卷积层和 2 个密集层)和一个 Resnet18。正常 CNN 的准确率为 95.24%,Resnet 的准确率为 98.206 %。

结论

如你所见,这些论文发布的结果显示,大约 95–98%的恶意软件被检测到,这表明计算机视觉技术比传统方法好得多。使用图像表示的恶意软件分类也显示了一个使用 CNN 和单词嵌入的模型,准确率约为 99.5%。

不仅是计算机视觉,一些研究人员也发表了一篇论文,使用了强化学习、自然语言处理等。

这些天来,攻击者也开始使用自动化,反病毒很难用过时的方法来保护我们的系统。

麦肯锡全球研究所的研究估计,人工智能和机器学习等技术驱动的自动化可以在未来半个世纪内以每年 0.8%至 1.4%的速度提高生产率。麦肯锡还估计,9 万亿至 21 万亿美元的全球经济价值创造取决于网络安全环境的稳健性。

深度学习能够实现非常好的准确性,而且与传统方法相比,它占用的硬件更少。所以也许这就是未来。

我希望这是一个很好的介绍,并将很快张贴我在这一领域的想法

再见,soon✌

参考:

[1] Ajay Singh使用图像表示的恶意软件分类 (2017),关键基础设施网络安全和网络防御跨学科中心

[2]丹尼尔·吉尔伯特,用于恶意软件分类的卷积神经网络 (2016), IEEE

[3] L. Nataraj,S. Karthikeyan,G. Jacob,B. S. Manjunath 恶意软件图像:可视化和自动分类 (2011), Vison 研究实验室

https://www . welive security . com/WP-content/uploads/2018/08/Can _ AI _ Power _ Future _ malware . pdf

https://techbeacon . com/security/anti virus-dead-how-ai-machine-learning-will-drive-cyber security

务必查看我的个人资料:

https://github.com/rajanarasimhan

https://www.linkedin.com/in/raja-narasimhan-645329171/

https://rajanarasimhan . github . io ./

利用人均数据分析新冠肺炎

原文:https://towardsdatascience.com/analysis-of-covid-19-using-per-capita-data-f8f9a31a2c4d?source=collection_archive---------37-----------------------

媒体报道通常不提供每百万居民的病例数,这改变了一切!

我们每天都被关于新冠肺炎病毒传播的表格、图表和文章轰炸;下表是一个典型的例子。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然而,简单地显示感染和死亡的总数并不能给我们提供太多的信息,因为我们是在比较完全不同的人群规模。中国人口是法国人口的 20 多倍。

如果我们想比较不同国家的行动,我们需要按照每百万居民的病例数来考虑疾病的传播。这个事实似乎是显而易见的,但是,它几乎从来没有被媒体或官方组织所应用。

此外,由于 80%以上的死者年龄在 65 岁以上,我们需要更进一步,检查每百万 65 岁以上居民的病例/死亡人数。当比较不同的国家,或者在同一个城市的不同社区时,这是正确的。

值得注意的是,还有其他一些问题难以彻底理解新冠肺炎传播。主要是,我们在获取可靠数据方面存在许多问题:

  • 许多病例是无症状的,所以即使我们能检测所有的病人,我们也不能得到真实病例的可靠数字。
  • 许多国家未能对所有患者进行检测,并且在获得结果方面存在滞后。因此,这些结果应追溯报告。
  • 死亡人数没有同等统计,因为许多国家,如英国,只报告在医院的死亡人数

由于各国之间的数据质量差异很大,为了进一步改进我们的比较,有必要:

  • 对一段时间内的数据进行平均,以减少数据中的噪音
  • 在相同的时间基础上绘制数据,例如时间零点是检测到 100 个病例的时间。

我现在描述我用一些简单的数据工具得到的结果。数据最后更新于 2020 年 4 月 20 日;但是,您可以运行下面提到的笔记本来获取更新的图表。

图 1:每百万居民的平均死亡人数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后一天 2020 年 4 月 20 日

我被图 1 的图表震惊了,它显示了 5 天内平均每天的死亡人数。比利时的死亡率最高,但你甚至不会在当地媒体上读到它。您可以访问https://www . statista . com/statistics/1104709/coronavirus-deaths-world wide-per-million-residents/来确认我的结果

图 2:65 岁以上每百万居民的平均死亡人数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后一天 2020 年 4 月 20 日

图 2 显示了与图 1 相同的数据;然而,它只考虑 65 岁以上的人口。在这种情况下,我们可以看到意大利的老年人死亡率比西班牙低,尽管他们的人口中老年人的比例更高——正如媒体几周前试图解释意大利的死亡率一样。

图 3:每百万居民累计死亡人数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后一天 2020 年 4 月 20 日

在图 3 中,我们可以看到比利时仍然处于糟糕的状态,尽管降低了增长率。

图 4:比利时:平均每日死亡/确诊病例数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

比利时

在图 4 中,我们重点关注比利时的确诊病例和死亡病例。我们看到每天的死亡人数已经停止增加。请注意,这些图表是基于 5 天的移动平均线。

图 5:圣保罗市:每 10 万居民的死亡人数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在我看来,最重要的分析是在地方层面。

图 5 是巴西圣保罗市的街区地图,显示了每 10 万居民的死亡人数。这里我们可以看到,在地方一级,受影响的地区有很大的可变性。如果邻近地区的死亡率与其他因素相关,如卫生设施的可及性、人口密度和收入水平,我们可以更好地理解疾病传播的原因以及如何遏制它。

不幸的是,这张图表所依据的详细数据并未公开。它是向 Sistema eletronico de Informa ao cidado e-SIC 申请的,并且只给了我一次。

您可以通过访问https://rubens mau . github . io/Sao Paulo _ deaths _ neighborhood . html来访问此交互式图表

结论

我希望这篇文章能帮助媒体和其他组织理解报道每百万居民病例的必要性,从而提高他们的报道质量。此外,这种类型的分析可能对地方和国家一级的未来政策具有重要价值。不仅要提供图像,还要提供这些报告所依据的数据,这一点非常重要。

您可以访问生成这些图表的两个笔记本。它们可以通过 Kaggle 访问,您可以在线运行它们(参见下面的说明)并访问数据。不需要编程技能。

https://www.kaggle.com/rubensmau/covid-19-deaths-per-capita

https://www . ka ggle . com/rubens mau/新冠肺炎圣保罗城市数据

如何运行 KAGGLE 笔记本

  1. https://www.kaggle.com/account/login免费注册
  2. 点击以上链接
  3. 点击页面右上角的“复制和编辑”按钮
  4. 点击“全部运行”运行笔记本
  5. 您可以通过单击页面右侧的数据选项卡来访问数据。

使用 https://matplotlib.org 的和 https://altair-viz.github.io/的制作的图表

美国数据科学和 ML 职位空缺分析:EDA

原文:https://towardsdatascience.com/analysis-of-data-science-and-ml-job-openings-in-usa-eda-e9191dddef15?source=collection_archive---------73-----------------------

在这篇文章中,我们将探索美国与数据科学和机器学习相关的工作。

简介:

对于那些在美国积极寻找工作的人来说,这篇文章是一个很好的概述。不幸的是,本文探讨的数据是基于 2018 年 8 月。但我认为,为特定角色招聘员工的公司不会随着时间的推移而发生显著变化。为了帮助求职者,我决定对这个数据集进行探索性数据分析。数据集可以从这里进入。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Trent Szmolnik 在 Unsplash 上拍摄的照片

在这篇文章中,我分析了每个州、公司和所需技能的主要职位(数据科学家、数据工程师、机器学习工程师、数据分析师等)的职位空缺数量。此外,我根据四个主要角色对数据集进行了划分,并分析了每个州中这些特定工作的职位数量。此外,根据这些工作的工作描述,我分析了对于特定的角色,哪些编程语言应该是最受关注的。

1-导入相关库:

2-数据清理和处理:

首先,我们将读取数据集并查看它的外观。仔细观察数据集后,它的列“positon,company,description”的 Nan 值很少,只有 11 个,所以可以删除这些行。对于评论栏,它有大量遗漏的评论,大多是针对初创公司的。这意味着这些公司刚刚成立,因此用 0 替换这些缺失值是合理的。

df=pd.read_csv("alldata.csv")
df.head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

df[df["reviews"].isnull()].head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

print(df.company.isnull().value_counts())
print(df.reviews.isnull().value_counts())
print(df.location.isnull().value_counts())
print(df.reviews.isnull().value_counts())

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同样对于 location 列,我提取了一个表示美国各州的新列。在清理数据集并遵循下面给出的步骤后,我们得到了这些数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

已清理数据

2-数据可视化:

职位空缺最多的公司:

在这一部分,我根据美国各州 2018 年 8 月的数据,筛选出了职位空缺数量最多的公司。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看到,华盛顿拥有亚马逊和微软等公司提供的最多职位空缺。而谷歌的大部分职位空缺都在山景城。谷歌在其他州也有职位空缺,但在这个图中,我显示了某个特定公司的最大职位空缺数。

空缺人数最多的职业:

在本部分中,我们可以看到空缺职位数量最多的是数据科学家职位,占总职位数的 60%。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

此外,如果我们将这些职位的职位空缺与美国不同的州分开,我们可以看到纽约的数据科学家和分析师职位空缺数量最多。注意:这里我只显示了空缺数量最多的职位(前 20 名)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在下一节中,我们将把工作分为四类——数据科学家、数据工程师、机器学习工程师、数据分析师,我们将根据公司、地点和所需技能对他们进行单独分析。

数据科学家:

在这一部分,我们将首先筛选出与数据科学家相关的所有工作,如下所示:

Data_scientists=df[(df["position"]=='Data Scientist')|(df["position"]=='Senior Data Scientist')|(df["position"]=='Lead Data Scientist')|(df["position"]=='Sr. Data Scientist')]
Data_scientists.head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

df5=Data_scientists.groupby(by="city").size().reset_index(name="count").sort_values(by="count",ascending=False)
df5.head(10)
plt.figure(figsize=(10,7))
plt.yticks(size=20)
sb.barplot(y="city",x="count",data=df5.head(20))
plt.title("Data Scientist Jobs",size=20)
plt.xticks(size=15)

我们可以推断,纽约和旧金山的数据科学家职位空缺最多。接下来,我们将绘制单词 cloud 来描述为数据科学家发布的工作,并进一步评估这些工作所需的技能,主要是所需的编程语言。

首先,我们将创建一个函数,将这些描述的所有单词合并到一个列表中。然后这个列表将用于制作单词云图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看到,机器学习是数据科学岗位最需要的技能之一。现在,我们将发现大多数招聘职位要求的编程语言类型如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看到,几乎 90%的职位空缺都将 python 和 ML 列为最主要的技能,其次是 SQL,这在 70%的职位发布中出现。

机器学习工程师:

在本节中,我们将首先筛选出与机器学习工程师相关的所有工作,如下所示:

ML_engineer=df[(df["position"]=='Machine Learning Engineer')]ML_engineer.head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看到大部分的 ML 工程师工作在旧金山和波士顿,其次是纽约和西雅图,与此形成对比的是数据科学工作主要在纽约。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看到大多数人工智能工程师工作需要的技能的区别,如计算机科学、人工智能、人工智能、算法和深度学习。这就是数据科学家不同于机器学习工程师的地方。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就所需技能而言,ML 和 python 是最主要的技能。我们不需要任何 ML 工程师职位的 SQL,但需要更深入的 ML 知识,因为它出现在所有的招聘信息中。

数据工程师:

在本节中,我们将首先筛选出所有与数据工程职位相关的工作,如下所示:

Data_engineer=df[(df["position"]=='Data Engineer')]Data_engineer.head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看到,大多数数据工程工作都在纽约和旧金山,其次是波士顿。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于数据工程师的招聘信息,我们可以看到出现频率最高的词是大数据、数据、开发、经验等。这意味着我们不需要任何机器学习知识来从事数据工程工作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于数据工程工作,我们可以推断 Python、SQL 和 Java 是最主要的编程语言。对这些工作略知一二就足够了。

数据分析师:

在这一部分,我们将筛选出与数据分析师职位相关的职位发布,如下所示:

data_analyst=df[(df["position"]=='Data Analyst')]
data_analyst.head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以推断,大多数数据分析师的工作都在纽约和剑桥提供。由于缺乏数据,这一数字相当小,但这仍然为 2018 年 8 月的职位发布提供了一个基本概念。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看到出现频率最高的关键词是——团队、SQL、经验、技能、业务。因此,我们可以得出结论,数据分析师的工作不需要太多的编程和机器学习技能,而是更注重团队管理和业务技能。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于数据分析师职位,我们可以得出结论,最主要的语言是 SQL,其次是 python。ML 知识不是主要要求。

结论:

我们可以得出结论,美国的大部分职位空缺都是数据科学家的职位,而且大多在纽约和旧金山。在顶尖技能中,python 和机器学习知识是数据科学家和机器学习工程师最重要的要求。另一方面,SQL 是数据工程师和数据分析师职位最需要的编程语言。

完整代码可在这里获得。

参考资料:

https://www . ka ggle . com/sl 6149/data-scientist-job-market-in-the-us

感谢您的阅读!!!!

如果你喜欢我的工作并想支持我:

支持我的最好方式就是跟随我上 中级

2-在LinkedIn上关注我。

英超数据分析

原文:https://towardsdatascience.com/analysis-of-premier-league-data-7d62fccbd65?source=collection_archive---------17-----------------------

“在英超联赛中很难做出预测,因为不可预测的事情会发生,我很清楚这一点:我以一种疯狂的方式赢得了冠军,却意外地失去了一个。”——乔·哈特

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

乔罗诺通过 Pixabay 获得的图像

英超是迄今为止世界上最有趣的联赛之一。他们有一些最好的经理、球员和球迷!但是,使它真正有趣的是纯粹的不可预测性。有 6 支同样令人惊叹的球队,每个赛季都有不同的球队捧起奖杯。不仅如此,联盟还见证了前 6 名以外球队的胜利。所以,让我们来分析一些例子。

你可以在这里找到整个 jupyter 笔记本

数据收集

对于数据集,可以参考这个 Kaggle 链接。它包含了从 2015/16 赛季到 2019/20 赛季在英超比赛的每一名球员的详细信息。对于每个球员,有 54 个属性,其中一些是— *名字,进球,助攻,创造的重大机会,拦截,盖帽,清道夫解围,出拳,*等。

现在,我们不会在此数据集中寻找 NaN 值并消除它们,因为 NaN 值有其用途。例如,*扑救、清道夫解围、出拳、*等属性是守门员特有的。因此,前锋的这些属性的值将为 NaN。

接下来,我们将使用 read_csv 方法将每个季节的数据读取到单独的数据帧中。然后,我们用。concat()方法。

莱斯特城

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

jorono 通过 Pixabay 获得的图像

莱斯特城最终在 2015/16 赛季赢得了冠军,当时几乎没有人预料到这一点。他们在 2015/16 赛季开始时夺冠的赔率是 5000/1 。从这个数字来看,莱斯特城赢得联赛冠军的几率比圣雄甘地还活着的几率还要低!

然而,尽管所有人都相信,它还是发生了。让我们看看一些数字,评估一下他们是如何做到这一点的。

但是,在此之前,我认为了解球员是很重要的,因为他们的名字会在文章中反复出现。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源

现在,让我们从查看数据集及其属性开始分析。

开始分析的最好方法是查看最明显的属性——进球和助攻。

让我们从联赛最佳射手开始。

现在,类似地,让我们看看顶级组织者(助攻提供者)

从这两份名单中,我们可以看到莱斯特城队的两个名字——里亚德·马赫雷斯杰米·瓦尔迪

现在,我们可以看到里亚德·马赫雷斯最佳得分手最佳组织者名单中。显然,他是莱斯特城获胜的基础。从更大的角度来看,让我们看看进球情况(助攻+进球)。

杰米·瓦尔迪有 30 个进球,其次是里亚德·马赫雷斯有 28 个。这揭示了莱斯特城赢得英超冠军的一大原因。

但是,仅仅进球并不能为你赢得冠军。例如,在同一个赛季,曼城取得了惊人的 71 个进球,而莱斯特为 68 个,但最终以第四名结束。显然,还有更多。

让我们来看看一些数字作为辩护。我们将从另一个野兽般的球员开始——恩戈洛·坎特

从上面的输出可以看出,Kanté是

  • 拦截次数联盟第一
  • 铲球联赛第一
  • 第二名在决斗中获胜

这是防守型中场的一些令人难以置信的数据。他的贡献由此可见一斑。

现在,让我们来看看防守队员

我们可以只看干净的床单,但它可能不会告诉我们整个故事。虽然更多的零失球确实意味着强大的防守表现,但它不会给你其他比赛中有多少失球的细节。比赛中失球多反映了防守差。

因此,我把“每场比赛的失球数”作为我的第一统计数据。但是,重要的是要确保后卫有足够的出场机会。例如,一个有 2 次出场 0 次失球的后卫将会有一个很大的“每场失球数”。不过这个后卫还没有打够比赛,不在考虑范围内。

上面的情节揭示了这些后卫的恒星性能。气泡的宽度表示干净纸张的数量。所以,我们可以看到克里斯蒂安·福赫斯和罗伯特·胡思在莱切斯特城的防守中起到了至关重要的作用,因为他们场均失球更少,并且保持了更多的零失球。

注意耶稣·纳瓦斯是如何丢了很少的球,却没有很多不失球记录的。尽管如此,这仍然是很好的防守。

现在,我们来简单看看莱斯特城的门将卡斯帕·舒梅切尔

我们可以看到他有 38 次出场。让我们把他和其他有着相似外貌的守门员进行比较。

很明显,舒梅切尔比其他人更胜一筹。虽然乌戈·洛里斯少丢了 2 个球,但他也少打了一场比赛。此外,除了少了一次出场,他也少了两次不失球。

因此,我们可以得出这样的结论:主教练克劳迪奥·拉涅利,凭借他令人难以置信的平衡和稳定的阵容,给了莱切斯特城他们的首个英超冠军,战胜了所有的困难!

利物浦的冠军之路!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

jorono 通过 Pixabay 获得的图像

任何英超球迷都可以证明自从尤尔根·克洛普到来后利物浦的表现有所改善。他们慢慢地,但是持续地进步,并且连续赢得了冠军联赛和英超联赛。让我们看看历年的一些数字,分析一下他们 2019/20 赛季的英超夺冠之路。

平衡攻击

利物浦队显然是进攻方。在克洛普的领导下,他们将压力提升到了一个不同的水平。像萨迪奥·马内、默罕默德·萨拉赫和罗伯托·菲尔米诺这样出色的攻击手在进球和助攻方面贡献巨大。但是,据说他们真正的冠军机会是在他们开始攻击‘聪明’之后才开始的。让我们利用我们掌握的数据来看看发生了什么变化。

我们将分析利物浦的“前锋 3”的数据,他们是进球的主要贡献者。

我们可以清楚地看到,进球数量在逐渐下降。仅仅两个赛季,他们的进球数就从 57 个增加到 46 个。然而,他们在这两年中上升了 3 个位置赢得了冠军。

据说这是因为利物浦在 2017/18 赛季后选择采用的平衡方法。

防御力量

2018 年 1 月,利物浦以 7500 万英镑的价格签下了维吉尔·范迪克,这使他成为当时世界上最昂贵的后卫。利物浦最近的成功很大一部分与他的转会有关,因为据说他极大地改变了利物浦的防守。与他一起,利物浦以阿利松·贝克尔的名义购买了一名门将,他最终结束了利物浦多年来的门将困境。让我们来看看分析他们表现的一些数字

利物浦的守门员

2016/17 — 洛里斯·卡里乌斯西蒙·米尼奥莱

2017/18 — 洛里斯·卡里乌斯西蒙·米尼奥莱

2018/19 — 阿利松·贝克尔

2019/20 — 阿利松·贝克尔阿德里安

上面的泡泡剧情讲述了《goal》中阿里森冲击的故事。在利物浦的第一个赛季,他有 21 场比赛没有失球,只丢了 22 个球!他也因此获得了金手套奖。

来到他的第二个赛季,他在 29 次出场中丢了 23 个球。阿德里安当守门员时,其余的球都被丢了。下面将进一步解释。

范迪克的进攻、传球、进球也在 2018 年加盟利物浦后有了明显的提升。然而,这并没有导致他的防守表现下降,他们始终保持一致。

从下面的数字可以明显看出 2017/18 赛季下半段本身(签下范迪克后)防守数字的提升。下半赛季的守门员是洛里斯·卡里乌斯,他比守门员西蒙·米尼奥莱少丢 10 个球,多 3 场不失球。

至于 2019/20 赛季,阿里森受伤了一段时间,利物浦的第二选择阿德里安不得不顶替他。这是大量失球的主要原因。每个人都会同意,在球门阿德里安是没有阿里森有效。事实上,在 2020 年 10 月 4 日,利物浦 2 比 7 输给了阿斯顿维拉。那天守门的是阿德里安。

结论

莱斯特城和利物浦赢得联赛冠军看起来令人惊讶,但对单个球员表现的分析让故事变得清晰。莱斯特城队在场上的每个位置都有强大的球员,他们的状态令人难以置信,他们的人数明显高于其他球队,而利物浦队在进攻心理上的变化以及他们新签下的维吉尔·范·迪克和阿利松·贝克尔慢慢地扭转了对他们有利的趋势。

问题

谁在所有 5 个赛季中进球和助攻数最高?

目标

助攻

Ans:最高得分手— 沙治·奥阿古路(102 球),最高助攻— 凯文·德布劳内(65 球)

2)哪个赛季的进球数最高,或者哪个赛季的得分最高?

**Ans:**2016/17 赛季进球数最高(983 球)

参考

  1. Kaggle 数据集https://www . ka ggle . com/krishanthbarkav/English-premier-league EPL-player-statistics
  2. Jovian.ml 【零到熊猫】课程https://jovian . ml/learn/data-analysis-with-python-零到熊猫
  3. NumPy 文档——https://numpy.org/devdocs/user/quickstart.html
  4. Seaborn 图书馆信息——https://seaborn.pydata.org/

就这样,我们到了文章的结尾。非常感谢你的阅读,我真诚地希望你喜欢它!请随时留下反馈或使用下面的链接与我联系。

联系我

推特 | Instagram | 脸书 | LinkedIn

美国历史上总统演讲的分析

原文:https://towardsdatascience.com/analysis-of-presidential-speeches-throughout-american-history-bb088d36d7dd?source=collection_archive---------49-----------------------

自然语言处理从一开始就引起了我的兴趣。我第一次听说它是在一次基于单词模式的作者预测演示会上。后来用几十年的歌词解释给我听。所以我也试图从历史的角度来使用它。我在哪里可以得到大量的数据?总统:他们喜欢交谈!或者至少大部分是这样。所以我创建了一个关于美国历史上总统演讲的 NLP 项目。它包括了从乔治·华盛顿 1789 年的第一次就职典礼到 2020 年 4 月底关于冠状病毒的演讲的所有 44 位总统。是的,我说过像格罗弗·克利夫兰这样的 44 位总统有两个独立的任期。在你阅读的时候,给你一个合理的警告:我主修美国研究,教了 13 年历史。所以,不要介意我在介绍数据科学知识的同时,也介绍一些总统知识。尽情享受吧!

言语组织

我的大部分演讲都是从弗吉尼亚大学米勒中心获得的。他们收集的演讲和其他原始资料被认为是一流的,甚至被哈佛的数据库引用。当我开始整理和分析我的数据时,我意识到一些总统应该有比这本集子里更多的演讲。我可以从 NLTK 的语料库中添加杜鲁门和艾森豪威尔遗漏的国情咨文演讲来解决这个问题。这本文集里的每一位总统的演讲都已经被米勒中心收藏了。我的分析总共包括 1018 篇演讲,大约 2380 万字。我的数学方面确实需要看一些数字和统计数据。最短的演讲来自乔治·华盛顿的第二次就职演说,有 787 个单词。另一方面,最长的演讲是哈里·杜鲁门在 1946 年发表的国情咨文,演讲人数接近 17 万。他不得不讨论诸如战后经济、保护退伍军人、创建联合国、共产主义问题等历史性话题……而这还不到前半部分!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这些数据,每一个都是完整的演讲,有可以理解的不对称性。我可以从其他来源检索其他演讲,但这将使它极度偏向现代。像收音机和电视这样的技术导致了更多的演讲而不是写信。数据集中已经有这样的例子,包括对全国的电视讲话和罗斯福的炉边谈话。

我用颜色标记了我的条形图,来代表任职超过一届的总统和任职不超过四届的总统。林登·约翰逊(Lyndon Johnson)有很多历史事件要处理,比如民权法案和越南战争。另一方面,只有一篇演讲稿的两位总统在任期几个月后去世了。威廉·亨利·哈里森死得很特别,因为他在暴风雪中没穿外套就发表了两个小时的就职演说。

主题建模

我首先把每一篇演讲分开,检查所有单词的出现频率。在这里,我可以列出自己的停用词列表,为计数矢量化做准备。有些词我发现并不奇怪,比如“united”、“states”和“america”。一个让我措手不及但有意义的词是“谢谢”和“你”。想想有多少演讲是以这句话开始的,或者是在后来感谢人们的成就。另外两个值得注意的词是“掌声”和“文字记录”。这只是展示了演讲是如何被历史记录的,以及总统和他们的演讲稿撰写人是如何在演讲中做笔记的。

我用最大 df 为 40%的计数矢量化处理了数据。这使得许多随机的主题可以从我的主题建模中过滤掉。另一方面,我将 NLTK 的停用词与我的十几个单词列表结合起来,过滤掉出现过多的单词。我决定用非负矩阵分解(NMF)来建模。我试验了各种主题建模器和矢量器。利用我的历史知识,我不喜欢任何关于 LDA 发布的东西。在 NMF,TDIF 矢量创建了不匹配的主题。它有两个基于越南战争的不同类别,但错过了我在最终结果中发现的主要主题,我将在下面讨论。我还尝试了关注多少话题。NLP 的这一部分真的很像金发女孩和三只熊。我试了 5 次,太少了。我试了 15 次,太多了。我最初运行的 10 个最终是完美的数量。

当我第一次运行它时,我开始欣赏 NLP 全部功能。前两个话题是与国内和经济事务有关的词。好吧,有道理。然后我看了第 3 题。我意识到所有的词语都与奴隶制和内战前的妥协有关。我欣喜若狂。NMF 应该更适合短文本文档。然而,它的好处却大放异彩。NMF 通过直接分解术语-文档矩阵来学习主题,它降低维度来找到演讲的主要主题。在这里,它听取了所有的演讲,并意识到奴隶制是一个不仅笼罩了我们国家几十年导致内战的话题,而且在废除奴隶制几十年后仍是总统们讨论的话题。

我开始寻找与所有 10 个主题的相关性。主题建模让我看到了一些我不会想到的主题,比如公务员编制。我过去常常用大约 20 分钟来教这个,但是这表明老师应该更加重视这个。此外,还有一个我最喜欢的题目叫做“鼓励”。有些总统的竞选口号是积极的,这使他们成为总统,但这种情况已经持续了多年。这个话题在 20 世纪 50 年代随着电视的出现而出现,并证明电视对总统职位的塑造可能超过任何发明。有几个话题,不管我怎么修修补补,我都惊讶地从未作为主要话题出现过。我找不到与两次世界大战或新修正案的产生有关的词汇或话题。

我是一名视觉学习者,创建热图教会了我更多。总结每个主题的单词,你可以跨时间观察它们。

doc_topic_nmf = pd.DataFrame(doc_topic.round(3),
 index =df.Year.astype(int), 
 columns = [“Domestic”,”Economy1",   “Slavery”,”Economy2",”Mid_1800s_Politics”, 
 “Encouragement”,”Civil_Service”, “Cold_War”,”20th_Cent_Politics”, “Panama_Canal”])
dtn = doc_topic_nmf.groupby(doc_topic_nmf.index).sum()dtn.reset_index(level = 0, inplace = True)
graph_topics = dtn.groupby(dtn.Year // 10 * 10).sum()
graph_topics.drop([‘Year’], axis=1, inplace = True) 
plt.figure(figsize = (25, 6))
sns.heatmap(graph_topics.T, annot=False, cbar=True, cmap=”Blues”)
plt.xlabel(‘Year’, fontsize = 20)
plt.xticks(fontsize = 14)
plt.yticks(fontsize = 16)
plt.title(‘Speech Topics Over The Years\n’, fontsize=25)

下图中最暗的方框属于 20 世纪 60 年代的冷战。这个时期无论是好的(太空竞赛)还是坏的(古巴导弹危机)都在许多方面包围着美国。19 世纪政治中的黑暗时期展示了这是一个不应该被缩短的时期。围绕国家银行的政治争论已持续多年。此外,美墨战争以及天定命运思想塑造了我们国家的形状和土地。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

情感分析

我做的第二个主要分析是情绪分析。我小心翼翼地研究这个问题,因为我知道我的数据是预先写好的演讲稿。有一半的时间,它们不是由总统本人写的,而是由一组演讲稿撰写人写的。如果你想要真实的感受,去 YouTube 上听 LBJ 的磁带。或者你在推特上关注唐纳德·特朗普。然而,最终,我看到了与我们许多总统相匹配的情感结果。我利用了 NLTK 的 VADER 情感强度分析器和它的基本情感分析器。这些工具可以让你看到消极和积极的评价,但我决定关注他们的积极得分。在这两个方面,分数都很低,这是意料之中的。这些演讲是基于内容的,这是一件好事。即使当一位总统传达一些负面的东西,比如 20 世纪 50 年代的共产主义,情绪分析也不会注意到这一点。另一方面,看看著名的葛底斯堡演说的优美语言:

八十七年前,我们的先辈在这个大陆上创建了一个新国家,它孕育于自由之中,奉行人人生而平等的原则

也许现在你正在热情而模糊地读着那句经典的台词。是的,像“新”和“相等”这样的词会得到分数。但总的来说,这涉及到许多中性语言,当串在一起时,有着非常不同的含义。但这就是情绪分析的神奇之处。它能捕捉到细微的差别。此外,VADER 是专门为处理特定领域语言而设计的。

为了分解每个总统的情绪,我创建了以下函数:

def sentiment_analysis_graph(president):
 filter1 = df.President.str.contains(president)
 func_df = df.loc[filter1]
 text = ‘’.join(str(func_df.Split[:]))
 score = SentimentIntensityAnalyzer().polarity_scores(text)
 return score[‘pos’]

然后我把他们的积极得分加到我的数据框中,这样我就可以用表格来描绘它了。如下图所示,德怀特·艾森豪威尔拥有最高的乐观情绪。这可以用 20 世纪 50 年代的繁荣、文化和良好的经济来解释。在过去的半个世纪里,这一数字总体上较高,这与“鼓励”的主题建模相关。令我惊讶的是,在大萧条、越南战争或其他战争的艰难时期,人们的积极性并没有降低。在我的负面情绪分析中,那个点也没有见顶。我想这又回到了美国总统在艰难时期使用的鼓励词汇,集会呐喊和安慰的语言。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

总统积极情绪

有一个更好的方法来可视化这些信息。由于这些数值非常相似,所以条形图实际上并不适用于比较多位总统。很容易把艾森豪威尔看作是最积极的,或者把安德鲁·约翰逊看作是最不积极的,但是有太多的总统之间存在着千分之一的差异。然而,树形图显示了从最积极到最不积极的明显转变。为了创建树形图,我没有编写任何 Python 代码。我根据总统的情绪得分创建了一个 CSV 文件。然后我把这个和我的主要演讲一起上传到 Tableau。我喜欢这个可视化工具如何帮助组织数据,是交互式的,并让我对特性进行颜色编码。

我想指出的是,有两位总统排在了最积极的前十位。在我的美国历史课堂上,约翰·亚当斯被我戏称为“反弹总统”。他追随乔治·华盛顿,但却永远无法达到他的水平。这再加上 XYZ 事件,使他成为唯一一位只任职一届的开国元勋。这张树状图表明他是一位伟大的演说家。很久以后,在我们的历史上,你有吉米·卡特,另一个挣扎着当总统的人。我曾经听一位非常保守的大学教授说,卡特是最适合当总统的人。他的演讲体现了那种善意。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

总统积极性树形图

然而右下角是最不积极的总统。使用内容知识,这与历史相关。安德鲁·约翰逊是第一个被弹劾的总统。他与国会激进的共和党人相处不好。他们通过了《任期法案》,该法案要求参议院批准任何文职官员的免职,但他很快就违反了该法案。这些关于重建计划的争论和分歧导致了较低的情绪得分。詹姆斯·布坎南和约翰·泰勒都被认为是最糟糕的总统。你认为唐纳德·川普治下的员工留任很糟糕……约翰·泰勒的整个内阁在他当选总统几个月后就辞职了!威廉·塔夫特不想当总统。塔夫脱从来不想处于唯一的权力位置。然而,他的妻子和泰迪·罗斯福对他有政治野心,这让他顺从了。这些数据显示了他的不快和他对最终最高法院首席大法官职位的渴望。

单词云

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我做的最后一个 NLP 分析是比较不同总统使用的热门词汇。我使用了单词云来突出显示使用频率较高的单词。我不打算对所有 44 位总统都这样做,但我选择了华盛顿和林肯这样明显的人以及一些个人最喜欢的人。这些单词云中有许多词汇提到了政府及其特征,如参议院或宪法。我也观察了两位我个人认为不具备演讲技巧的总统。为了保持公正,我不想指名这些额外的主席。果然,数据显示个人观点并不总是正确的,因为其中一个人有一个词云,可以与我选择的“伟人”相媲美。另一个……无话可说。

告别演说

我希望你喜欢阅读我的项目,就像我喜欢创建它一样。我试图在整个项目中保持平衡。我没有包括基于一个政党的比较或分组演讲的分析,主要有两个原因。第一,我不想增加分裂文化。其次,共和党和民主党并非一直都在。像联邦党人这样的政党只存在了这个国家的前 50 年。我不想在计算中将老党派归入“其他”一类,因为这些党派的观点截然不同。我在一个我的政治信仰与我所教的家庭不匹配的地区教了很多年的历史。对学生来说,我最大的收获就是试图让他们看到事物的两面性。如果你有兴趣查看这个项目的代码和资料,请查看我的 Github:

[## nicolesemerano/Metis-Project-4-总统演讲-NLP

此存储库仍在更新中。现在,看看我的代码,关于我使用…

github.com](https://github.com/nicolesemerano/Metis-Project-4-Presidential-Speeches-NLP)

我在 https://nicolesemerano.github.io/还有其他作品。

我把乔治·华盛顿在他的告别演说中的想法留给你们。他对自己总统任期的看法与我对这个项目的看法一致。

“我的感情不允许我中止深深的感谢……因为我从那时起就享受到了机会,通过忠诚和坚持不懈的服务来表达我不可侵犯的感情,尽管它的用处与我的热情不相称。”

海德拉巴的学校分析

原文:https://towardsdatascience.com/analysis-of-schools-in-hyderabad-db921b392956?source=collection_archive---------61-----------------------

数据科学顶点项目

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:罗恩·汉森在 Unsplash 上拍摄的照片

作为我在 IBM 关于 Coursera.org 的应用数据科学顶点课程的一部分,我使用 FourSquare API 分析了海德拉巴的学校分布。在本文中,我将讨论我分析数据并从中提取有意义信息的方法。

[## milindkesar/Coursera_Capstone

应用数据科学。通过创建……为 milindkesar/Coursera_Capstone 开发做出贡献

github.com](https://github.com/milindkesar/Coursera_Capstone)

简介

在这篇文章中,我分析了海德拉巴市的学校分布。这对于确定学校基础设施需要发展的领域具有重要意义。

为了获取海得拉巴的学校分布,我用过 FourSquare API。

背景

每个人都有机会在学校接受优质教育,这一点至关重要。这是教育的基础。海得拉巴有很多好学校,但是它们都集中在某些街区。

海得拉巴的几个街区缺乏学校等基础设施。为城市的发展确定这些区域并为每个人提供方便的受教育机会是很重要的。

问题

政府需要发展学校基础设施,要么在这些地区建造学校,要么支持在这些地区发展私立学校,以便向所有人提供容易获得的优质教育。然而,为了做到这一点,有必要确定这些街区。所以在这篇文章中,我分析了海得拉巴的学校分布,并确定了这些街区。

当人们搬到城市并打算买房或租房居住时,这些信息也很有用,因为他们肯定希望选择一个交通便利的街区,并为他们的孩子提供许多好学校。

世卫组织会感兴趣吗?

正如我先前解释的那样,目标受众将是希望建设学校基础设施的政府机构、希望在具有良好潜力的地区建设学校的私营部门机构,以及在不同社区寻找房屋以确定哪些房屋更接近好学校的人。

数据:采集和清理

数据来源

我用漂亮的汤刮过海德拉巴的各个街区,从这个来源

然后我用 Python 中的地理编码器库获得了这些街区的纬度和经度。

然后,我使用 FourSquare API 获取每个街区各种学校的位置,将每个街区的限制设置为 100 个,半径为 1 公里。

为了绘制 choropleth 地图,我从这个获得了海得拉巴的 geojson 文件。

数据预处理

我已经丢弃了数据集中一些不需要的条目。存在数据重复的情况,因为一所学校可能距离每个居民区不到 1000 米,因此,同一纬度和经度可能在这两个居民区出现两次。我已经删除了此类副本,并保留了此类数据的第一份副本。

所用数据的最终形式

这是所用数据帧的前 9 个条目的图像。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每行对应于一所特定的学校及其信息,即它所属的街区、类别、名称和位置。

数据帧中共有 235 个条目

利用这些数据,我分析了海德拉巴的学校分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

海德拉巴的学校

可以看出,学校更多地集中在市中心,这是可以预料的。

方法论

首先,如前所述,数据已经被检索和清理。数据包括每个街区半径 1 公里内的学校,限制为 100 所。

接下来,我们通过探索学校所属的各种类别来分析数据。

在此之后,我们使用可视化的 choropleth 图以更具解释性的方式探索每个邻域中的分布。这让我们对学校的分布有了一个很好的了解。

然后,对于那些没有学校的街区,我们通过在每次迭代中增加 100 米的半径来找到到最近学校的距离,直到使用叶找到一所学校。

在获得这些精确的数据后,包括每个街区到最近学校的距离和每个街区的学校数量,我们使用 K-Means 对这些数据进行聚类。这有助于我们确定哪些地区需要改善,哪些社区拥有良好的学校设施。

最后,我们将讨论和总结哪些社区需要改善学校设施,哪些地区拥有非常好的设施。

分析

基于从关于学校的叶获得的数据,我探索了学校所属的类别。

类别

各类学校如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如我们所看到的,大多数学校都“没有提到”他们的类别。有趣的是,这些学校提供从幼儿园到高中的教育。因此,发现只有少数学校只提供小学/游戏水平的教育并不奇怪,因为大学校已经涵盖了这一点。此外,“学生中心”分类学校提供从幼儿园到高中的教育。

街区学校分布

使用地图,我们可以很好地了解学校的分布。

(注:这张地图不包括塞康德拉巴德的街区,因为我只能获得 GHMC 所覆盖的那些街区的地理空间数据。)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从地图上可以清楚地看到,大多数学校都集中在市中心,特别是在 Abids、Himayath Nagar、Basheerbagh 地区附近。事实上,这些街区有很多好学校,而且彼此距离很近。

从地图上可以清楚地看出,越靠近市郊,学校的密度越低。这是意料之中的,因为市中心附近的街区比郊区更拥挤。

此外,这些都是老地区,郊区正在开发。

聚集邻居

我们现在将使用 K-Means 聚类算法根据到最近学校的距离和每个街区的学校数量将街区聚类成 3 个聚类。

这些特征为确定需要改善的街区奠定了良好的基础。

离学校最近的距离在半径 1 公里到 2 公里之间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据帧的前 5 个元素

接下来,我们研究不同的集群。每个集群的平均特性如下。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每个聚类的平均值

显然,纬度和经度的平均值在这种情况下没有任何意义。

很明显,标记为 0 的街区不仅有 1 公里内的学校**(让我提醒你这是最近距离的起点,不能再好了)而且有许多学校可供选择,平均 18.63 。因此,就学校水平而言,这些社区有机会获得优秀的教育设施。该集群中的一些街区是 Abids、Himayath Nagar 和 Basheerbagh,所有这些街区都靠近市中心。**

标记为 1 的街区在半径近 1 公里范围内也可以方便地获得良好的学校教育设施,平均每个街区大约有 3 所学校。大多数居民区都属于这一类。

标记为 2 的街区是那些需要改善的,因为到最近学校的平均距离接近2 公里,而该街区 1 公里内没有学校。这些大多出现在城市的郊区。这一地区的一些街区有阿尔瓦尔、吉代梅特拉、切拉帕里、帕坦切鲁、ECIL X 路等。****

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

蓝色圆圈对应标签 0,绿色圆圈对应标签 1,红色圆圈对应标签 2。

结果和讨论

我们观察了海得拉巴学校所属的各种类别,其中大多数是提供从幼儿园到 12 年级教育的普通学校。

此外,我们注意到,仅提供初级教育的学校相对较少,这是意料之中的。

接下来,我们观察了学校的分布,发现大多数学校都集中在市中心,在郊区不太密集。这一点在 Choropleth 地图上很明显。

因此,当有人想找一个交通便利、设施完善的社区时,他们应该选择离市中心更近的社区。

最后,我们将居民区分为 3 组,并观察到大多数居民区属于标签 1 的类别,即这些居民区到最近学校的平均距离为 1025 米,这些居民区平均约有 3 所学校。

这些地区包括私营部门可以在其中建学校的潜在街区,因为他们没有很多学校,但同时会有很多人住在这些街区,因为他们可以使用良好的设施。

我们还确定了需要改善的社区,这也是本次分析的目的。

这些街区的学校到最近学校的平均半径接近 2km,这是为到最近学校要素的距离设置的上限。这一地区的一些街区有阿尔瓦尔、吉代梅特拉、切拉帕里、帕坦切鲁、ECIL X 路等。

这些都是需要在学校一级改善的领域。政府应该把注意力集中在这些领域。

在我附上的 jupyter 笔记本中可以找到每一个集群的完整列表。

结论

在这项分析中,分析了海得拉巴的学校分布。此外,各社区根据其对学校设施的访问情况进行了分组。已经确定了需要改善的街区以及那些有可能开办有利可图的学校的街区。此外,还观察了各类学校。

斯里兰卡犯罪分析——第一部分(入室盗窃)

原文:https://towardsdatascience.com/analysis-of-sri-lanka-crimes-part-i-house-breaking-and-theft-4b1a608eefa1?source=collection_archive---------23-----------------------

作为这个分析系列的第一篇文章,我正在分析 2010-2018 年期间斯里兰卡的整体犯罪率变化、入室盗窃和盗窃。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由皮克斯拜的 Gerd Altmann 提供

数据收集和清理

我从斯里兰卡警方官方网站收集了过去 8 年的犯罪数据:警方犯罪统计

由于所有的数据都是 PDF 格式,它被转换成 CSV 使用 python Tabula 库。然后,在 PDF 到 CSV 的转换过程中丢失的数据和损坏的单元格值被 excel 修复。

from tabula import convert_intoconvert_into("distribution_of_grave_crime_abstract_for_the_year_2014.pdf",        "distribution_of_grave_crime_abstract_for_the_year_2014.csv", pages="all")

整体犯罪率

尽管斯里兰卡的人口增加了 7.278 %,但过去 8 年斯里兰卡的总体犯罪率下降了 36.8398%。对所有斯里兰卡公民来说,这是个好消息。向斯里兰卡人民和警察部门致敬。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

犯罪总数与年度。资料来源——vit Hulan

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

年对警察部门犯罪。资料来源——vit Hulan

你需要担心的城市

与所有其他警察部门相比,以下城市的犯罪率高于 95 %!

  1. 努格戈达
  2. 凯拉尼亚
  3. 拉维尼娅山
  4. 拉特纳普拉
  5. 甘帕哈

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

犯罪数量与年份。资料来源——vit Hulan

你不用担心就能放松的城市

与所有其他警察部门相比,以下城市的犯罪率低于第 10 个百分点!

  • 哈顿
  • 坎塔莱
  • 基利诺奇
  • 曼库勒姆
  • 穆莱蒂武
  • Kankasanthure
  • 马纳尔岛

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

犯罪数量与年份。资料来源——vit Hulan

入室盗窃

入室行窃是指强行进入他人住宅的犯罪行为,例如打破门锁或窗户,以窃取他人财物。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源

我想到了分析破门而入和盗窃类别,因为与其他犯罪相比,这是斯里兰卡最严重的犯罪之一。2010 年,大约 32%的犯罪 是入室盗窃。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

入室盗窃犯罪数量与年份。资料来源——vit Hulan

全岛平均每年发生 13818 起入室盗窃事件。那就是每天 38 次入室抢劫!😱

如果你住在下列城市之一,可以考虑买一只高德狗

以下城市的房屋破裂数量高于百分之 90!

  • 努格戈达
  • 凯拉尼亚
  • 甘帕哈
  • 拉特纳普拉
  • 拉维尼娅山
  • 康提
  • 阿奴拉达普拉

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一年中家庭破裂的次数。资料来源——vit Hulan

好奇的人们,
你可以在这里查看 Nugegoda、Mt.Laviniya、Gampaha 和 Kelaniya 警察局管辖的城市,在这里查看康提警察局管辖的城市

离开家后,你可能不用太担心城市

与所有其他警察部门相比,以下城市的入室盗窃事件数量低于第 15 个百分点。换句话说,下面这些城市的房子被砸的概率很低。

  • 坎塔莱
  • 基利诺奇
  • 曼库勒姆
  • 瓦武尼亚
  • 哈顿
  • Kankasanthure
  • 穆拉蒂武
  • 马纳尔岛

是的,他们中的大多数都被列入了犯罪较少的城市名单!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一年中家庭破裂的次数。资料来源——vit Hulan

我们可以开心的事情

尽管 Nugegoda 在警方犯罪排行榜上名列前茅,但今年的犯罪数量呈下降趋势!不仅如此,Nugegoda 是犯罪率较高的城市。Weldone Nugegoda 警察!👏

Nugegoda 的犯罪率梯度为负 87.34,这意味着每年大约减少 87 起犯罪。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Nugegoda 的入室盗窃次数。资料来源——vit Hulan

令人担忧的城市

所有其他警察局的犯罪率都随着时间的推移而下降,但是下列警察局的犯罪率却在上升😱

  • 基利诺奇
  • 穆莱蒂武

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Kilinochchi 和 Mullaitivu 的破屋数量趋势。资料来源——vit Hulan

所以我决定给穆莱蒂武和基利诺奇画一条线性回归线。Mullaitivu 的正梯度为 5.53,这意味着每年大约有 6 起新的犯罪,Kilinochchi 的正梯度为 3.5,这意味着每年大约有 4 起新的犯罪。

尽管基里诺奇和穆莱蒂武的犯罪和入室盗窃数量较少,但趋势图显示,犯罪率正在随着时间的推移而上升。为了避免未来的混乱,必须在上述城市采取某种预防措施!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

预防胜于治疗— 来源

该分析的信息图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

斯里兰卡犯罪分析——入室盗窃。资料来源——vit Hulan

感谢您的阅读。请随意分享你对这个分析的看法。让我们在本系列的第二部分继续讨论。

编码快乐!🍻

切尔诺贝利灾难对空气污染的影响分析

原文:https://towardsdatascience.com/analysis-of-the-chernobyl-disaster-influence-in-air-contamination-d7f674d84827?source=collection_archive---------43-----------------------

使用 Python 和 Pandas 库分析切尔诺贝利数据集。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

普里皮亚季市中心废弃的摩天轮(图片由罗伯特·阿姆斯特朗发自 Pixabay )。

这个项目是由 Aakash N. S .主讲,Jovian.ml 主办的课程用 Python 进行数据分析:从零到熊猫的一部分。

使用的完整笔记本和数据集可以在GitHub或者 威风凛凛中查看。

语境

切尔诺贝利灾难始于 1986 年 4 月 26 日,当时切尔诺贝利核电站反应堆着火,持续了 10 天,导致前所未有的放射性物质从核反应堆中释放出来。该发电厂距离基辅(乌克兰)100 公里,但这起事故的影响远远超出了乌克兰的国界。

受影响最严重的三个国家是白俄罗斯、俄罗斯联邦和乌克兰,但事故的后果并不限于这些领土。由于放射性物质大量进入大气,其他几个欧洲国家也受到了影响。直到今天,这一事件的真正影响仍在争议之中。

对通过食物和饮用水摄入放射性核素的评估主要基于在整个欧洲进行的几次 I-131、Cs-134 和 Cs-137 测量[1],这些是该数据集中报告的放射性同位素。

数据集内容

该数据集将碘-131 (I-131)、铯-134 (Cs-134)和铯-137 (Cs-137)的浓度呈现为在特定位置和日期测量的气溶胶粒子。

感谢

该数据集是从 CEC 联合研究中心 Ispra 的 REM 数据库中提取的。这些数据是从 Kaggle 的数据库下载的,也可以在 JRC 核安全和安保理事会上获得。

数据准备和清理

在第一部分中,我们将通过删除不相关的列和纠正/删除错误的值来执行数据清理,并通过处理缺失和无效的值来为将在后续部分中执行的分析准备数据集。

读取数据集后。csv 文件,我们删除了不会在分析中使用的列,重命名了国家的缩写,并修复了一些错误和缺失的值。

我们可以生成一个地图,显示在分析的数据集中报告值的所有位置。

全屏查看地图,体验更佳!

带有数据集中报告位置标记的交互式地图。

探索性分析和可视化

在这一节中,我们将对数字列执行计算,关注它们的统计数据,绘制图形以帮助可视化,同时在必要时调整数据框架。

每种同位素的最大活度浓度值。

数据集的总时间范围。

检查数据如何在数据集的同位素(I-131、Cs-134 和 Cs-137)之间传播。

原子能机构关于切尔诺贝利灾难的报告1证实了这一结论:"在事故发生后的早期,最令人担忧的放射性核素是 I-131;后来,重点转移到了 Cs-137。”

检查哪个国家在此期间的总体测量次数最多。

我们可以看到,法国、德国和瑞典分别是我们数据集中报告了最多测量值的地区。

在我们的数据集中,捷克斯洛伐克是距离乌克兰最近的国家,因此有理由假设捷克斯洛伐克的放射性同位素暴露水平最高。这个假设可以通过检查下面的柱状图来证实。

核实哪些国家报告的活动集中程度最高。

我们还可以可视化区域的条形图。

验证哪些区域报告了最高的活动浓度。

我们可以确认,对于我们的数据集,报告最高总活动集中度的国家和地区/地区分别是捷克斯洛伐克和维也纳(奥地利)。

为了更好地显示它,我们还生成了一个交互式热图,显示报告的值在我们的数据集中是如何分布的。

切尔诺贝利事故后 60 天放射性同位素活度浓度的交互式热图。

从使用我们数据集的报告位置生成的热图中,我们可以看到大多数放射性同位素的浓度是在中欧测得的,峰值位于奥地利和捷克斯洛伐克地区之间。

推论和结论

切尔诺贝利灾难的影响至今仍有争议。对动植物造成的损害不仅在发电厂附近可以看到,在欧洲的其他几个地区也可以看到。

通过我们的分析,我们能够评估放射性粒子在空气中扩散造成的污染的程度和速度,以及哪些国家和地区受到的影响最大。我们可以证实,在短短几天内,在离核电站所在地非常远的欧洲地区已经检测到高浓度的放射性同位素。

我们分析的另一个有趣的发现是,在**奥地利(格拉茨)**的一个位置,比数据集中的其他区域相对更远,已经测量到比那些区域高得多的活动浓度值。检查关于切尔诺贝利灾难的文献,以验证这种巨大的差异是否是由于数据集中报告的错误值,我们能够确认这些信息确实是所发生的事情。

国际原子能机构(IAEA)关于切尔诺贝利事故的一份报告[1]指出,尽管受影响最严重的三个国家是白俄罗斯、俄罗斯联邦和乌克兰,但由于湿沉降过程,在奥地利和其他邻近国家也有主要污染区。在这些地区,切尔诺贝利的放射性羽流与降雨同时发生,释放的放射性沉积物总量比其他国家多得多。

其他科学论文,如 2001 年发表的关于奥地利土壤被铯-137 污染的研究[2],也证实了这一信息。这些研究对这一分析有很大的价值,如果你想了解更多的细节,我们推荐你去阅读它们。

参考

[1]国际原子能机构(原子能机构),切尔诺贝利事故的环境后果及其补救:二十年的经验,2006 年,网址:https://www-pub . IAEA . org/MTCD/publications/PDF/pub 1239 _ web . PDF

[2] Bossew,P. ,奥地利土壤被铯-137 污染,2001 年,网址:https://doi . org/10.1016/s 0265-931 x(00)00192-2

[3]放射性环境监测(REM),数据库,2020,网址:https://rem.jrc.ec.europa.eu/RemWeb/Browse.aspx?path =切尔诺贝利% 20 数据

[4] Kaggle,2020,网址:https://www . ka ggle . com/lsind 18/Chernobyl-data-air-concentration

德国足球联赛分析

原文:https://towardsdatascience.com/analysis-of-the-german-football-league-bundesliga-35b8ee28765d?source=collection_archive---------30-----------------------

使用 Pandas、Plotly 和 Matplotlib 进行数据分析

这篇文章是对德甲历史的一次旅行。分析历史数据(从 1963 年到 2020 年的所有分类),我们将能够回答很多关于德国联赛的问题。德国联赛有哪些球队夺冠?哪些球队差点赢得德甲冠军?拜仁的霸权是从什么时候开始的?哪些球队罚的比较多?…还有更多!继续读▶️

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

马里奥·克拉森在 Unsplash 上的照片

介绍

下面给没听说过德国联赛的人简单介绍一下。🙌

德国足球联赛通常被称为德甲联赛,是德国第一个国家足球联赛,是世界上最受欢迎的职业体育联赛之一。它成立于 1963 年,由西德的五个地区联赛合并而成,最初由 16 支球队组成。

在一场比赛结束时,获胜的队得到三分(在 1995-96 赛季之前得到两分),失败的队得零分。在平局的情况下,两个队都得 1 分。

在许多欧洲联赛中,倒数三名的球队自动降级到乙级联赛。相反,在德甲联赛中,只有倒数两名直接降级到德甲 2 强。德甲联赛第 16 名和德甲联赛第 3 名为争夺甲级联赛的一个席位进行了两回合的附加赛。

介绍做好了!现在,我们准备分析❤️的数据

Web 数据抽取

德甲联赛(从 1963 年到 2020 年)的历史数据是从 Bdfutbol.com 刮来的。该网站包含欧洲最佳联赛的足球排名。

[## 历史时间。西甲,英超,意甲,德甲,法甲,西甲…

1928 年的 BBVA 甲级联赛,1928-29 年的西班牙甲级联赛,1977-78 年的西班牙乙级联赛…

www.bdfutbol.com](https://www.bdfutbol.com/es/t/t.html#ger)

为了收集数据,我们使用了 BeautifulSoup,这是一个流行的 Python 库,用于从 HTML 页面中提取信息。在获得所有数据后,我们将它存储在一个 Pandas 数据框中以供进一步处理。

此处提供了分析中使用的编程代码。你可以边看文章边看。

[## amandaiglesiasmoreno/德甲

permalink dissolve GitHub 是超过 5000 万开发人员的家园,他们一起工作来托管和审查代码,管理…

github.com](https://github.com/amandaiglesiasmoreno/bundesliga/blob/master/Bundesliga.ipynb)

数据清理

数据清理是将原始数据转换为标准化形式的过程,这种标准化形式可以很容易地用数据分析工具进行分析。在这个特殊的例子中,在使用 Pandas 分析数据之前,我们执行一些清理操作。首先,我们删除不必要的列,并使用英语术语重命名剩余的列(请记住,这些数据是从一个西班牙语网站上搜集来的)。然后,我们修改错误的数据类型。由于星号的存在,列点数(球队在特定赛季中获得的点数)的数据类型是 object 而不是 integer。这些星号用于指网页底部的解释,它们与本分析无关。事实上,由于该列的某些条目中存在这些星号,数据类型没有被正确导入。因此,在将列指针转换为整数数据类型之前,我们必须删除它们。

在清理数据之后,我们获得了一个 Pandas 数据框架,可以很容易地对其进行处理以提取结论。如下图所示,数据框包含了从 1963 年到 2020 年参加德甲联赛的所有球队的胜、平、负场次、黄牌和红牌数量、积分以及排名等信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

德国联赛冠军

德甲联赛在其 57 年的历史中(截至 2019-20 赛季),已经有 57 个不同的俱乐部参加过比赛;然而,他们中只有 12 个人拿到了奖杯。以下情节显示了从 1963-64 赛季到 2019-20 赛季的德国联赛冠军。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如上图,拜仁慕尼黑是德甲历史上最成功的俱乐部,拥有 29 个冠军,代表了超过 50%的联赛。接下来最成功的球队是门兴格拉德巴赫和五次获得德甲冠军的多特蒙德。除了他们,其他球队如云达不莱梅、汉堡、斯图加特、科隆和凯泽斯劳滕也多次举起德甲奖杯。

德国联赛亚军

有 6 支足球队从未赢得过联赛冠军,但他们在一个或多个场合获得亚军:阿亚琛,勒沃库森,柏林赫塔,梅德里奇,莱比锡和沙尔克 04。如下图所示,沙尔克 04 和勒沃库森特别倒霉,分别 7 次和 5 次获得德甲亚军。此外,我们还可以观察到拜仁慕尼黑是更多次获得德甲亚军的俱乐部(10 次)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 2016-17 赛季,RB Leipzig 在德甲联赛中获得第二名。该俱乐部成立于 2009 年,目前是德国领先的车队之一,这主要是因为红牛公司的重大投资。

甲级联赛总赛季数(前 10 名)

云达不莱梅保持着参加德国联赛赛季最多的记录。他们在德甲 57 个赛季中踢了 56 个赛季,只有一次被降级到乙级。拜仁慕尼黑从 1965 年开始不间断地在德甲踢球,汉堡从 1963 年到 2018 年,两人一共踢了 55 个赛季。除了前面提到的俱乐部,多特蒙德、斯图加特、门兴格拉德巴赫、沙尔克 04、法兰克福 Eintracht 也参加了 50 多个赛季的德国联赛。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在上个赛季(2019–20),上图中除了汉堡、斯图加特、凯泽斯劳滕之外的所有球队都在德甲打过球。

每个赛季德国联赛的球队数量

1963 年德甲联赛开始时有 16 支球队,1965 年扩大到 18 支。从那以后,除了 1991-92 赛季之外,德甲俱乐部的数量一直保持不变。在那个赛季,联盟被临时扩大(20 支球队)以容纳来自前东德的俱乐部。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

目前,德国联赛有 18 支球队参赛。参加西甲联赛(葡萄牙)和荷甲联赛(荷兰)的球队数量相同。相反,有 20 支球队参加意甲(意大利)、西甲(西班牙)、法甲(法国)和英超(英格兰)。如今,人们仍在争论是否应该将两支球队纳入德甲联赛,以符合最重要的欧洲联赛。

联赛数量的演变

在整个德甲历史上,拜仁慕尼黑队明显占据了主导地位,赢得了超过一半的联赛冠军。自 2000 年以来,拜仁慕尼黑赢得了 20 场联赛中的 14 场,对于其他球队来说几乎不可能与红军竞争。但是德甲一直都是拜仁慕尼黑称霸的吗?拜仁的霸主地位是从什么时候开始的?让我们用一个简单的情节来澄清所有的问题。

下面的交互折线图展示了各队联赛数量的演变。为了正确地可视化结果,您可以停用一些跟踪,只可视化那些您感兴趣的跟踪。您可以通过单击相关的图例项来显示或隐藏轨迹。此外,您可以通过将鼠标悬停在数据点上来获取关于该数据点的信息(赛季和联赛数)。

德甲联赛的前七个赛季由七支球队赢得:科隆(1963-64)、云达不莱梅(1964-65)、1860 年慕尼黑(1965-66)、德国布伦瑞克(1966-67)、纽伦堡(1967-68)、拜仁慕尼黑(1968-69)和门兴格拉德巴赫(1969-70)。

在 70 年代,德国联赛由两家俱乐部主导,它们都不是 1963 年德甲联赛的创始成员:门兴格拉德巴赫和拜仁慕尼黑。从 1969 年到 1977 年,只有这两家俱乐部有幸举起了德甲冠军奖杯。

门兴格拉德巴赫的辉煌时期是在七十年代。在汉斯·维斯维勒(1964-1975)和乌多·拉特克(1975-1979)的执教下,小马驹乐队赢得了五座德甲冠军奖杯,两座联盟杯,甚至在 1977 年打进了冠军联赛决赛,但他们输给了利物浦。

从 80 年代中期开始,拜仁慕尼黑队完全统治了德甲联赛。到目前为止,他们赢得的冠军比所有其他队加起来还多。然而此后拜仁的霸主地位被数次打破。90 年代,凯泽斯劳滕两次捧起奖杯(1990-91 年和 1997-98 年),在从德甲 2 级升级后赢得了第二个联赛冠军。2008 年,在以 2 分之差击败拜耳后,沃尔夫斯堡赢得了他们的第一个德甲联赛冠军,并有史以来第一次获得了欧冠资格。上一支挑战拜仁霸权的球队是 2012 年在尤尔根·克洛普的魅力指导下的多特蒙德队,那是德甲联赛中最后一个不是拜仁的冠军。此后,拜仁慕尼黑连续八次获得德甲冠军。如今,拜仁慕尼黑是德国在国内和欧洲最成功的足球俱乐部。

所有上述情况也可以在下面的图表中观察到,该图表显示了球队和十年的联赛数量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

团队的历史表现

下面的互动图显示了所有在德甲比赛的球队的历史表现(历年排名)。要显示历史数据,我们必须使用位于左上角的下拉列表选择团队。我们会注意到,在一些赛季中没有可用的数据,这意味着被选中的球队在该特定年份没有参加过甲级联赛。请随意检查您更感兴趣的团队的表现💚

德甲联赛中的黄牌和红牌

有一样东西是全世界大多数足球迷认为理所当然的:使用卡。然而,直到 1970 年墨西哥世界杯,才在足球界首次使用了黄红卡制度。这个系统是由英国裁判肯·阿斯顿在 1966 年发明的,他注意到很多时候足球运动员不理解或者只是忽视裁判的警告,而这些警告在当时是口头传达的。然后,受交通灯颜色(红色和黄色)及其含义的启发,阿斯顿创造了一种颜色编码方案,以清楚地表明足球运动员已被警告或驱逐。

在 1970-71 赛季的德甲联赛中,使用了黄牌和红牌。几年后的 1991 年,德国联赛引入了黄/红牌。球员在同一场比赛中得到第二张黄牌后得到一张黄/红牌,这意味着他必须离开比赛,并被排除在下一场比赛之外。相反,当直接收到红牌时,该球员将被禁止参加比赛更长时间。此外,如果一名球员累积五张黄牌,我们也将被排除在下一场比赛之外。

下图显示了每个赛季的红牌总数。正如我之前说过的,在 1971 年之前,裁判口头向球员宣布他的罚款。在下图中,1971 年之前,红牌代表的是在比赛中仅用言语(不使用卡片)驱逐的足球运动员。在使用卡牌之前,玩家往往得不到惩罚。只有在特殊情况下(真的很强的犯规),足球运动员才被驱逐出场。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们观察到一种增长趋势(特别是在 80 年代快速增长)直到 90 年代中期。从那一刻开始,红牌总数就在随着时间慢慢减少。

同样,下图显示了每个赛季的黄牌总数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从 1971 年到 90 年代,每个赛季的黄牌总数一直在稳步增长。从这个时候起,卡片的数量几乎保持不变,每季大约 1200 张。

在之前的一篇文章中,我们已经分析过西班牙联赛(链接此处!)。对比结果后,我们可以观察到,在这两个联赛中,多年来红牌和黄牌数量的演变遵循相同的模式,如下所示。然而,西班牙联赛的球员比德甲联赛的球员收到的卡要多得多(尽管他们只多踢两场比赛)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在,也许你想知道:在过去的几个赛季中,哪些球队收到了更多的卡片?

下面的图表显示了从 2000 年到 2020 年球队的平均红牌和黄牌数量。如下图所示,拜仁慕尼黑是平均每个赛季收到较少卡片的球队之一。正如我们在以前的文章中分析的那样,西班牙的皇家马德里和巴塞罗那也是如此。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

过去 10 年的表现(拜仁慕尼黑 vs 多特蒙德)

拜仁慕尼黑在过去的 10 年里完全统治了德甲联赛,连续赢得了 8 个冠军。那段时间,唯一挑战过拜仁霸主地位的球队一直是多特蒙德;然而,拜仁慕尼黑展示了比直接对手更强的防守技巧。

下面的图表显示了两个团队从 2010 年到 2020 年的目标。在多特蒙德夺冠的两个赛季(2010-11 和 2011-12),黑黄军团的防守和红军一样好,2011 赛季甚至好得多。然而,从那以后,拜仁慕尼黑在进攻和防守方面表现出了更大的平衡,这解释了它在过去八个赛季中的成功。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多分析!

如果你喜欢读这篇文章,并且想知道更多关于其他联赛的信息😃,看一眼西班牙联赛的分析:)

[## 西班牙足球联赛分析

数据分析📝+历史记录🌐

towardsdatascience.com](/analysis-of-the-spanish-football-league-la-liga-7c636a9317b3)

感谢你阅读❤️

阿曼达

使用 R Shiny 对肯尼亚 2019 年人口普查的分析。

原文:https://towardsdatascience.com/analysis-of-the-kenya-2019-census-using-r-shiny-25ea763da5a3?source=collection_archive---------21-----------------------

该项目为肯尼亚 2019 年住房和人口普查提供了可操作的见解。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

肯尼亚一个选区的人口普查员。

引言。

独立后的第一次人口普查于 1969 年进行,对 1,090 万肯尼亚人进行了统计。此后,该国在 8 月 24 日/25 日午夜进行了十年一次的人口和住房普查。

使用 R Shiny 应用程序对 2019 年肯尼亚人口和住房普查第一卷报告进行的分析,提供了关于国家和县一级按性别、家庭数量、平均家庭规模分列的枚举人口分布的有用、可操作的见解。政府可以很容易地获得这些见解,并将其用于资源分配、政策制定、规划和预算,以提供基本的政府服务。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

肯尼亚国家统计局(KNBS)是负责收集、分析和传播统计数据的政府机构。2019 年肯尼亚人口和住房普查于 2019 年 8 月进行,信息包括人口的人口统计和社会经济特征。人口普查的主题是“统计我们的人口以促进可持续发展和服务转移”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

国家一级普查统计概览。

R 闪亮概述。

Shiny 是一个真正强大的数据讲述工具,它结合了 R 的计算能力和现代网络的交互性,用于创建漂亮、有洞察力的应用程序。R shiny 有广泛的应用,包括在学术界作为统计概念的教学工具;数据分析师为高级分析创建指标仪表板。

对于初学者来说,一个很好的指南是 Hadley Wickham 的闪亮 R 工作室网站和掌握闪亮。

普查分析与洞察。

数据。

2019 年肯尼亚人口普查数据包括人口统计数据,如按性别分列的人口、家庭数量、平均家庭规模、人口密度、国家、县和县以下各级的土地面积。

数据可以从这里获取,pdf 格式。我分析过县级的数据;县级以下的数据仍在清理中。

这个互动的 R 闪亮的应用程序使人们能够与人口普查数据互动,并获得明智决策的洞察力。

人口。

据统计,全国总人口为 47,564,300 人,其中男性人口为 23,548,100 人,女性人口为 24,014,700 人,阴阳人人口为 1,500 人。

各县人口。

下面的地图显示了每个县的人口分布。显而易见,内罗毕、基安布和纳库鲁等县的人口较多,而拉穆等县的人口只有 143,920 人。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

按人口分组的前 5 个县的条形图

男性人口。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

内罗毕、基安布和纳库鲁的男性人口最多,而伊索洛等县的男性人口只有 139510 人。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

按男性人口分组的前 5 个县的条形图

女性人口。

统计数字仍然相同,内罗毕、纳库鲁和基安布的女性人口最多。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

按女性人口分组的前 5 个县的条形图

户数。

家庭数量最多的主要县包括内罗毕、基安布、纳库鲁、卡卡梅加和梅鲁。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

按家庭数量分组的前 5 个县的条形图

平均家庭规模。

曼德拉、瓦吉尔、加里萨、马萨比特和图尔卡纳等北部大多数县的平均家庭规模较大。内罗毕,

Kiambu 和 Kirinyaga 的平均家庭规模最小。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

按平均家庭规模分组的前 5 个县的条形图

互动地图。

R 闪亮 app|Github****

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

闪亮互动应用概述

shiny app 上可以找到轻松显示上述地图的互动地图。闪亮应用的代码在我的 Github 上。请随意浏览地图,了解更多关于肯尼亚人口普查的信息。

下一步。

I)添加县级以下的人口普查数据(仍在清理数据)。

ii)用肯尼亚国家统计局发布的新数据更新应用程序(第 2 卷报告)。

iii)优化应用程序代码以获得更好的性能。

结论。

R shiny 是一款非常棒的工具,可以用来讲述数据故事和制作信息丰富的仪表盘。您已经能够获得对肯尼亚 2019 年人口普查的宝贵见解。快乐的 R 闪耀!更多讨论,我们可以通过 Linkedln 连线。

西班牙足球联赛分析

原文:https://towardsdatascience.com/analysis-of-the-spanish-football-league-la-liga-7c636a9317b3?source=collection_archive---------38-----------------------

数据分析📝+历史记录🌐

西班牙足球联赛俗称西甲,是西班牙第一个国家足球联赛,是世界上最受欢迎的职业体育联赛之一。它成立于 1929 年,除了西班牙内战期间(1936-1939)之外,每年都举行。在他的基金会,只有 10 个团队。目前,它由 20 支球队组成,分布在全国各地,但主要来自最发达的地区:马德里、巴塞罗那和巴斯克地区。排名前四的球队有资格参加冠军联赛,而排名最低的三支球队(排名 18-20)被降级到乙级。像在大多数欧洲国家一样,比赛的获胜者得到三分,如果平局,两个队都得 1 分。

这篇文章介绍了西班牙联赛的历史。分析历史数据(从 1929 年到 2020 年的所有分类),我们将能够回答很多关于西甲的问题。有哪些球队差点拿到西甲冠军?裁判偏向皇马和巴萨吗?西甲是不是变得太软了?巴萨和皇马的争霸是从什么时候开始的?巴塞罗那什么时候开始追赶皇马了?

我们开始吧💜

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

韦斯利·廷吉在 Unsplash 上拍摄的照片

Web 数据抽取

西甲联赛(从 1929 年到 2020 年)的历史数据是从 Bdfutbol.com 刮来的。这个网站包含国家和国际足球排名。

[## 历史时间。西甲,英超,意甲,德甲,法甲,西甲…

1928 年的 BBVA 甲级联赛,1930-31 年的荷兰甲级联赛,1978-79 年的荷兰乙级联赛…

www.bdfutbol.com](https://www.bdfutbol.com/es/t/t.html)

为了收集数据,我们使用了 BeautifulSoup,这是一个流行的 Python 库,用于从 HTML 页面中提取信息。在获得所有数据后,我们将它存储在一个 Pandas 数据框中以供进一步处理。

此处提供了分析中使用的编程代码。你可以边看文章边看。

[## amandaiglesiasmoreno/西班牙联赛

permalink dissolve GitHub 是超过 5000 万开发人员的家园,他们一起工作来托管和审查代码,管理…

github.com](https://github.com/amandaiglesiasmoreno/Spanish-League/blob/master/Spanish%20League.ipynb)

数据清理

数据清理是将原始数据转换为标准化形式的过程,这种标准化形式可以很容易地用数据分析工具进行分析。在这个特殊的例子中,在使用 Pandas 分析数据之前,我们已经执行了多次清理操作。我们已经删除了不必要的列,并使用英语术语重命名了剩余的列(请记住,数据是从一个西班牙语网站上搜集来的)。在探索性数据分析过程中,我们注意到在某些情况下,同一个足球队被用了多个名字。多年来,一些足球队已经改变了他们的名字,在大多数情况下是由法律规定的。例如,在西班牙第二共和国时期(1931-1939),不允许使用皇家标志。因此,许多足球队修改了包含“皇家”一词的名称,以避免因赞美君主政体而被定罪。皇家马德里不仅改名为公正的马德里,而且还失去了他的盾冠。随后,在佛朗哥政权期间,他们恢复了“Real”这个词,但一项新的法律影响了其他球队的名称。独裁政权从 1941 年到 1972 年禁止使用外来语。因此,竞技俱乐部、桑坦德竞技和希洪竞技等球队被迫将 30 年来的历史名称改为毕尔巴鄂竞技、桑坦德和皇家希洪。

在清理数据之后,我们获得了一个 Pandas 数据框架,可以很容易地对其进行处理以提取结论。如下图所示,数据框包含了从 1929 年到 2020 年参加西甲联赛的所有球队的胜、平、负场次、黄牌和红牌数、积分数以及在排名中的位置等信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在,我们准备分析数据!😃

西班牙联赛冠军

西班牙联赛由 60 多个不同的俱乐部参加;然而,他们中只有 9 个人拿到了奖杯。以下情节显示了从 1928-29 赛季到 2019-20 赛季的西班牙联赛冠军。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如上图所示,皇马是西甲历史上最成功的俱乐部,拥有 34 个冠军,其次是巴塞罗那,拥有 26 个联赛冠军。然而,正如我们将在后面看到的,巴塞罗那正在迎头赶上。除了这两家俱乐部,西班牙甲级联赛还被其他 7 家俱乐部夺得,包括马德里竞技(10),竞技俱乐部(8),瓦伦西亚(6),皇家社会(2),贝蒂斯(1),塞维利亚(1),拉科鲁尼亚(1)。

西班牙联赛亚军

成为亚军是令人心碎的。对于皇家马德里和巴塞罗那来说,第二名是一个可耻的失败,很容易以解雇教练或下赛季签下多个千万富翁而告终。对于其他团队来说,只是一个几乎成真的梦想,但绝对不是失败。毕竟,失败只是期望的问题。

如下图所示,有 5 支足球队从未赢得过联赛冠军,但他们曾经获得过亚军:桑坦德竞技队(1930-31)、拉斯帕尔马斯队(1968-69)、萨拉戈萨队(1974-75)、希洪竞技队(1978-79)和比利亚雷亚尔队(2007-08)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

此外,我们还可以观察到,巴塞罗那在西甲联赛中获得亚军的次数比皇家马德里多。

甲级联赛总赛季数(前 10 名)

只有三支足球队从未降级到乙级:竞技俱乐部、巴塞罗那和皇家马德里。西班牙人和瓦伦西亚在乙级联赛踢了 4 个赛季,马德里竞技踢了 6 个赛季。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上图中的所有球队目前都在甲级,除了萨拉戈萨(自 2012 年以来-13 年在乙级)。

每个赛季西班牙联赛的球队数量

除了 1995-1996 和 1996-1997 赛季有 22 支球队参赛之外,西甲联赛的球队数量从 10 支稳步增长到 20 支。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

目前,有 20 支球队参加西班牙联赛。同样数量的球队参加意甲(意大利)、法甲(法国)和英超(英格兰)。相反,有 18 支球队参加了德甲(德国)、西甲(葡萄牙)和荷甲(荷兰)。联赛数量的演变

联赛数量的演变

据说在西班牙,西甲由两支球队踢,剩下的就是装饰,在我看来,这是完全正确的😢。自 2000 年以来,皇家马德里和巴塞罗那赢得了 20 场联赛中的 17 场,其他球队几乎不可能与之竞争。但是西班牙联赛一直都那么无聊吗?一直以来都是马德里还是巴萨在主导?皇马和巴萨的争霸是从什么时候开始的?让我们用一个简单的情节来澄清所有的问题。

下面的图显示了球队的联赛数量的演变。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如剧情所示,在联赛的最初几年,虽然我们可以观察到竞技俱乐部的轻微突出,但西甲并不像现在这样一家独大,也没有被任何俱乐部明显主导。在 50 年代后期,随着迪斯蒂法诺的签约,我们开始看到皇家马德里统治地位的开始。这位阿根廷人彻底改变了皇马的命运,当时皇马只是一支普通球队,已经 20 年没有赢得联赛冠军了。

从 20 世纪 60 年代开始,皇家马德里控制了联赛,在短短 20 年内赢得了 14 个冠军。当时,“El Clásico”是马德里竞技队和皇家马德里队之间的比赛,因为马德里竞技队是梅林格队在 1960 年至 1980 年期间赢得 4 个联赛冠军的唯一强劲对手。

从 90 年代开始,巴塞罗那一直统治着西班牙联赛,赢得了 16 个冠军。在 20 世纪 90 年代,在约翰·克鲁伊夫(1988-1996)的管理下,巴萨在最后几年结束了对皇马的压倒性统治。约翰·克鲁伊夫创造了一种以控球为基础的足球风格,这种风格被巴萨后来的教练路易斯·范加尔、弗兰克·里杰卡尔德,尤其是瓜迪奥拉所模仿。从 2000 年开始,本土球员如梅西、伊涅斯塔、哈维、布斯克茨、普约尔或皮克继续称霸巴塞罗那。

所有上述情况也可以在下面的图表中观察到,该图表显示了球队和十年的联赛数量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

皇马和巴萨的联赛差异

下面的剧情展示了一段时间内皇马和巴萨的联赛差异。如下图所示,对巴塞罗那有利的最大差异出现在 1952-1953 赛季。当时巴萨比皇马多 4 个联赛。然而,在五十年代中期,皇马的运气即将改变。从这个时候到 90 年代,皇家马德里队明显统治了西甲,布兰科队和巴塞罗那队之间的联赛差距随着时间的推移不断扩大,在 1989-90 赛季达到最大值(15 个联赛)。从 20 世纪 90 年代开始,我们观察到由于巴塞罗那的霸权,联赛中的差异是如何随着时间的推移而减少的。目前皇马比巴萨多 8 个联赛。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

西甲联赛中的黄牌和红牌

有一样东西是全世界大多数足球迷认为理所当然的:使用卡。然而,直到 1970 年墨西哥世界杯,才在足球界首次使用了黄红卡制度。这个系统是由英国裁判肯·阿斯顿在 1966 年发明的,他注意到很多时候足球运动员不理解或者只是忽视了当时口头传达的裁判的警告。然后,受交通灯颜色(红色和黄色)及其含义的启发,阿斯顿创造了一种颜色编码方案,以清楚地表明足球运动员已被警告或驱逐。

但正如海明威所说,西班牙是不同的。西班牙国家队没有参加 1970 年在墨西哥举行的世界杯,在那里首次使用了信用卡系统。西班牙足球联合会认为黄牌实际上是白色的,所以那是他们在当时黑白电视中的样子。1971 年 1 月,红白卡被引入西班牙联赛,直到 1976 年,罗卡最终取代了白卡。

下图显示了每个赛季的红牌总数。正如我之前说过的,在 1971 年之前,裁判口头向球员宣布他的罚款。在下图中,1971 年之前,红牌代表的是在比赛中仅用言语(不使用卡片)驱逐的足球运动员。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们观察到一种增长的趋势,直到 90 年代中期。从那一刻起,红牌总数随着时间稳步下降。

同样,下图显示了每个赛季黄牌(包括白牌)的总数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从 1971 年到 90 年代中期,每个赛季的黄牌总数一直在稳步增长。从那时起,卡的数量几乎保持不变,每季大约 2000 张。

在使用卡牌之前,玩家往往得不到惩罚。只有在特殊情况下(真的很强的犯规),足球运动员才被驱逐出场。

在西班牙,据说最近几年裁判偏向皇马和巴萨。但真的是这样吗?让我们看看数字:)

下面的图显示了从 1990 年到 2020 年球队的红黄牌平均数量。如上所述,皇家马德里和巴塞罗那平均收到的卡片比其他强队如马德里竞技、瓦伦西亚、塞维利亚或竞技俱乐部要少。也许他们的成功不仅仅是金钱和优秀球员的结合,还有一点点帮助😆

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

过去 10 年的业绩

以下图表显示了瓦伦西亚、皇家马德里、巴塞罗那、马德里竞技和竞技俱乐部在过去 10 年中的表现。如下图所示,皇家马德里和巴塞罗那的平均进球数比其他球队多。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然而,如果我们分析对手的进球,我们会发现马德里竞技是防守最强的球队,甚至比巴萨还要好,而这一切的罪魁祸首就是迭戈·西蒙尼。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这位阿根廷人自 2011 年 12 月以来一直是马德里竞技的经理。在他的指导下,马德里竞技在强大的防守风格基础上形成了鲜明的特征。在迭戈·西蒙尼的执教下,马德里竞技赢得了西甲冠军、国王杯冠军、两次欧联杯冠军、两次欧洲超级杯冠军,目前是皇马和巴萨唯一的劲敌。

摘要

长期以来,西班牙联赛明显由皇马和巴萨主导。一开始,这个联盟并不像今天这样具有霸权地位,也没有任何俱乐部明显地控制着它。从五十年代中期开始,皇家马德里队控制了联赛,成为他唯一的劲敌。在 1989-90 赛季,皇家马德里比巴塞罗那多 15 个联赛。然而,在 90 年代,在约翰·克鲁伊夫的监督下,巴萨以皇马的压倒性优势而告终。从那个时候开始,他们之间的联赛差距就在逐渐缩小。如今,皇家马德里,尤其是巴塞罗那,显然统治着西甲,其他球队很难与之竞争。

一个更多元化的联盟也会更有趣。然而,在我看来,这种情况不太可能很快改变。西班牙联赛高度货币化,人们对皇家马德里-巴塞罗那的霸权特别感兴趣,因为他们是产生最大利益的球队。

感谢

虽然我喜欢足球,但我从来不是它的狂热爱好者。我选择这个题目几乎是偶然的,没有想到会发现这么多有趣的东西。我希望你喜欢读这篇文章,就像我喜欢写它一样。

最后,我要感谢我的父母对我的支持。如果没有和他们关于足球的长时间交谈,就不可能写出这篇文章。谢谢你😊。是的,我们都支持❤️竞技

阿曼达🍀

用熊猫分析 1976-2010 年美国大选

原文:https://towardsdatascience.com/analysis-of-us-elections-from-1976-to-2010-with-pandas-6654cf69849d?source=collection_archive---------39-----------------------

实践熊猫,同时提供对过去选举的宝贵见解。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unsplash 上的 Element5 数码拍摄

我最近在 Kaggle 上偶然发现了美国选举数据集。由于我们正处于对 2020 年选举的激烈讨论中,我认为对历届美国总统选举进行分析是一个好主意。

该数据集包含从 1976 年到 2020 年的选举。我将从各种不同的角度处理这些数据,并试图对人们的投票方式有所了解。

我将使用 Pandas 库进行数据分析和可视化,因此使用 Pandas 的功能和方法也是一个很好的实践。

让我们从导入库和将数据集读入 Pandas 数据帧开始。

import numpy as np
import pandas as pdpresident = pd.read_csv("/content/president-1976-2016.csv")

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有一些用于分析的冗余列。我不确定 state_fips、state_cen 和 state_ic 代表什么,但它们可能是一个状态的指示器或唯一值。

我们可以通过检查和比较这些列中的值来确认。这三列有 51 个唯一值(每个州一个)。

president.state_fips.nunique()
51

对于特定的状态,这些列中的值是相同的:

president[president.state == 'Alabama'][['state_fips','state_cen','state_ic']].value_counts()state_fips  state_cen  state_ic 
1           63         41          63 
dtype: int64

由于数据集已经包含状态信息,这些列在分析中是多余的,因此可以删除。

office 列只表明这是总统选举,因此它包含一个唯一的值(美国总统)。版本和注释列也没有用。

我们可以使用 Pandas 的 drop 功能来删除这些列。

president.drop(['state_po', 'state_fips', 'state_cen', 'state_ic',
'office', 'version', 'notes'], axis=1, inplace=True)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们准备开始分析,我将分析分为三个部分:

  1. 一段时间内的投票总数
  2. 每位获胜者的得票率
  3. 各缔约方的国别比较

一段时间内的投票总数

我们首先要检查的是每次选举的票数。“totalvotes”列显示特定州的投票总数。因此,下面的代码将创建一个 dataframe,其中包含每个州每次选举的总票数。

yearly_votes = president[['year','state','totalvotes']]\
.groupby(['year','state']).mean().reset_index()yearly_votes.head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以对“year”列应用 groupby 函数,并对“totalvotes”列中的值求和,这将给出每次选举的总票数。

yearly_votes.groupby('year').sum()\
.plot(figsize=(10,6), legend=False,title='Total Number of Votes in US Presendial Elections')

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我使用了熊猫的绘图工具来绘制结果。它比使用 Matplotlib 的 pyplot 接口简单,但是对绘图的控制较少。

除了 1996 年和 2012 年,参加投票的人数一直在稳步增加。这很可能是由于人口增长,因此更好的衡量标准是每百万人口的投票数(有资格投票)。粗略比较一下,从 1970 年(2.03 亿)到 2010 年(3.08 亿),人口增长了约 50%。因此,多年来,投票人数的比例大致保持不变。

每位获胜者的得票率

有些选举非常接近,获胜者以微弱优势获胜。也有一些选举中获胜者以较大优势获胜。

我们可以计算出每个获胜者的得票率。我们将首先向我们的数据框架添加一个“winner”列。

这个维基百科页面包含了美国总统的名单。使用 read_html 函数可以很容易地将这些表读入 pandas 数据框架。它将网页中的表格转换成数据帧列表。

dfs = pd.read_html("https://en.wikipedia.org/wiki/List_of_presidents_of_the_United_States")winners = dfs[1][['Election','President.1']]
winners.head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第二个数据帧包含美国总统的名单。我们只需要 1976 年到 2016 年的选举数据。

winners = winners.iloc[-12:-1, :]
winners.Election = winners.Election.astype('int64')
winners.rename(columns={'President.1':'winner'}, inplace=True)winners

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们需要和总统数据框中相同格式的名字。“吉米·卡特”需要格式化为“卡特,吉米”。我将使用 pandas 字符串操作来完成这项任务:

first_name = winners.winner.str.rsplit(' ', n=1, expand=True)[0]
last_name = winners.winner.str.rsplit(' ', n=1, expand=True)[1]
winners.winner = last_name + ', ' + first_namewinners

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们需要一些小的调整,以便总统的名字完全匹配。

winners.winner[73] = 'Bush, George H.W.'
winners.winner[78] = 'Obama, Barack H.'
winners.winner[79] = 'Obama, Barack H.'
winners.winner[80] = 'Trump, Donald J.'

我还将选举日期转换为整数,以便能够在下一步中使用 merge 函数。

我们现在可以根据选举年份合并“总统”和“获胜者”数据帧。

president = pd.merge(president, winners, left_on='year', right_on='Election')

我们将过滤总统数据帧,只包括获胜者的投票。

winner_votes = president[president.candidate == president.winner]winner_votes.head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每一行都包含获胜者的票数和特定选举中特定州的总票数。一个简单的 groupby 函数将给出各个国家的值。

total_votes = winner_votes[['year','winner','candidatevotes','totalvotes']]\
.groupby(['year','winner']).sum()total_votes

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以通过简单的数学运算计算出中奖者的比例,并对结果进行排序。

(total_votes.candidatevotes / total_votes.totalvotes)\
.sort_values(ascending=False)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

排名第一的是第二任期的罗纳德·里根。

各缔约方的国家比较

如果你对政治感兴趣,你就会知道每个州更可能支持哪个政党。让我们也用数字来核对一下。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是获胜者投票数据框。我们将添加一个比率列,即候选人票数除以总票数。

winner_votes['ratio'] = winner_votes.candidatevotes / winner_votes.totalvotes

我们希望看到民主党和共和党的前十个州。下面的 groupby 操作将根据民主党的最高平均比率返回前十个州。

winner_votes[winner_votes.party == 'democrat'][['state','ratio']]\
.groupby('state').mean().sort_values(by='ratio', ascending=False)[:10]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下面是共和党方面同样操作的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注:除非另有说明,所有图片均由作者创作。

结论

我们分析了美国总统选举随时间推移的票数,每位总统在选票方面的优势,以及民主党和共和党在各州的选票。结果可能不会让你吃惊,尤其是如果你对政治感兴趣的话。

这篇文章的另一个重点是练习如何在数据分析和操作中使用 Pandas。我们在数据分析和处理方面做了大量的熊猫运算。

感谢您的阅读。如果您有任何反馈,请告诉我。

波浪能分析

原文:https://towardsdatascience.com/analysis-of-wave-power-679115549ee9?source=collection_archive---------51-----------------------

新罕布什尔州和罗德岛州近海浮标记录数据的波能分析。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

虽然大多数人不认为像新罕布什尔州和罗德岛这样的地方是冲浪的热门目的地,但从国家数据浮标中心获得的波浪能数据显示,有时会有显著的波浪能。这些波浪浮标放置在离海岸线大约 30 海里的地方,记录诸如有效波高、波浪周期和涌浪方向等数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

https://magicseaweed.com/help/forecast-table/swell

浮标记录的信息可以用来计算海浪的能量。这项研究的目标是发现哪个位置,罗德岛或新罕布什尔州,在 2019 年经历了更大的波浪发电。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如下图所示,NDBC 44098 和 NDBC 44097 的波浪功率频率,罗德岛的平均波浪功率略大于新罕布什尔。据计算,2019 年罗德岛每单位波峰的平均波功率约为 5265 瓦,而新罕布什尔州的平均波功率约为 4760 瓦。新罕布什尔州的最大波浪功率约为 40619 瓦,罗德岛州为 36980 瓦。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

由于地理位置略有不同,我希望根据 2019 年的月份进一步分析每个位置的波浪功率。对于新罕布什尔州和罗德岛州来说,7 月份观察到的海浪能量最低,10 月份观察到的海浪能量最高。九月两个州的波浪力量差异最大。这是典型的飓风季节,因为罗德岛更多的暴露在南方,而新罕布什尔面向东方。这两个州在秋季都显示出持续整个冬季的不断增长的海浪能量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

用于推导单位波峰波浪功率的两个关键信息包括有效波高和波浪周期。如下图所示,波高和波周期的相关性(NDBC 44098),变量波高和波周期之间没有相关性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这些数据可以用于多种目的。目前正在探索波浪能作为可再生能源的可能来源。如果研究人员将此扩展到更大的波浪浮标选择,他们将能够确定部署波浪能浮标的最可行位置。许多国家使用大型船只作为运输货物的工具。使用历史数据可以帮助确定一年中运输昂贵物品的最安全时间。这些近海浮标也收集海洋温度的数据,这些数据可用于分析全球变暖的影响。

总之,罗德岛决心拥有比新罕布什尔州更大的海浪能。

使用 Python 和 TWINT 分析推文

原文:https://towardsdatascience.com/analysis-on-tweets-using-python-and-twint-c7e6ebce8805?source=collection_archive---------29-----------------------

情感分析,建立单词云和更多…

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由于切尔·莫兰Unsplash 上拍摄

听说过 Twint 吗?

Twint 是 Python 中内置的高级 web 抓取工具,它抓取 web,而不是像 tweepy 一样通过 twitter API 收集数据。它是推特智能工具的缩写。您可以通过以下方式下载:

pip3 install twint

twint 文档可以在这里找到。

收集数据

在本文中,我们将使用唐纳德·特朗普自 2019 年初以来的推文。我们可以在命令行中使用这个简单的命令下载给定用户的 tweets:

twint -u realDonaldTrump --since 2019-01-01 -o trump.csv --csv

这将把 2019 年以来@realDonaldTrump的所有推文下载到一个单独的 csv 文件trump.csv中。

这里,为了方便起见,我将 csv 文件转换为 xls 格式。让我们开始吧!

df=pd.read_excel('trump.xls')***added columns mentions, hashtags and length***
***added month, year and hour columns***
***added cleaned_tweetsnum_mentionsnum_hashtags***df.head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一些有趣的分析

  • 让我们来看看每小时的平均推文长度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

看起来总统的推特在一大早就很长了(凌晨 3 点到 10 点)。

  • 每小时的平均提及次数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

再加上那些推文的情绪又如何呢?(后面显示的情绪计算。)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

文本分析

首先,让我们清理推文。为此,我们将创建两个函数,一个用于删除 URL、提及和标签(将它们存储在单独的列中),另一个用于清理剩余的文本(删除停用词、标点符号)。

我将使用删除了内容、停用词和标点符号的推文的cleaned_tweets列和删除了内容的tweet列来计算情绪和主观性。

df['cleaned_tweets']=df['tweet'].apply(lambda x: process_text(x))
df['tweet']=df['tweet'].apply(lambda x: remove_content(x))

现在让我们建立一个单词云来了解常用短语。

WordCloud

**from** wordcloud **import** WordCloud, STOPWORDS
**import** matplotlib.pyplot as plttemp=' '.join(df['cleaned_tweets'].tolist())
wordcloud = WordCloud(width = 800, height = 500, 
                background_color ='white', 
                min_font_size = 10).generate(temp)plt.figure(figsize **=** (8, 8), facecolor **=** None)
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad **=** 0) 
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

词云

更常用的单词/短语以更大的字体出现。

现在让我们定义一个函数来绘制给定 ngram 范围内出现次数最多的 n 个短语。为此,我们将使用CountVectorizer功能。

大部分工作已经完成,现在让我们画出常用短语。

  • 频繁出现的单字
plot_topn(tweet_list, ngram_range=(1,1))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 频繁的二元模型
plot_topn(tweet_list, ngram_range=(2,2))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 频繁三元模型
plot_topn(tweet_list, ngram_range=(3,3))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

瞌睡虫乔·拜登?真的吗?

提及和标签

  • 提及最多的用户:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 最常用的标签:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

情感分析

我们使用推文专栏来分析推文的情绪和主观性。为此,我们将使用TextBlob

给定一个输入句子,TextBlob 输出一个包含两个元素的元组:(sentiment, subjectivity)

from textblob import TextBlob
df['sentiment']=df['tweet'].apply(lambda x:TextBlob(x).sentiment[0])
df['subject']=df['tweet'].apply(lambda x: TextBlob(x).sentiment[1])
df['polarity']=df['sentiment'].apply(lambda x: 'pos' if x>=0 else 'neg')

我们来看看推文的情绪分布

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

大多数推文可能不是主观的。推文可能是事实,就像坏消息一样。让我们找出主观的推文的情绪分布。为此,让我们过滤掉subjectivity大于 0.5 的推文,并绘制分布图。

fig=px.histogram(df[df['subject']>0.5], x='polarity', color='polarity')
fig.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

看起来,当只分析主观推文时,负面情绪的比例增加了。

现在让我们来看看 20 个被提及最多的用户的主观推文的极性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

主题建模

主题建模是一种自动分析文本数据以确定一组文档的聚类词的机器学习技术。这被称为“无监督”的机器学习,因为它不需要预先定义的标签列表或之前由人类分类的训练数据。

我们将使用 gensim LDA 模型进行主题建模。

**#pre-process tweets to BOW**
from gensim import corpora
r = [process_text(x,stem=False).split() for x in df['tweet'].tolist()] 
dictionary = corpora.Dictionary(r)
corpus = [dictionary.doc2bow(rev) for rev in r]**#initialize model and print topics** from gensim import models
model = models.ldamodel.LdaModel(corpus, num_topics=10, id2word=dictionary, passes=15)
topics = model.print_topics(num_words=5)
for topic in topics:
    print(topics[0],process_text(topic[1]))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有一些明确的主题,如弹劾审判早期阶段的主题 5,包含与中国贸易协议有关的短语的主题 8,以及关于他修建隔离墙的计划的主题 6。

labels=[]
for x in model[corpus]:
    labels.append(sorted(x,key=lambda x: x[1],reverse=True)[0][0])df['topic']=pd.Series(labels)

再来看话题分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们来看看话题 5 和话题 6 的分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这些情节是有意义的,因为在举报人投诉发布的那个月,话题 5 中的推文显著增加,而在特朗普计划修建隔离墙的 2019 年第一个月,话题 6 中的推文更多。

你可以在这里找到更详细的分析

如果你喜欢这篇文章,请留下你的掌声。感谢您的阅读!

参考

  1. Github Twint 文档:https://github.com/twintproject/twint
  2. https://medium . com/big panda-engineering/explorative-data-analysis-for-text-data-29 cf 7 DD 54 EB 8
  3. https://medium . com/@ b . terry jack/NLP-预训练-情绪-分析-1eb52a9d742c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值