Task2 数据读取与数据分析

Task1 赛前准备

  1. Datawhale零基础入门NLP赛事 - Task1 赛题理解

  1. 使用天池实验室进行比赛的数据分析

进入天池实验室,,用上图官方给出的挂载数据虽然提示添加成功但没有找到储存在哪,故下载到本地之后再次上传存储到data(失败了),从左侧第四个图标直接下载,直接用Pandas完成数据读取的操作。

Task2 数据读取与数据分析

Datawhale零基础入门NLP赛事 - Task2 数据读取与数据分析

一. 数据读取

import pandas as pd
train_df = pd.read_csv("data/train_set.csv",sep='\t', nrows=100)

sep:每列的分割字符

nrows:表示读取的行数,这里表示先读取100行,正式训练时去掉即可

二. 数据分析

  1. 句子长度分析

#自动加载numpy和matplotlib库
%pylab inline

#获取每行句子的长度定义为新的一列'text_len'。每行句子的字符用空格分隔开,直接统计单词的个数来得到句子长度
train_df['text_len'] = train_df['text'].apply(lambda x: len(x.split(' ')))
print(train_df['text_len'].describe())

apply(func,*args,**kwargs):对'text'这一列的每行文本进行括号内的函数处理,最后将所有结果组合成一个Series数据结构

lambda:匿名函数,对dataframe的一列进行特别操作

train_df['text']:根据列名text,并以Series(行索引+数值)的形式返回列。

describe():对于一维数组,会返回一系列参数,count,mean,std,min,25%,50%,75%,max。

#将句子长度绘制了直方图
_ = plt.hist(train_df['text_len'], bins=200)
plt.xlabel('Text char count')
plt.title("Histogram of char count")

plt.hist():将一个大区间划分为等间隔的小区间,并统计每个区间上样本出现的频数之和。bins指定区间长度

  1. 新闻类别分布

train_df['label'].value_counts().plot(kind='bar')
plt.title('News class count')
plt.xlabel("category")

.value_counts():返回一个Series数组,显示原数组中每类值出现的次数,bar表示柱状图

  1. 字符分布统计

统计每个字符出现的次数

#Counter可以支持方便、快速的计数,将元素数量统计,然后计数并返回一个字典,键为元素,值为元素个数
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])

sorted():降序(reverse = True),key=lambda x: x[i]:key自定义规则排序,按照x[i]进行排序;

word_count.items():返回字典键值对的元祖集合;

Counter可以支持方便、快速的计数,将元素数量统计,然后计数并返回一个字典,键为元素,值为元素个数。

统计了不同字符在句子中出现的次数

from collections import Counter
#以空格为分隔提取每个单词后存取set去重再转为list操作,得到去重后的​​text_unique​​​列。
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])

Q1:

import re
all_lines=' '.join(list(train_df['text']))
lines_count = len(re.split('[3750 900 648]',all_lines))
print(lines_count/train_df.shape[0])
print(lines_count)

re.split(pattern, string[, maxsplit=0, flags=0])

pattern:匹配的字符串

string:需要切分的字符串

maxsplit:分隔次数,默认为0(即不限次数)

flags:标志位,用于控制正则表达式的匹配方式,比如:是否区分大小写


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值