Task 2 数据读取与数据分析
1.学习目标
1.学习使用Pandas读取赛题数据
2.分析赛题数据的分布规律
2.数据读取
数据采用csv格式存储,可以直接用pandas进行数据读取的操作。
这里的read_csv是读取csv文件的通用方法,第一个参数是文件路径,第二个参数为分隔符,如果想控制读取的行数可以加上第三个参数nrows。
head()函数返回对象的前n行,缺省为5。
运行后可以看到读取后的数据,有分类标签label,文本数据text,为表格的形式。
3.数据分析
读取数据集后可以对数据进行数据分析的操作。虽然本次数据集是非结构化数据,一般不用做太多数据分析,但通过一定的数据分析还是可以找出一些规律的。
首先确定数据分析的目的:
1.赛题数据中,新闻文本的长度是多少?
2.赛题数据的类别分布如何?那些类别比较多?
3.赛题数据中,字符分布是怎么样的?
3.1 句子长度分析
赛题数据的每行句子使用空格进行分离,所以可以直接统计单词的个数来得到每个句子的长度。
这里我们计算了每个句子的长度,主要使用了lambda表达式以及split()函数。describe()函数可以显示数据的相关信息。
从结果看出,赛题给出的文本比较长,每个句子平均由907个字符组成,最短的句子只有2个字符,而最长的句子长度达到57921。
下面使用直方图的形式查看句子长度:
hist()是绘制直方图的方法,bins参数为绘制的柱状条数量。
结果看出大部分句子长度在2000内。
3.2 新闻类别分布
对数据集的类别进行分布统计,具体统计每类新闻的样本个数的分布情况。
还是一样采用直方图的形式查看。我们在Task1已经了解了标签的对应关系:{‘科技’: 0, ‘股票’: 1, ‘体育’: 2, ‘娱乐’: 3, ‘时政’: 4, ‘社会’: 5, ‘教育’: 6, ‘财经’: 7, ‘家居’: 8, ‘游戏’: 9, ‘房产’: 10, ‘时尚’: 11, ‘彩票’: 12, ‘星座’: 13}。
value_counts()是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值。可以快速计算每个类别的数量。plot(kind=‘bar’)绘制柱状图。
从结果看出,类别分布存在不均匀的情况,其中科技类最多,股票类次之,最少的是星座新闻。
3.3 字符分布统计
统计每个字符出现的次数,步骤如下:
将训练集中所有句子拼接→将拼接后的内容划分为字符→统计每个字符的个数。
from collections import Counter
all_lines = ' '.join(list(train_df['text']))
word_count = Counter(all_lines.split(" "))
word_count