library(readr)
options(scipen = 200)#scipen 表示在200个数字以内都不使用科学计数法
k<- read_csv("C:/Users/Administrator/Desktop/1.csv")
## Rows: 545850 Columns: 11
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (10): 账号来源, 昵称, 粉丝数, 作者简介, 作者认证, 一级分类, 二级分类, 账号质量, 账号属性, 内容形式...
## dbl (1): 账号id
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
#View(k)
names(k)
## [1] "账号id" "账号来源" "昵称" "粉丝数" "作者简介" "作者认证"
## [7] "一级分类" "二级分类" "账号质量" "账号属性" "内容形式"
# install.packages("tidyverse") #if needed
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5 v dplyr 1.0.7
## v tibble 3.1.4 v stringr 1.4.0
## v tidyr 1.1.3 v forcats 0.5.1
## v purrr 0.3.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
k$粉丝数<-as.numeric(k$粉丝数)#变为数字型
## Warning: NAs introduced by coercion
k %>% filter(粉丝数 >= 90) #挑选一下
## # A tibble: 545,827 x 11
## 账号id 账号来源 昵称 粉丝数 作者简介 作者认证 一级分类 二级分类 账号质量
## <dbl> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 2.67e 9 微博 新手~ 1.85e8 "教授新~ 新浪微~ 生活 其他 非低质
## 2 5.88e 9 微博 超话~ 1.63e8 "unknown" 超话社~ 生活 其他 非低质
## 3 6.19e 9 微博 微博~ 1.20e8 "unknown" 微博故~ 生活 其他 非低质
## 4 3.91e 9 微博 让红~ 4.28e7 "让红包~ 新浪微~ 生活 其他 非低质
## 5 4.48e18 抖音 我是~ 3.38e7 "调皮外~ unknown 生活 其他 非低质
## 6 6.93e 9 微博 种草~ 2.92e7 "不清楚~ 娱乐博主 生活 分享测评 非低质
## 7 1.15e 9 微博 种草~ 2.74e7 "一个平~ 影评人 生活 分享测评 非低质
## 8 6.16e 9 微博 壁纸妈 2.64e7 "壁纸" 知名摄~ 生活 生活爱好 非低质
## 9 5.94e 9 微博 超话~ 2.63e7 "看每日~ 超话社~ 生活 其他 非低质
## 10 5.08e 9 微博 淘宝~ 2.56e7 "unknown" 超话小~ 生活 分享测评 非低质
## # ... with 545,817 more rows, and 2 more variables: 账号属性 <chr>,
## # 内容形式 <chr>
ka<- k %>% filter(粉丝数 >= 90)
ggplot(ka,
aes(x = 内容形式, y = 粉丝数, color = 账号来源)) +
geom_point()

table(k$内容形式) #发现比较怪的东西
##
## xzs18875230311 视频 图文
## 1 406755 139094
ka1<- k %>% filter(粉丝数 >= 90,内容形式 !="xzs18875230311") #去掉比较怪的东西
ggplot(ka1,
aes(x = 内容形式, y = 粉丝数, color = 账号来源)) +
geom_point()

ka1 %>%
ggplot(aes(x = 内容形式, y = 粉丝数)) +
geom_boxplot()

#install.packages("DescTools")
library(DescTools)
ka1 %>% arrange(desc(粉丝数)) #从高到低排序 前面几个太多粉丝 影响分析结果
## # A tibble: 545,826 x 11
## 账号id 账号来源 昵称 粉丝数 作者简介 作者认证 一级分类 二级分类 账号质量
## <dbl> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 2.67e 9 微博 新手~ 1.85e8 "教授新~ 新浪微~ 生活 其他 非低质
## 2 5.88e 9 微博 超话~ 1.63e8 "unknown" 超话社~ 生活 其他 非低质
## 3 6.19e 9 微博 微博~ 1.20e8 "unknown" 微博故~ 生活 其他 非低质
## 4 3.91e 9 微博 让红~ 4.28e7 "让红包~ 新浪微~ 生活 其他 非低质
## 5 4.48e18 抖音 我是~ 3.38e7 "调皮外~ unknown 生活 其他 非低质
## 6 6.93e 9 微博 种草~ 2.92e7 "不清楚~ 娱乐博主 生活 分享测评 非低质
## 7 1.15e 9 微博 种草~ 2.74e7 "一个平~ 影评人 生活 分享测评 非低质
## 8 6.16e 9 微博 壁纸妈 2.64e7 "壁纸" 知名摄~ 生活 生活爱好 非低质
## 9 5.94e 9 微博 超话~ 2.63e7 "看每日~ 超话社~ 生活 其他 非低质
## 10 5.08e 9 微博 淘宝~ 2.56e7 "unknown" 超话小~ 生活 分享测评 非低质
## # ... with 545,816 more rows, and 2 more variables: 账号属性 <chr>,
## # 内容形式 <chr>
summary(ka1$粉丝数) #基本统计参数
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10000 13000 19000 83788 45380 185099216
ka1 %>%
ggplot(aes(x = "", y = 粉丝数)) +
geom_boxplot()

#以下代码参考 https://www.statsandr.com/blog/outliers-detection-in-r/ 去掉离群值
#boxplot.stats(ka1$粉丝数)$out
upper_bound <- quantile(ka1$粉丝数, 0.999991) #找出最多的
upper_bound #得出分界点
## 99.9991%
## 29587844
outlier_ind <- which(ka1$粉丝数 > upper_bound) #得出最多粉丝的几行
outlier_ind
## [1] 1 2 3 4 5
ka1[outlier_ind, ] #看一下哪几行粉丝最多
## # A tibble: 5 x 11
## 账号id 账号来源 昵称 粉丝数 作者简介 作者认证 一级分类 二级分类 账号质量
## <dbl> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 2.67e 9 微博 新手指南 1.85e8 "教授新~ 新浪微~ 生活 其他 非低质
## 2 5.88e 9 微博 超话社区 1.63e8 "unknow~ 超话社~ 生活 其他 非低质
## 3 6.19e 9 微博 微博故事 1.20e8 "unknow~ 微博故~ 生活 其他 非低质
## 4 3.91e 9 微博 让红包飞 4.28e7 "让红包~ 新浪微~ 生活 其他 非低质
## 5 4.48e18 抖音 我是田姥姥 3.38e7 "调皮外~ unknown 生活 其他 非低质
## # ... with 2 more variables: 账号属性 <chr>, 内容形式 <chr>
ka2 <- ka1[-outlier_ind, ] #去掉最多粉丝的几行
ka2 %>%
ggplot(aes(x = 内容形式, y = 粉丝数)) +
geom_boxplot()

#对比下去掉离群值的结果
# https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/index.html
ggplot(ka2, aes(x = 内容形式, y = 粉丝数 , color = 账号属性)) +
geom_boxplot()+
facet_wrap(~二级分类) +
ggtitle("投放数据分析",subtitle = "W1") +
labs(y = "Fans Number", caption = "Source: T") +
theme(plot.title = element_text(face = "bold")) +
theme(plot.subtitle = element_text(face = "bold", color = "grey35")) +
theme(plot.caption = element_text(color = "grey68"))
