前言:
这是关于张敬信老师@张敬信的专栏R&Python数据科学中的文章:玩转数据处理120题(R语言tidyverse版本)的个人自学笔记。敬信老师是我本科期间的恩师之一,非常感谢他提供的学习资源。
题目和主要代码均为敬信老师的原文内容,除此之外的注解为个人补充,如有错误,感激指正。
原来打算把敬信老师的120题在一篇文章中汇总出来,可是第一次在知乎上写长文,我发现在网页上写太容易出现乱码了,时不时就一长串乱码,真的害怕码了半天的字就没了。于是写到第50题就赶紧保存,然后另起一篇。不知道这是浏览器的原因还是知乎自己的原因,希望有人能不吝赐教。
#0(准备):需要的包
install
#1(创建数据):创建数据框df
敬信老师:
df
#2(筛选行):提取含有字符串python的行
敬信老师:
df
敬信老师在这里用的是filter函数(筛选函数),允许对数据集取子集,第一个参数是数据框的名字(此处由于通过管道函数给定数据框为df),之后的参数是用于过滤数据框的表达式。
#3(查看列名):输出df的所有列名
敬信老师:
names
#4(修改列名):修改第二列列名为popularity
敬信老师:
df
#5(统计频数):统计grammer列中每一种编程语言出现的次数
敬信老师:
df
#6(缺失值处理):将空值用上下值的平均值填充
敬信老师:
df
敬信老师在这里用的是mutate函数,关于mutate函数补充如下:
# 删除grammer列的数据,即将null值赋予列
#7(筛选行):提取popularity列中值大于3的行
敬信老师:
df
#8(数据去重):按grammer列进行去重
敬信老师:
df
#9(数据计算):计算popularity列平均值
敬信老师:
df
#10(格式转换):将grammer列转换为序列
敬信老师:
df
#11(数据保存):将数据框保存为Excel
敬信老师:
writexl
#12(数据查看):查看数据的行数列数
敬信老师:
dim
#13(筛选行):提取popularity列值大于3小于7的行
敬信老师:
df
#14(调整列位置):交互两列的位置
敬信老师:
df
#15(筛选行):提取popularity列最大值所在的行
敬信老师:
df
#16(查看数据):查看最后几行数据
敬信老师:
tail
#17(修改数据):删除最后一行数据
敬信老师:
df
敬信老师在这里用的是slice函数,关于slice函数补充如下:
# 如果选择某一特定行数据,例如选取第三行:
#18(修改数据):添加一行数据:"Perl", 6
敬信老师:
newrow
#19(数据整理):对数据按popularity列值从到大到小排序
敬信老师:
df
敬信老师在这里用的是arrange函数(排序函数),关于arrange函数补充如下:
# 对数据按popularity列值从到小到大排序
#20(字符统计):统计grammer列每个字符串的长度
敬信老师:
df
Excel数据:https://pan.baidu.com/s/1-J-wGj1_5-kaByvyhDGOHA 提取码:42yk
#21(读取数据):读取本地Excel数据
敬信老师:
df
#22(查看数据):查看df数据的前几行(后几行)
敬信老师:
head
#23(数据计算):将salary列数据转换为最大值与最小值的平均值
敬信老师:
df
#24(分组汇总):根据学历分组,并计算平均薪资
敬信老师:
df
敬信老师在这里用的是summarise函数(聚合函数),关于summarise函数补充如下:
# 创建新的数据框data frame,命名为salary,包含有group,salary_avg,salary_max,salary_min
#25(时间转换):将createTime列转换为"月-日"
敬信老师:
library
#26(查看数据):查看数据结构信息
敬信老师:
df
#27(查看数据):查看数据汇总信息
敬信老师:
summary
#28(修改列):新增一列将salary离散化为三水平值
敬信老师:
df
敬信老师在这里用的是case_when函数,允许定义多个if_else()语句,等效于SQL中CASE WHEN 语句。
#29(数据整理):按salary列对数据降序排列
敬信老师:
df
#30(筛选行):提取第33行数据
敬信老师:
df
#31(数据计算):计算salary列的中位数
敬信老师:
median
#32(数据可视化):绘制salary列的频率分布直方图
敬信老师:
df
#33(数据可视化):绘制salary的频率密度曲线图
敬信老师:
df
#34(数据删除):删除列class
敬信老师:
df
#35(数据操作):将df的第1列与第2列合并为新的一列
敬信老师:
df
敬信老师在这里用的是unite函数,关于unite函数的补充如下:
# "newcol"为合并列的新命名,1:2为合并1、2列,sep = " "为合并中间间隔空格
#36(数据操作):将education列与第salary列合并为新的一列
敬信老师:
df
#37(数据计算):计算salary最大值与最小值之差
敬信老师:
max
#38(数据操作):将第一行与最后一行拼接
敬信老师:
bind_rows
#39(数据操作):将第8行添加到末尾
敬信老师:
bind_rows
#40(查看数据):查看每一列的数据类型
敬信老师:
df
#41(数据操作):将createTime列设置为行索引
敬信老师:
df
#42(数据创建):生成一个和df长度相同的随机数数据框
敬信老师:
df1
#43(数据连接):将上面生成的数据框与df按列合并
敬信老师:
df
#44(修改列):生成新列new为salary列减去随机数列
敬信老师:
df
#45(检查缺失值):检查数据中是否含有任何缺失值
敬信老师:
anyNA
#46(类型转换):将rnums列的类型转换为浮点数
敬信老师:
df
#47(数据汇总):计算salary列大于10000的次数
敬信老师:
df
#48(统计频数):查看每种学历出现的次数
敬信老师:
df
#49(数据汇总):查看education列共有几种学历
敬信老师:
df
#50(筛选行):提取salary与new列之和大于60000的最后3行
敬信老师:
df
参考资料:
1.张敬信:玩转数据处理120题之P1-P20(R语言tidyverse版本)
2.张敬信:玩转数据处理120题之P21-P50(R语言tidyverse版本)
3. molearner:dplyr 数据操作 列操作(select / mutate)
4.小橙子:数据整理—dplyr包(summarise系列)
5.王诗翔:【r<-数据分析】使用dplyr(1):介绍与filter操作
6.张丹:R语言时间序列基础库zoo
7.张丹:R语言数据科学新类型tibble
8.g863402758:R语言数据类型转化