专栏首页庄闪闪的R语言手册翻译|给数据科学家的10个提示和技巧Vol.2

翻译|给数据科学家的10个提示和技巧Vol.2

点击下方公众号,回复资料分享,收获惊喜

原文10 Tips And Tricks For Data Scientists Vol.2[1]

译者:赵西西

原博客简介:Predictive Hacks是与数据科学相关的一切的在线资源中心。该博客由一群数据科学家所运营,专注于讲解在各种领域如何使用大数据技术(从机器学习和人工智能到业务领域)。

1 引言

第一章给出了数据分析的一些技巧(主要用Python和R),可见:翻译|给数据科学家的10个提示和技巧Vol.1

2 R

2.1 基于列名获得对应行的值

数据框如下:

set.seed(5)
df<-as.data.frame(matrix(sample(1:100,12),ncol=3))
df$Selection<-c("V1","V3","V2","V3")
df

V1 V2 V3 Selection
1 66 41 19        V1
2 57 85  3        V3
3 79 94 38        V2
4 75 71 58        V3
df$Value<-as.numeric(df[cbind(seq_len(nrow(df)), match(df$Selection,names(df)))])
df

 V1 V2 V3 Selection Value
1 66 41 19        V1    66
2 57 85  3        V3     3
3 79 94 38        V2    94
4 75 71 58        V3    58

2.2 创建时间属性

当数据与时间有关时,可以为模型创建一些时间属性。例如,我们可以创建:

  • Year
  • Month
  • Weekday
  • Hour
  • Minute
  • Week of the year
  • Quarter

如何在R中对一个DateTime对象创建这些属性,建议将一些特征如weekdays, months,hours,isWeekend等,转换为因子:

  • 一个名为isWeekend的布尔值,周末为1,其他为0。
  • 一天中的时间段(如上午、下午、晚上)。
library(tidyverse)
set.seed(5)
df<- tibble(my_date = lubridate::as_datetime( runif(10, 1530000000, 1577739600)))
df%>%mutate(Year = format(my_date, '%Y'), Month_Number = as.factor(format(my_date, '%m')), 
            Weekday = as.factor(weekdays(my_date)), Hour =as.factor(format(my_date, '%H')),  
            Minute =as.factor(format(my_date, '%M')), Week =(format(my_date, '%W')), 
            Quarter = lubridate::quarter(my_date, with_year = T))

3 Python

3.1 从Jupyter创建文件

要编写文件,只需在jupyter中输入%%writefile filename。例如,创建一个名为myfile.py的新文件:

%%writefile myfile.py
def my_function():
    print("Hello from a function")

查看文件可以输入!cat myfile.py。添加新内容可以使用附加参数-a。例如,想将my_function()添加到文件中:

%%writefile -a myfile.py  
my_function()

这时结果如下所示

可以使用!python myfile.py命令或输入%run -i myfile.py来运行脚本。

3.2 基于列名获得对应行的值

利用pandas库中DataFrame构建一个数据框:

import pandas as pd
df = pd.DataFrame.from_dict({"V1": [66, 57, 79,75], "V2": [41,85,94,71], 
                             "V3":[19,3,38,58], "Selection":['V1','V3', 'V2','V3']})
df

   V1  V2  V3 Selection
0  66  41  19        V1
1  57  85   3        V3
2  79  94  38        V2
3  75  71  58        V3

我们希望根据Selection列获得一个新列,其中第一个值将是V1列的对应值,第二个值将是V3列的对应值,以此类推。这时我们可以使用lookup函数:

df['Value'] = df.lookup(df.index, df.Selection)
df

   V1  V2  V3 Selection  Value
0  66  41  19        V1     66
1  57  85   3        V3      3
2  79  94  38        V2     94
3  75  71  58        V3     58

3.3 从字典中创建词云

通过定义单词的频率来创建词云。

import matplotlib.pyplot as plt
from wordcloud import WordCloud
# assume that this is the dictionary, feel free to change it
word_could_dict = {'Git':100, 'GitHub':100, 'push':50, 'pull':10, 'commit':80, 
                    'add':30, 'diff':10, 'mv':5, 'log':8, 'branch':30, 'checkout':25}
wordcloud = WordCloud(width = 1000, height = 500).generate_from_frequencies(word_could_dict)
plt.figure(figsize=(15,8))
plt.imshow(wordcloud)

3.4 检查pandas数据框的列是否包含一个特定的值

查看字符a是否存在于DataFrame的列中:

import pandas as pd
df = pd.DataFrame({"A"  : ["a", "b", "c"], "B" : ["d", "e", "f"], "C" : ["x", "y" , "a"]})
df

A  B  C
0  a  d  x
1  b  e  y
2  c  f  a

只需输入:

(df=='a').any()

A     True
B    False
C     True

3.5 将多个pandas数据框保存到单个Excel文件

假设有多个数据框,若想将它们保存到包含许多工作表的的单个Excel文件中:

# create the xlswriter and give a name to the final excel 
# for example Final.xlsx
 
writer = pd.ExcelWriter('Final.xlsx', engine='xlsxwriter')
 
# it is convenient to store the pandas dataframes in a  
# dictionary, where the key is the worksheet name that you want to give 
# and the value is the data frame
df_dict = {'My_First_Tab': df1, 'My_Second_Tab': df2,
        'My_Third_Tab':df3, 'My_Forth_Tab':df4}
#iterate over the data frame of dictionaries
for my_sheet, dframe in  df_dict.items(): 
    dframe.to_excel(writer, sheet_name = my_sheet, index=False)
 
# finaly you have to save the writer
# and the Final.xlsx has been created
writer.save()

4 Google Spreadsheets

4.1 谷歌文档和电子表格的版本管理

大多数数据科学家都熟悉Git和GitHub,然而,许多人并不知道谷歌文档、电子表格和演示文稿中的版本历史记录功能。下面给出一个谷歌文档版本历史的例子:

  • 打开谷歌文档。
  • 在顶部,点击文件- >版本历史。

在左边,你会看到修改的日期和作者的名字。例如,2019年7月16日下午4点15分,茱莉亚·彭尼修改了文档:

你可以任意修改:

最后,点击“恢复此版本”按钮,可以恢复到之前的状态:

5 Linux

5.1 在Linux复制一个文件夹

使用Linux等操作系统时,如果想要将一个文件夹从一个目标复制到另一个目标,可以运行以下bash命令:

cp -R /some/dir/ /some/other/dir/
  • 如果/some/other/dir/不存在,它将被创建。
  • -R表示递归复制目录。也可以使用-r,因为它不区分大小写。

参考资料

[1]

10 Tips And Tricks For Data Scientists Vol.2: https://predictivehacks.com/10-tips-and-tricks-for-data-scientists-vol-2/

推荐: 市调比赛终于结束啦,我们组拿到了国二的成绩,记录了一下这次的昆明之旅,感兴趣的可以看一看

本文分享自微信公众号 - 庄闪闪的R语言手册(Zss_R4ds),作者:我才是赵西西

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 翻译|给数据科学家的10个提示和技巧Vol.1

    原博客简介:Predictive Hacks是与数据科学相关的在线资源中心。该博客是由一群数据科学家运营,专注于讲解在各种领域如何运用大数据技术(从机器学习和人...

    庄闪闪
  • 给数据科学家的10个提示和技巧Vol.4

    原文:10 Tips And Tricks For Data Scientists Vol.4[1]

    庄闪闪
  • 给数据科学家的10个提示和技巧Vol.3

    原文:10 Tips And Tricks For Data Scientists Vol.3[1]

    庄闪闪
  • 循环神经网络的增强方法:注意力机制以及更多

    AI 科技评论按:一提起 RNN,我们最容易想到的实现就是 LSTM + attention。LSTM 作为经典的网络结构可谓是老当益壮,而另一方面注意力机制过...

    AI科技评论
  • GitHub 热点速览 Vol.35:Let's Go,Rust 大放异彩

    以下内容摘录自微博@HelloGitHub 的 GitHub Trending 及 Hacker News 热帖(简称 HN 热帖),选项标准:新发布 | 实用...

    HelloGitHub
  • 2019腾讯犀牛鸟精英人才培养计划课题介绍(七)—自然语言处理

    ? “ 精英人才培养计划是一项校企联合人才培养项目,入选学生将受到业界顶尖技术团队与高校导师的联合指导及培养。培养期间,学生将获得3个月以上到访腾讯开展科研访...

    腾讯高校合作
  • 提高数据科学家讲故事能力的5个小技巧

    讲故事是一门艺术。随着时间的推移,讲故事的技巧、方法和工具发生了变化,但主要概念和目标保持不变,即有效地吸引你的观众,使他们能够真正地与你所说的联系起来。

    deephub
  • 【系列文章】面向自动驾驶的三维点云处理与学习(6)-完结篇

    标题:3D Point Cloud Processing and Learning for Autonomous Driving

    点云PCL博主
  • 深度学习碰上古文献,西南大学提出基于CNN的古彝文识别方法

    摘要:作为世界六大古文字之一的古彝文记录下几千年来人类发展历史。针对古彝文的识别能够将这些珍贵文献材料转换为电子文档,便于保存和传播。由于历史发展,区域限制等多...

    机器之心
  • 人脑启发AI设计:让神经网络统一翻译语音和文本

    能够统一地理解语音和文本,是人类能够形成通用语言能力的重要原因。那么,人工智能是否也能如此?最近,来自字节跳动和UIUC的研究人员借鉴这一思路,设计了一个跨模态...

    AI科技评论
  • Stanford NLP 解读 ACL 2018 论文——用于调试 NLP 模型的语义等价对立规则

    AI 科技评论按:近日,斯坦福自然语言处理小组发布了一篇博文,重点讨论了由 Ribeiro、Marco Tulio、Sameer Singh 和 Carlos ...

    AI科技评论
  • 年终收藏! 一文看尽2020年度最「出圈」AI论文合集

    疫情之下,通过各种方式,全球的研究者继续积极合作,发表了许许多多有影响力的成果——特别是在人工智能领域。

    新智元
  • 授权首发:徐亦达老师精选论文集和课件下载

    徐亦达老师和他的团队精选了70篇论文,其中包括了非参贝叶斯算法的研究和应用,行列式点过程,3D计算机视觉,带约束下几何优化,非负矩阵分解,视频跟踪,GAN的文字...

    黄博的机器学习圈子
  • 【系列文章】面向自动驾驶的三维点云处理与学习(2)

    标题:3D Point Cloud Processing and Learning for Autonomous Driving

    点云PCL博主
  • 机器学习&人工智能博文链接汇总

    ? 争取每天更新 ? 126 ? ---- 蜗牛的历程: [入门问题] [机器学习] [聊天机器人] [好玩儿的人工智能应用实例] [Tensor...

    杨熹
  • 机器翻译简史:八十多年来,人类就是要再造一座通天塔

    《圣经》中记载,人类曾经联合起来兴建能通往天堂的高塔,为了阻止人类的计划,上帝让人类说不同的语言,使人类相互之间不能沟通,计划因此失败,人类自此各散东西。

    量子位
  • 李航NSR论文:深度学习NLP的现有优势与未来挑战

    选自NSR 机器之心编译 参与:路雪、黄小天 近日,AI 技术大牛李航博士(已加入今日头条)在《国家科学评论》(National Science Review,...

    机器之心
  • 业界 | 搜狗机器翻译团队获得 WMT 2017 中英机器翻译冠军

    搜狗语音交互技术中心 机器之心报道 每年的第三季度都是机器学习相关的顶级学术会议密集召开的时期,今年也不例外。其中,作为自然语言处理领域顶级国际会议之一的 EM...

    机器之心
  • 独家 | 每个业务分析专家应具备的9个关键技能

    本文为大家介绍了每个业务分析专家应具备的9个关键技能,并对每个技能做了简单的介绍。

    数据派THU

扫码关注云+社区

领取腾讯云代金券