{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### 网络科学理论简介\n",
"***\n",
"***\n",
"# 天涯论坛的回帖网络分析\n",
"***\n",
"***\n",
"\n",
"王成军 \n",
"\n",
"wangchengjun@nju.edu.cn\n",
"\n",
"计算传播网 http://computational-communication.com"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2018-05-06T06:34:29.084018Z",
"start_time": "2018-05-06T06:34:28.612341Z"
},
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2018-05-06T06:34:41.770174Z",
"start_time": "2018-05-06T06:34:41.667215Z"
},
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"8079"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dtt = []\n",
"file_path = '../data/tianya_bbs_threads_network.txt'\n",
"with open(file_path, 'r') as f:\n",
" for line in f:\n",
" pnum, link, time, author_id, author,\\\n",
" content = line.replace('\\n', '').split('\\t')\n",
" dtt.append([pnum, link, time, author_id, author, content])\n",
"len(dtt)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2018-05-06T06:34:47.779888Z",
"start_time": "2018-05-06T06:34:46.996707Z"
},
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"
\n",
" \n",
" \n",
" | \n",
" page_num | \n",
" link | \n",
" time | \n",
" author | \n",
" author_name | \n",
" reply | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" /post-free-2849477-1.shtml | \n",
" 2012-10-29 07:59:00 | \n",
" 50499450 | \n",
" 贾也 | \n",
" 先生是一位真爷们!第161期导语:人人宁波,面朝大海,春暖花开! 宁波的事,怎谈?无从谈,... | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" /post-free-2849477-1.shtml | \n",
" 2012-10-29 08:13:54 | \n",
" 22122799 | \n",
" 三平67 | \n",
" 我们中国人都在一条船,颠簸已久,我们都想做宁波人,希望有一个风平浪静的港湾,面朝大海,春暖花... | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" /post-free-2849477-1.shtml | \n",
" 2012-10-29 08:27:02 | \n",
" 39027950 | \n",
" 赶浪头 | \n",
" 默默围观~ | \n",
"
\n",
" \n",
" 3 | \n",
" 1 | \n",
" /post-free-2849477-1.shtml | \n",
" 2012-10-29 08:43:15 | \n",
" 53986501 | \n",
" m408833176 | \n",
" 不能收藏? | \n",
"
\n",
" \n",
" 4 | \n",
" 1 | \n",
" /post-free-2849477-1.shtml | \n",
" 2012-10-29 08:55:52 | \n",
" 39073643 | \n",
" 兰质薰心 | \n",
" 楼主好文! 相信政府一定有能力解决好这些问题. | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" page_num link time author \\\n",
"0 1 /post-free-2849477-1.shtml 2012-10-29 07:59:00 50499450 \n",
"1 1 /post-free-2849477-1.shtml 2012-10-29 08:13:54 22122799 \n",
"2 1 /post-free-2849477-1.shtml 2012-10-29 08:27:02 39027950 \n",
"3 1 /post-free-2849477-1.shtml 2012-10-29 08:43:15 53986501 \n",
"4 1 /post-free-2849477-1.shtml 2012-10-29 08:55:52 39073643 \n",
"\n",
" author_name reply \n",
"0 贾也 先生是一位真爷们!第161期导语:人人宁波,面朝大海,春暖花开! 宁波的事,怎谈?无从谈,... \n",
"1 三平67 我们中国人都在一条船,颠簸已久,我们都想做宁波人,希望有一个风平浪静的港湾,面朝大海,春暖花... \n",
"2 赶浪头 默默围观~ \n",
"3 m408833176 不能收藏? \n",
"4 兰质薰心 楼主好文! 相信政府一定有能力解决好这些问题. "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"dt = pd.DataFrame(dtt)\n",
"dt=dt.rename(columns = {0:'page_num', 1:'link', 2:'time', 3:'author',4:'author_name', 5:'reply'})\n",
"dt[:5]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2018-05-06T06:37:10.752517Z",
"start_time": "2018-05-06T06:37:10.744618Z"
},
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"# extract date from datetime\n",
"date = [i[:10] for i in dt.time]\n",
"dt['date'] = pd.to_datetime(date)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2018-05-06T06:37:13.850919Z",
"start_time": "2018-05-06T06:37:13.837196Z"
},
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" page_num | \n",
" link | \n",
" time | \n",
" author | \n",
" author_name | \n",
" reply | \n",
" date | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" /post-free-2849477-1.shtml | \n",
" 2012-10-29 07:59:00 | \n",
" 50499450 | \n",
" 贾也 | \n",
" 先生是一位真爷们!第161期导语:人人宁波,面朝大海,春暖花开! 宁波的事,怎谈?无从谈,... | \n",
" 2012-10-29 | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" /post-free-2849477-1.shtml | \n",
" 2012-10-29 08:13:54 | \n",
" 22122799 | \n",
" 三平67 | \n",
" 我们中国人都在一条船,颠簸已久,我们都想做宁波人,希望有一个风平浪静的港湾,面朝大海,春暖花... | \n",
" 2012-10-29 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" /post-free-2849477-1.shtml | \n",
" 2012-10-29 08:27:02 | \n",
" 39027950 | \n",
" 赶浪头 | \n",
" 默默围观~ | \n",
" 2012-10-29 | \n",
"
\n",
" \n",
" 3 | \n",
" 1 | \n",
" /post-free-2849477-1.shtml | \n",
" 2012-10-29 08:43:15 | \n",
" 53986501 | \n",
" m408833176 | \n",
" 不能收藏? | \n",
" 2012-10-29 | \n",
"
\n",
" \n",
" 4 | \n",
" 1 | \n",
" /post-free-2849477-1.shtml | \n",
" 2012-10-29 08:55:52 | \n",
" 39073643 | \n",
" 兰质薰心 | \n",
" 楼主好文! 相信政府一定有能力解决好这些问题. | \n",
" 2012-10-29 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" page_num link time author \\\n",
"0 1 /post-free-2849477-1.shtml 2012-10-29 07:59:00 50499450 \n",
"1 1 /post-free-2849477-1.shtml 2012-10-29 08:13:54 22122799 \n",
"2 1 /post-free-2849477-1.shtml 2012-10-29 08:27:02 39027950 \n",
"3 1 /post-free-2849477-1.shtml 2012-10-29 08:43:15 53986501 \n",
"4 1 /post-free-2849477-1.shtml 2012-10-29 08:55:52 39073643 \n",
"\n",
" author_name reply date \n",
"0 贾也 先生是一位真爷们!第161期导语:人人宁波,面朝大海,春暖花开! 宁波的事,怎谈?无从谈,... 2012-10-29 \n",
"1 三平67 我们中国人都在一条船,颠簸已久,我们都想做宁波人,希望有一个风平浪静的港湾,面朝大海,春暖花... 2012-10-29 \n",
"2 赶浪头 默默围观~ 2012-10-29 \n",
"3 m408833176 不能收藏? 2012-10-29 \n",
"4 兰质薰心 楼主好文! 相信政府一定有能力解决好这些问题. 2012-10-29 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dt[:5]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2018-05-06T06:37:31.357158Z",
"start_time": "2018-05-06T06:37:31.339001Z"
},
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" title | \n",
" link | \n",
" author | \n",
" author_page | \n",
" click | \n",
" reply | \n",
" time | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 【民间语文第161期】宁波px启示:船进港湾人应上岸 | \n",
" /post-free-2849477-1.shtml | \n",
" 贾也 | \n",
" http://www.tianya.cn/50499450 | \n",
" 194675 | \n",
" 2703 | \n",
" 2012-10-29 07:59 | \n",
"
\n",
" \n",
" 1 | \n",
" 宁波镇海PX项目引发群体上访 当地政府发布说明(转载) | \n",
" /post-free-2839539-1.shtml | \n",
" 无上卫士ABC | \n",
" http://www.tianya.cn/74341835 | \n",
" 88244 | \n",
" 1041 | \n",
" 2012-10-24 12:41 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" title link author \\\n",
"0 【民间语文第161期】宁波px启示:船进港湾人应上岸 /post-free-2849477-1.shtml 贾也 \n",
"1 宁波镇海PX项目引发群体上访 当地政府发布说明(转载) /post-free-2839539-1.shtml 无上卫士ABC \n",
"\n",
" author_page click reply time \n",
"0 http://www.tianya.cn/50499450 194675 2703 2012-10-29 07:59 \n",
"1 http://www.tianya.cn/74341835 88244 1041 2012-10-24 12:41 "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"\n",
"df = pd.read_csv('../data/tianya_bbs_threads_list.txt', sep = \"\\t\", header=None)\n",
"df=df.rename(columns = {0:'title', 1:'link', 2:'author',3:'author_page', 4:'click', 5:'reply', 6:'time'})\n",
"df[:2]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2018-05-06T06:41:16.700899Z",
"start_time": "2018-05-06T06:41:16.407279Z"
}
},
"outputs": [],
"source": [
"from collections import defaultdict\n",
"\n",
"link_user_dict = defaultdict(list)\n",
"for i in range(len(dt)):\n",
" link_user_dict[dt.link[i]].append(dt.author[i])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2018-05-06T06:41:25.371014Z",
"start_time": "2018-05-06T06:41:25.357396Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" title | \n",
" link | \n",
" author | \n",
" author_page | \n",
" click | \n",
" reply | \n",
" time | \n",
" user | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 【民间语文第161期】宁波px启示:船进港湾人应上岸 | \n",
" /post-free-2849477-1.shtml | \n",
" 贾也 | \n",
" http://www.tianya.cn/50499450 | \n",
" 194675 | \n",
" 2703 | \n",
" 2012-10-29 07:59 | \n",
" 2478 | \n",
"
\n",
" \n",
" 1 | \n",
" 宁波镇海PX项目引发群体上访 当地政府发布说明(转载) | \n",
" /post-free-2839539-1.shtml | \n",
" 无上卫士ABC | \n",
" http://www.tianya.cn/74341835 | \n",
" 88244 | \n",
" 1041 | \n",
" 2012-10-24 12:41 | \n",
" 830 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" title link author \\\n",
"0 【民间语文第161期】宁波px启示:船进港湾人应上岸 /post-free-2849477-1.shtml 贾也 \n",
"1 宁波镇海PX项目引发群体上访 当地政府发布说明(转载) /post-free-2839539-1.shtml 无上卫士ABC \n",
"\n",
" author_page click reply time user \n",
"0 http://www.tianya.cn/50499450 194675 2703 2012-10-29 07:59 2478 \n",
"1 http://www.tianya.cn/74341835 88244 1041 2012-10-24 12:41 830 "
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['user'] = [len(link_user_dict[l]) for l in df.link]\n",
"df[:2] "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2018-05-06T06:42:20.431585Z",
"start_time": "2018-05-06T06:42:18.598454Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"