# 数据探索:目的是为了让自己对数据的内容、含义、分布理解的更加清楚
import pandas as pd
from config import Config
from collections import Counter
import matplotlib.pyplot as plt
"""
如果不能画图,报错:module 'backend_interagg' has no attribute 'FigureCanvas'. Did you mean: 'FigureCanvasAgg'?
则添加如下2行代码。
"""
import matplotlib
matplotlib.use('TkAgg')
# 1- 获得配置信息
config = Config()
datapath = config.train_datapath
# datapath = config.test_datapath
if __name__ == '__main__':
# 2- 读取文件内容
"""
参数解释:
sep:字段值之间的分隔符
names:自定义字段名称。如果原始文件中也有字段名称,会用names覆盖掉文件中的
"""
df = pd.read_csv(datapath, sep="\t",encoding="UTF-8", names=["text","label"])
# df:DataFrame对象,pandas(DataFrame,Series)
# DataFrame:二维数据,有行有列
# Series:一维数据,只有行/列
print(df.head())
# 3- 统计目标值的分布情况
# 3.1- 统计每种目标值的样本条数
label_counts = Counter(df["label"])
print('label_counts-->', label_counts)
# 3.2- 统计每种目标值的样本条数占比
total_count = df["label"].size # 总样本条数
for label,cnt in label_counts.items():
rate = cnt*100/total_count
print(f"目标值={label},条数:{cnt},占比:{rate}%")
# 4- 句子长度分布
# 4.1- 统计每条句子的长度
df["length"] = df["text"].str.len()
print(df.head())
# 4.2- 最长、最短、均值、中位数等的统计
print("句子最大长度:",df["length"].max())
print("句子最短长度:",df["length"].min())
print("句子均值长度:",df["length"].mean())
print("句子中位数长度:",df["length"].median())
# 4.3- 绘制直方图
#
df["length"].hist()
plt.show()