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"))