分析伯乐在线文章数据

一、读取文章数据

pandas读取mysql数据到DataFrame中

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd
from sqlalchemy import create_engine

db_info = {'user':'root',
'password':'',
'host':'localhost',
'database':'article_spider'
}
engine = create_engine('mysql://%(user)s:%(password)s@%(host)s/%(database)s?charset=utf8' % db_info,encoding='utf-8')
sql = 'select * from jobbole_article;'
df = pd.read_sql(sql , con = engine)

二、数据分析

1. 查看数据

df.info() 查看数据信息 df.isnull() 判断数据是否缺失 #### 2. 清洗数据 只保留title、creat_data、tags三个属性的数据

1
df.loc[:,['create_date','title','tags']]

按时间进行排序

1
df.sort_values(by='create_date',ascending = False)

将数据类型转换为日期类型并设置为索引

1
2
df['create_date'] = pd.to_datetime(df['create_date']) #将数据类型转换为日期类型
df = df.set_index('create_date') # 将dcreate_date设置为索引

获取2017年的文章信息及tags和title内容

1
2
3
df = df['2017']
tags = df['tags']
title = df['title']

3.数据类型转换

首先使用np.array()函数把DataFrame转化为np.ndarray(),再利用tolist()函数把np.ndarray()转为list类型

1
2
3
4
5
tags_data = np.array(tags)#np.ndarray()
tags_list = tags_data.tolist()#list
tags_text = "".join(tags_list) # 拼接成text
tags_text = tags_text.replace(',','') #把逗号换为空
tags_text = tags_text.replace('/','')

4.中文分词

利用结巴分词进行中文分词操作

1
2
3
4
5
6
import jieba    
import pandas as pd
jieba.add_word('C/C++')
segment = jieba.lcut(tags_text)
words_df = pd.DataFrame({'segment':segment})
words_df.head()

进行词频统计

1
2
3
4
import numpy
words_stat = words_df.groupby(by=['segment'])['segment'].agg({"计数":np.size})
words_stat = words_stat.reset_index().sort_values(by=["计数"],ascending=False)
words_stat.head()

#### 5. 词云显示数据

1
2
3
4
5
6
7
8
9
10
11
12
import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib
matplotlib.rcParams['figure.figsize'] = (10.0, 5.0)

from wordcloud import WordCloud#词云包

#用词云进行显示
wordcloud=WordCloud(font_path="simhei.ttf",background_color="white",max_font_size=80)
word_frequence = {x[0]:x[1] for x in words_stat.head(1000).values}
wordcloud = wordcloud.fit_words(word_frequence)
plt.imshow(wordcloud)

得到关于伯乐在线2017年的文章的标签的使用程度如下