分享

实操 | 复习Pandas一些常用操作

 大邓的Python 2021-02-23

我挺喜欢看B站up主-老师好我叫何同学 , 所以今天就用bsite库采集一下何同学的视频信息及评论数据,每个视频的评论以csv文件存储于data/comments内。

bsite库 | 采集B站视频信息、评论数据

本文涉及

  1. pandas读取数据
  2. 选取某列
  3. 多个dataframe的合并
  4. dataframe中某字段(series)的统计
  5. 中文分词
  6. 词频统计
  7. os库文件操作

一、视频

何同学视频相关信息

import pandas as pd

df = pd.read_csv('data/videos.csv')
df.head()

authorbvidaidmidcreatedlengthcommentdescriptionpicplaysubtitletitle
0老师好我叫何同学BV1TV411S7pw414410641163637592159878659405:3111874动画:joyteeth yami\n特效:flashyami\n感谢九老师对本期视频的巨大帮助!https://i2./bfs/archive/cf4dbe6189b8d...5236179NaN【何同学】“看不见”的未来 小米透明电视使用体验
1老师好我叫何同学BV1Nt4y1D7pW626524324163637592159637023210:331742593D动画:joyteeth\n开头特效:flashyami\n制片:九老师\n感谢木头老师对...https://i2./bfs/archive/3c1a8b5f76251...10823508NaN【何同学】我拍了一张600万人的合影...
2老师好我叫何同学BV1Xi4y1x7eM540601597163637592158876641805:0417924简介:\n滑屏程序:罗工\n网站 :银翼的魔术师MX\n动画:何同学 joyteeth ch...https://i2./bfs/archive/d8713881cbcaf...6378068NaN【何同学】我用一万行备忘录做了个动画...
3老师好我叫何同学BV1wV411d7Dc412909688163637592158756103805:2517201感谢233同学帮助制作本期视频\n感谢橙同学借我的Mate XShttps://i2./bfs/archive/a5f5b0e965137...4995826NaN【何同学4K】3299真香?iPhone SE使用体验
4老师好我叫何同学BV1YK4y1C7CU882566744163637592158565895007:5123851感谢@贰_33为本期视频加了音效\n开头是对马男波杰克S04E06的拙劣模仿https://i2./bfs/archive/67b9aed25aa4c...6082972NaN【何同学】一只鸽子的自白

1.1 播放量

视频平均播放量(单位: 万)

df['play'].mean()/10000
379.38345675675674

1.2 评论量

# 视频平均评论量
df['comment'].mean()
12769.243243243243
# 评论总量
df['comment'].sum()
472462

1.3 视频时长

视频平均时长(单位: min)

def minute2second(minute):
    info = minute.split(':')
    return int(info[0])*int(info[1])
    
df['length'].apply(minute2second).mean()/60
3.433333333333333

1.4 词频统计

对何同学视频的description字段数据进行汇总,分词、词频统计

import jieba
import re

# 整理数据
df['description'] = df['description'].astype(str)
description = ''.join(df['description'])

#清洗数据
description = ''.join(re.findall('[\u4e00-\u9fa5]+', description))

# 分词&词频统计个
words = jieba.lcut(description)
wordfreqs = []
for word in set(words):
    freq = words.count(word)
    wordfreqs.append((word, freq))

# 保存结果
data = pd.DataFrame(wordfreqs, columns=['word''freq'])
data.to_csv('output/视频词频.csv', index=False)

1.5 关键词

使用stylecloud进行词云图可视化

import stylecloud

stopwords = open('data/stopwords.txt', encoding='utf-8').read().split('\n')

stylecloud.gen_stylecloud(file_path='output/视频词频.csv',
                          font_path='data/SourceHanSansCN-Regular.otf',
                          output_name='output/何同学的视频关键词.png',
                          size=500,
                          custom_stopwords=stopwords)

output/何同学的视频关键词.png)

二、评论

2.1 评论文件查看

所有评论csv数据存储于data/comments文件夹内,查看下csv

import os

os.listdir('data/comments')
['19780443.csv',
'28684677.csv',
'540601597.csv',
'79091085.csv',
'.DS_Store',
'412909688.csv',
'23278605.csv',
'17703816.csv',
'15196234.csv',
'69358135.csv',
'60043361.csv',
'54737593.csv',
'35049732.csv',
'882566744.csv',
'414410641.csv',
'19205223.csv',
'27469164.csv',
'42349835.csv',
'29437173.csv',
'81516881.csv',
'15147368.csv',
'47180907.csv',
'66210564.csv',
'49432234.csv',
'33249554.csv',
'16581287.csv',
'33489311.csv',
'22042515.csv',
'43248892.csv',
'20209991.csv',
'37220850.csv',
'74166406.csv',
'30630027.csv',
'92699533.csv',
'32146794.csv',
'44080002.csv',
'52466874.csv',
'626524324.csv']
## 评论文件个数(视频个数)
len(os.listdir('data/comments'))
38

2.2 查看某评论csv

评论文件夹内有很多字段,这里以 data/comments/626524324.csv 文件为例。该文件对应的视频为

  • 【何同学】我拍了一张600万人的合影...
import pandas as pd

df = pd.read_csv('data/comments/626524324.csv')
df.head()

contentdevicelikercountctimeavatarlevelsexsignunamemidoiddiag
0谢谢你为了一个个不知所云的网名特意做了这张照片。\n我也会记得曾有人如此地在意过一个我,尽管...NaN15940130NaNhttp://i1./bfs/face/9b63957c5d35e4eaa...5保密羽猫今天码字了吗?Vf羽猫45165730626524324原评论
1[热词系列_泪目]真的好感动啊……明明是陌生人的我们被温柔地连在一起了NaN5090NaNhttp://i1./bfs/face/6848c37c1b0389013...5保密NaN梧越1502390626524324原评论
2真的太浪漫了太有心了,不知道怎么夸了,全程张着嘴看完的,何同学真的太值得粉了![打call]NaN2830NaNhttp://i2./bfs/face/1ad0b2e00938fe40c...5菜鸟就是我了_Real_me200720380626524324原评论
3我们和小何是双向的爱啊NaN1260NaNhttp://i1./bfs/face/13fe65d8c9350e92d...4保密NaN子服呀411480205626524324原评论
4没啥说的,转就是了phone37913141NaNhttp://i2./bfs/face/c1733474892caa459...6商务合作/广告/宣传片/影视摄制私信影视飓风946974626524324原评论

2.3 评论词频统计

文件比较多,处理过程较慢

import pandas as pd
import os



#获取所有csv路径
files = os.listdir('data/comments')
files = ['data/comments/'+f for f in files if 'csv' in f]

dfs = []
#打开所有的csv, 合并多个df
for file in files:
    df = pd.read_csv(file)
    dfs.append(df)

alldf = pd.concat(dfs)
alldf.head()
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/IPython/core/interactiveshell.py:3063: DtypeWarning: Columns (2,3,4,6,10,11) have mixed types.Specify dtype option on import or set low_memory=False.
interactivity=interactivity, compiler=compiler, result=result)

contentdevicelikercountctimeavatarlevelsexsignunamemidoiddiag
0“麻麻,你看又来啦”哈哈哈哈哈哈phone15854NaNhttp://i0./bfs/face/02198be3bfa559e74...5保密xzq 鞋 来打 胶热爱薛洁洁的阿新8636689419780443原评论
12020年来打破[微笑]NaN60NaNhttp://i0./bfs/face/1496caccaea826e53...3保密这个b很懒,什么也没留下( ˘·ω·˘ )来自星星的冰心49631460719780443原评论
2回复 @来自星星的冰心 :哈哈哈哈哈哈哈phone20NaNhttp://i0./bfs/face/02198be3bfa559e74...5保密xzq 鞋 来打 胶热爱薛洁洁的阿新8636689419780443原评论
3两年1200赞1回复,是真滴惨NaN10NaNhttp://i1./bfs/face/c72123fd8ba16689e...5NaN黑兔不吃草33886805419780443原评论
4听口音就怀疑是太原小后生了 姐姐我太喜欢你这种有才华的人了哈哈phone257352NaNhttp://i2./bfs/face/286d8afc470353007...4保密NaNDu锦荣792605819780443原评论

#评论数
len(alldf)
440898

数据采集时遇到网络问题,所以跟之前的评论总数472462对不上.

评论者性别分布

为了省事,这里假设评论者只发一条评论,直接对alldf的sex字段进行性别统计

alldf['sex'].value_counts()
保密 228191
男 128857
女 83848
sex 2
Name: sex, dtype: int64
alldf['sex'].value_counts(normalize=True)
保密 0.517560
男 0.292260
女 0.190176
sex 0.000005
Name: sex, dtype: float64
没想到保密的占了一半,如果排除保密,还是男粉多一些。

评论者设备分布

alldf['device'].value_counts()
phone 88384
pad 20793
android 5003
unknown 1671
device 2
Name: device, dtype: int64
alldf['device'].value_counts(normalize=True)
phone 0.762898
pad 0.179477
android 0.043184
unknown 0.014423
device 0.000017
Name: device, dtype: float64

本文代码和数据集

下载链接:https://pan.baidu.com/s/1rDlhFhEniGv2CsZ9OqO7Iw  密码:1fv7

近期文章

Python网络爬虫与文本数据分析
bsite库 | 采集B站视频信息、评论数据
rpy2库 | 在jupyter中调用R语言代码
tidytext | 耳目一新的R-style文本分析库
reticulate包 | 在Rmarkdown中调用Python代码
plydata库 | 数据操作管道操作符>>
plotnine: Python版的ggplot2作图库
七夕礼物 | 全网最火的钉子绕线图制作教程
读完本文你就了解什么是文本分析
文本分析在经管领域中的应用概述  
综述:文本分析在市场营销研究中的应用
plotnine: Python版的ggplot2作图库
小案例: Pandas的apply方法  
stylecloud:简洁易用的词云库 
用Python绘制近20年地方财政收入变迁史视频  
Wow~70G上市公司定期报告数据集
漂亮~pandas可以无缝衔接Bokeh  
YelpDaset: 酒店管理类数据集10+G  

    分享”和“在看”是更好的支持!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多