python学习笔记(2020.09.29--pandas)

这篇笔记介绍了在处理数据时使用pandas的经验,包括如何创建测试集和训练集。作者首先阐述了学习pandas的背景,即处理样本不均衡的数据集。接着详细说明了如何打开CSV文件,查看数据行数,筛选并保存数据作为测试集。在制作训练集的过程中,提到了当前采用的简单采样方法,并计划后续研究更高级的采样策略,如SMOTE算法。最后,讨论了DataFrame的融合操作,比较了`pd.merge()`和`pd.concat()`的区别。
摘要由CSDN通过智能技术生成

最近在处理数据的时候了解了一个超好用的工具集pandas,这篇笔记是对在pandas中用到的内容进行记录,防止遗忘。

1.学习背景

已有的分类数据集存在样本不均衡的情况,对数据集进行处理。

2.做测试集

  1. 打开.csv文件
filename_list = pd.read_csv('path', header=None)[0]

注:这里的路径要写到要打开的文件名。

  1. 看该文件中数据的行数
print(len(filename_list))
  1. 提取数据做成DataFrame形式,为后续筛选做准备
labels = []
for i in tqdm(filename_list):
    t = re.findall(r"\d+\.?\d*", i)
    labels.append(t)

temp = np.array(labels)
df = pd.DataFrame(temp, columns=["A", "B", "C", "D"])
  1. 筛选符合条件的数据
df_sub1 = filename_list[df['A'] == '1']
  1. 将符合条件的数据写入文件
# 1. 创建文件对象
f = open('test.csv', 'w', encoding='utf-8', newline='')
# 2. 基于文件对象构建 csv写入对象
csv_writer = csv.writer(f)
# 4. 写入csv文件内容
for j in df_sub1.values:
    csv_writer.writerow([j])
# 5. 关闭文件
f.close()

3.做训练集

注:
1. 这1步用的方法比较笨,没有找到两个.csv文件相减的方法,后面如果有时间需要做一做。(这里是逐渐挑选判断+两个DataFrame融合的方法)
2. 采样目前用的是随机抽取,简单粗暴的让每个类别基础数据相等的方法。后面有时间可以学习下SMOTE算法(在数据没有这么多的情况下,增加数量少的那一种样本)+基于DataFrame数据集分割的欠采样(用不同的数据训练多次,最终取参数的平均值)。

  1. 采样
pdtys2 = pdty2.sample(n=40000)
  1. 融合(合并)
df_subtest = pd.merge(df_sub5, df_sub10, how="outer")
train1 = pd.concat([df_sub1,df_sub2,df_sub3, ], axis=0)

注:1.pd.merge()2.pd.concat()对象数量和结果有区别,建议两个进行融合选择merge。

**本文摘取部分代码做笔记

感觉脑袋用久了也会热 #_#

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值