数据读取与分析

  • 数据读取
  • 数据分析
    • 句子长度分析
    • 类别分布
    • 字符分布统计
    • 数据分析的结论

数据读取

import pandas as pdtrain_df = pd.read_csv('/Users/debroon/Desktop/train_set.csv', sep='\t', nrows=100)
train_df.head()
# 查看 top5 的数据


不算前面的行号,第一列为新闻的类别,第二列为新闻的字符。


数据分析

一切技术的出现都是为了解决现实问题,而现实问题分为简单问题和复杂问题。

  • 简单问题,需要简单分析,我们使用「数据分析」。比如最近的阅读量怎么减少了。
  • 复杂问题,需要复杂分析,我们使用「机器学习」。比如根据阅读历史推送新书。

数据分析,核心是分析思维。

分析思维不是要证明你智商很高,而是考察你面对问题展开的分析能力和分析思维。

书上的 5 w 2 h 5w2h 5w2h 这样的常用分析方法,其实根本用不在数据分析工作里。最常用的分析方法其实是:

  • 多维度拆解分析方法;
  • 对比分析方法;
  • 假设检验分析方法;
  • 相关分析方法;
  • 群组分析方法;
  • AARRR漏斗模型分析方法;
  • RFM模型分析方法;
  • … …

握常用的业务数据指标,你才可以灵活应对面试中提出的业务问题。我整理了下面常用的业务指标,准备好这些内容,就可以应对 90 90 90 %的面试了。

  • 反映用户数据的指标:日新增用户、活跃率、留存率;
  • 反映行为数据的指标: P V PV PV(访问次数)、 U V UV UV(访问人数)、转发率、转化率、 K K K因子;
  • 反映总量的指标: 成交总额、成交数量、访问时长;
  • 反映人均的指标:人均付费( A R P U ARPU ARPU/客单价)、付费用户人均付费( A R P P U ARPPU ARPPU)、人均访问时长;
  • 反映付费的指标:付费率、复购率、回购率。

在读取完成数据集后,我们还可以对数据集进行数据分析的操作。

虽然对于非结构数据并不需要做很多的数据分析,但通过数据分析还是可以找出一些规律的。

读取了所有的训练集数据,在此我们通过数据分析希望得出以下结论:

  • 句子长度情况?
  • 哪些类别比较多?
  • 字符分布是怎么样的?

句子长度分析

在赛题数据中每行句子的字符使用空格进行隔开,所以可以直接统计单词的个数来得到每个句子的长度。统计并如下:

train_df['text_len'] = train_df['text'].apply(lambda x: len(x.split(' ')))
print(train_df['text_len'].describe())

运行值:

Populating the interactive namespace from numpy and matplotlib
count    200000.000000
mean        907.207110
std         996.029036
min           2.000000
25%         374.000000
50%         676.000000
75%        1131.000000
max       57921.000000
Name: text_len, dtype: float64

每个句子平均由907个字符构成,最短的句子长度为2,最长的句子长度为57921,所以说,给定的文本/句子比较长。

可视化,将句子长度绘制了直方图:

import matplotlib.pyplot as plt
_ = plt.hist(train_df['text_len'], bins=200)
plt.xlabel('Text char count')
plt.title("Histogram of char count")

直方图,大部分句子的长度都几种在2000以内:


类别分布

接着,对数据集的类别进行分布统计,具体统计每类新闻的样本个数。

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

从统计结果可以看出,赛题的数据集类别分布存在较为不均匀的情况。在训练集中科技类新闻最多,其次是股票类新闻,最少的新闻是星座新闻。


字符分布统计

接下来,统计每个字符出现的次数,首先可以将训练集中所有的句子进行拼接进而划分为字符,并统计每个字符的个数。

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)

从统计结果中可以看出,在训练集中总共包括 2405 2405 2405 个字,其中编号 3750 3750 3750 的字出现的次数最多,编号 5034 5034 5034 的字出现的次数最少。

这里还可以根据字在每个句子的出现情况,反推出标点符号。

下面代码统计了不同字符在句子中出现的次数,其中字符 3750 3750 3750,字符 900 900 900 和字符 648 648 648 在 20 w 20w 20w 新闻的覆盖率接近 99 99 99%,很有可能是标点符号。

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])

运行值:

('3750', 99)
('900', 99)
('648', 96)

数据分析的结论

通过上述分析我们可以得出以下结论:

  • 每条新闻包含的字符个数平均为 1000 1000 1000 个,还有一些新闻字符较长;
  • 新闻类别分布不均匀,科技类新闻样本量接近 4 w 4w 4w,星座类新闻样本量不到 1 k 1k 1k;
  • 总共包括 3000 3000 3000 个字符;

通过数据分析,我们还可以得出以下结论:

  • 每个新闻平均字符个数较多,可能需要截断;
  • 由于类别不均衡,会严重影响模型的精度。

NLP以赛代练 Task 2:数据读取与分析相关推荐

  1. NLP以赛代练 Task 1:赛题理解

    NLP以赛代练 Task 1 题目 题目求解的是什么 已知什么 要满足哪些条件 解题思路 T F − I D F TF-IDF TF−IDF + 余弦相似度来进行分类 题目 比赛网址:https:// ...

  2. Task02——零基础入门NLP - 新闻文本分类之数据读取与分析

    本期目标 学习使用Pandas读取赛题数据 分析赛题数据的分布规律 数据读取 import pandas as pd train_df=pd.read_csv('./train_set.csv/tra ...

  3. 实战:战狼2票房数据分析——(3)数据读取及分析

    前言 前面我们已经成功的把数据从网站上抓取下来并存入了csv文件当中,那么本章就演练将数据从csv中读取出来,并作相应的分析 数据读取 可以使用pandas的函数read_csv来读取数据,默认情况下 ...

  4. SICK LMS 111激光雷达数据读取与分析

    SICK LMS111激光雷达的使用https://blog.csdn.net/weixin_34146805/article/details/86126953https://blog.csdn.ne ...

  5. 电影数据读取、分析与展示(Python+Scrapy)

    目 录 摘 要 I Abstract II 第1章 绪论 1 1.1 选题背景及意义 1 1.2 国内外研究现状 1 1.2.1 爬虫技术概述 1 1.2.2 爬虫设计者面临的问题与反爬虫技术现状 3 ...

  6. NLP以赛代练 Task5:基于深度学习的文本分类 2

    基于深度学习的文本分类 2 学习目标 文本表示方法 Part3 词向量 1. Skip-grams原理和网络结构 2. Skip-grams训练 2.1 Word pairs and "ph ...

  7. python pdf解析毕业论文_电影数据读取、分析与展示毕业论文+任务书+Python项目源码...

    摘  要 Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python的Ma ...

  8. Matlab使用键值数据读取和分析 MAT 文件

    为 MAT 文件中的键值对数据创建数据存储,该文件是mapreduce. 然后,该示例展示了如何读取数据存储中的所有数据并对其进行排序.此示例假定 MAT 文件中的数据适合内存. mapredout. ...

  9. TensorFlow——二进制数据读取

    一.CIFAR10二进制数据集介绍 https://www.cs.toronto.edu/~kriz/cifar.html 二进制版本数据文件 二进制版本包含文件data_batch_1.bin,da ...

最新文章

  1. 创建mysql数据库,在新数据库中创建表,再尝试删除表
  2. 《Spark大数据分析:核心概念、技术及实践》一3.6 惰性操作
  3. 动态数组 allocator
  4. 芯片里的CPU、GPU、NPU是什么,它们是如何工作的
  5. 【自定义控件】自定义属性
  6. Windows 文件含义大全
  7. 上位机获取单片机发来的数据并进行检验
  8. Window 平台下添加 tree 命令
  9. win10访问不了win7文件服务器,win10和win7共享文件教程 win10和win7共享文件无法访问...
  10. leetcode 咒语和药水的成功对数
  11. php遇到Allowed memory size of 134217728 bytes exhausted错误解决方法
  12. python 步数_用python如何修改微信和支付宝每天走路的步数
  13. 微信小程序云开发使用mysql数据库
  14. WPF textbox禁用输入法
  15. 【常用数据结构——并查集(又在乱牵线了)】
  16. SpringMVC创建Maven工程
  17. 《Android Studio开发实战 从零基础到App上线》第一版的资源下载和内容勘误
  18. r语言中popsd和sd的区别_R语言中回归和分类模型选择的性能指标
  19. 打包代码时候,ts打包错误
  20. C语言用字符串sex储存,《C语言》上机实验题及参考答案2

热门文章

  1. python+java+nodejs+vue的校友会社交系统
  2. 青岛,一座来了就想“哈”啤酒的城市
  3. 怎么把旧iphone上的交通银行卡转移到新iphone
  4. 家纺大数据理性应用与品牌情怀
  5. 计算机显卡可分为哪几类,小白入门必看:笔记本电脑分为哪几类?
  6. redis 集群模式原理
  7. python 遍历列表提取下标和值
  8. presto hive like用法总结,使用| 和 or like多个怎么写
  9. 2023年全国职业院校技能大赛-应用软件系统开发赛项(高职组)赛题第9套
  10. or导致索引失效的解决方法_索引失效原因总结