学习目标
·学习使用Pandas读取赛题数据
·分析赛题数据的分布规律
1.数据读取
import pandas as pd
train_df = pd.read_csv('./train_set.csv',sep='\t',nrows=100)
train_df.head(15)
使用pandas库中的read_csv函数读取文本数据,.head(15)输出前15行。
第一列:新闻类别 第二列:新闻的字符
2.句子长度分析
在读取完成数据集后,我们还可以对数据集进行数据分析的操作。虽然对于非结构数据并不需要做很多的数据分析,但通过数据分析还是可以找出一些规律的。
- 2.1句子长度分析
#句子长度分析,使用空格进行分割开,通过统计单词个数来统计句子长度
%pylab inline
train_df['text_len'] = train_df['text'].apply(lambda x: len(x.split(' ')))
print(train_df['text_len'].describe())
对读取到的100行文本数据进行统计,每行平均有872个字符组成,最长的行有7125个字符,最短的行有64个字符。
将句子长度分布画到直方图。
# 绘制直方图
import matplotlib.pyplot as plt
_=plt.hist(train_df['text_len'],bins=200)
plt.xlabel('Text char cout')
plt.title("Histogram of char count")
- 2.2 新闻类别分布
#新闻类别分布
train_df['label'].value_counts().plot(kind='bar')
plt.title('News class count')
plt.xlabel('category')
在数据集中标签的对应的关系如下:{‘科技’: 0, ‘股票’: 1, ‘体育’: 2, ‘娱乐’: 3, ‘时政’: 4, ‘社会’: 5, ‘教育’: 6, ‘财经’: 7, ‘家居’: 8, ‘游戏’: 9, ‘房产’: 10, ‘时尚’: 11, ‘彩票’: 12, ‘星座’: 13}
- 2.3 字符分布统计
#字符分布统计
from collections import Counter
all_lines = ' '.join(list(train_df['text']))
word_count = Counter(all_lines.split(" "))
word_count = sorted(word_count.items(), key=lambda d:d[1], reverse = True)
print(len(word_count))
print(word_count[0])
print(word_count[-1])
统计结果,一共有2405个字符,字符3750出现的次数最高有3702次,字符5034出现的频率最低只有1次。
- 2.4 统计字符在句中出现的频率
#统计字符在句中出现的频率
from collections import Counter
train_df['text_unique'] = train_df['text'].apply(lambda x:' '.join(list(set(x.split(' ')))))
all_lines=' '.join(list(train_df['text_unique']))
word_count=Counter(all_lines.split(" "))
word_count=sorted(word_count.items(),key=lambda d:int(d[1]),reverse = True)
print(word_count[0])
print(word_count[1])
print(word_count[2])
字符900、3750出现的频率达到99%,字符648出现的频率96%
3.总结
- 3.1每个新闻平均字符个数较多,可能需要截断;
- 3.2由于类别不均衡,会严重影响模型的精度~