Task 2 数据读取与数据分析
数据读取
下载数据,通过read_csv 读取train_set.csv数据:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
train_df=train_df=pd.read_csv('d:\\a\\train_set1.csv',sep='\t',nrows=100)
train_df.head
参数:sep每列的分隔符,用‘\t’分割,nrows=100,读取100条数据
数据分析
赛题数据中每行句子的字符使用空格进行分割,可通过直接统计单词的个数得到每个句子的长度。
%pylab inline
train_df['text_len']=train_df['text'].apply(lambda x:len(x.split(' ')))
print(train_df['text_len'].describe())
通过结果可知,句子长度均值在872,最短64 最长7125
查看句子长度的直方图:
_=plt.hist(train_df['text_len'],bins=200)
plt.xlabel('Text char count')
plt.title('Histogram of char count')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lDDtpSXj-1595408686822)(D:\downlpad\288d01fbc2f9cd73258e1a8db9e8e41.png)]
查看赛题数据的类别分布
通过绘制直方图来查看每个新闻类别的分布。
train_df['label'].value_counts().plot(kind='bar')
plt.title('New class count')
plt.xlabel("category")
输出结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rt3gjWxD-1595408686824)(D:\downlpad\93494884acc7115cf6875b428d39a7b.png)]
通过结果可知,大部分的新闻分布是0,1,2 最少的是13,新闻的类别标识为:{‘科技’:0,‘股票’:1,‘体育’:2,‘娱乐’:3,‘时政’:4,‘社会’:5,‘教育’:6,‘财经’:7,‘家居’:8,‘游戏’:9,‘房产’:10,‘时尚’:11,‘彩票’:12,‘星座’:13}。
字符分布
统计每个字符出现的次数,将句子进行拼接进而划分为字符,并统计每个字符的个数。通过统计,知道 3750 3702 5034 出现频率最高推测其为标点符号。
使用lambda函数,先对train_df[‘text’]的数据进行去重,然后拼接统计:
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(len(word_count))
print(word_count[0])
print(word_count[-1])
可知:1.每个新闻的字符个数在900多,还有个别新闻较长,可能需要截断;
2.新闻类别分布不均匀,会影响模型精度。
)
可知:1.每个新闻的字符个数在900多,还有个别新闻较长,可能需要截断;
2.新闻类别分布不均匀,会影响模型精度。